kindle manager

This commit is contained in:
gavin
2020-06-05 12:36:28 +08:00
parent fa4c908f58
commit d62b909849
11 changed files with 443 additions and 136 deletions

BIN
.DS_Store vendored

Binary file not shown.

2
cui
View File

@@ -1,2 +1,2 @@
pyuic mainwindow.ui -o mainwindow.py pyuic mainwindow.ui -o mainwindow.py
pyside2-rcc kman.qrc -o kmanrc.py pyside2-rcc -binary kman.qrc -o kman.rcc

BIN
icons/book.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

BIN
icons/booksicon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

@@ -6,86 +6,92 @@
from PySide2 import QtCore from PySide2 import QtCore
qt_resource_data = b"\ qt_resource_data = b"\
\x00\x00\x04\xd5\ \x00\x00\x05:\
\x00\ \x00\
\x00\x1a{x\x9c\xb5X\xdf\x93\x9b6\x10~\xbf\xbfB\ \x00\x1bkx\x9c\xb5Y\xbd\x8e\xdc6\x10\xee\xef)\x88\
\xe3\xf7\x1a\xfb\xe6Zw22\x99^'mf\x9a\x9b\ \xed\xb3\xda=\x5cr\x81\xa1\x93\x91\x0b\x9c\x18\x88\x0f\xb0\
\xb9\xcc\xb9\xc9cG\x06\xd9\xa8\x07\x88\x08\x11\xdb\xf9\xeb\ q\x1b\xbb\x0c\xb8\x12w\xc5\x9c$\xca\x14\xe5\xdbue\
\xb3H\x02$\xc0\xd89]\xde\xd8\x1f|Z}\xda]\ \x17\x0e\x10 A\x5c\xa4t\x95\x22U\xe0\xa4H\xe3\x22\
-\xe0\xb7\xc7,E_\xa9(\x19\xcf\xd7\xb3\xe5|1\ O\x13\x9f\xed\xc7\xc8\x88\xa4$\xeaw\xd7\xe1]\xa7\xf9\
C4\x8fx\xcc\xf2\xfdz\xf6\xef\xe6\xaf_~\x9f\xbd\ \xd1\xc7\xe1\xc7\x99\xe1h\xd7\xbd\xbd\x89#\xf4\x84\xf0\x8c\
\x0dop\xc5:\xa7;p\x0ao\x10\x8eRR\x96\xe1\ \xb2\xe4d2\x9f\xce&\x88$>\x0bh\xb2>\x99|\
\x03a\xf9g\x96\xc7\xfc\x80\x03\xad\x01\xd3\x81\xc5{*\ \xbb\xf8\xea\x93\xcf'\xb7\xbd\x037\xa7\xb5\xd3\x118y\
\x91\x92\xd7\xb3\x8f\x9d\xcf\x0c\xe5$\xa3\xeb\x99\xa5\x01\x7f\ \x07\xc8\xf5#\x9ce\xde\x19\xa6\xc9#\x9a\x04\xec\xd2u\
\x84\x0b\xc1\x0b*\xe4\xc9\x98\xf7\x94gT\x8a\x932\x22\ \x94\x06L\x974X\x13\x81\xa4|2yP\xfbLP\
,h$\xd5\x13\xc2\xc7p\x81\x83\xa3\x11N\xb5p2\ \x82cr214\xe0\x8f\xdc\x94\xb3\x94p\xb1\xd5\xe6\
\x02\xac)\x93p\xb5\xba\xc3\x81~\xd4\xea\x84\xb2}\x22\ 5a1\x11|+\x8d\xc8\xe5\xc4\x17\xf2\x09\xb9\x1bo\
\xc3\xbb%\xb8\x9ag\x85\x194\xa08h\x16\x1f\x8b\xe4\ \xe6:\x1b-l\x0ba\xab\x05XS\x84\xde\xf1\xf1\x91\
\xa0\x82\xdc0\x99R\x13L)\x05\x90\x13\xfe\x03\x86\x94\ \xeb\xa8G\xa5\x0e\x09]\x87\xc2;\x9a\x83\xab~\x96\x98\
\xa2\x07\x92\x93=\xcdh.q`,C\xcc\x1e\x1d\x9f\ N\x09\xea:\xe5\xe2}\x91\x5c\xca \x17TDD\x07\
\x95\xd8P\x11\xc1\xbb\x82\xa4\xda\xc7\xac\x91\x92\x13\xaf\xba\ \x93\x09\x0e\xe4x\xdf\x80!\x22\xe8\x0c'xMb\x92\
\x17\xfe\x16,\xfe\xa0T\xcdK\xfbNc\xf6\xc9$\xcd\ \x08\xd7\xd1\x96.f\x8b\x8eGR,\xa9\xf0\xe1]\x8e\
\x90\xe0\x87\xf5\x0c\x8e0\xe2i\x95\xe5\xf5\xa3\xb6\x0e\x10\ #\xe5\xa3\xd7\x88\xf0\x96\xe5\xf5\x0b_s\x1a\xdc\x93\xaa\
\xdf\xdf\xf3\xa3\x8b\x98p\xc1\xbe\xf1\x5c\x92\xd4\xc15\xc8\ \xf2\xa5u\xad\xd1\xfb\xa4\x82\xc4\x88\xb3\xcb\x93\x09\x1c\xa1\
\x8d0\xd8\xcb\x07\xb2\xa5i\x83QR\x22\xa2D\xab\xda\ \xcf\xa2<N\x8aGe\xed \xde=e\x9b&b\xc8\
7\x06\x94Jz\x94\x96\xb9e\xf4I\xbdm\xd3h\xec\ 8}\xca\x12\x81\xa3\x06\xaeF.\x85\xce^\xee\xe1%\
\x0e\x99F\xa5\xc3hc\x0c\xec /D\xccr\xfa.\ \x89J\x8c\x8c`\xee\x87JU\xbd\xd1\xa1T\x90\x8d0\
f\xb2\x17t\xa3\x0d^\x82\xf9'\xcf\xb6\x1c(u1\ \xcc\x15\xa3\xe7\xf2m\x93Fmo\x90\xa9U*\x8c*\
[\xed\x8b07\x9c\xa7\xf7\x95\x94<wQ-\xfd\x8f\ F\xc7\x0crG\xc44!w\x02*ZA\x97\xda\xe1\
s<\x9f\xcf\xaf\x22x\x00\xc8\x22g=\x88\x1d\x14e\ \xb8\xd3\x08\xfb$dQ@\xf8b`\x0bW\xbf\xfc\xf9\
w\x02J\x97s\x91\x91\x94\xefv\xa1\xb2\x06:\xe0\xf9\ \xee\xa7\x1f\xdf\xbe\xf9\xfd\xea\xe5\xcf\xff>{\xfe\xf6\x9f\
\xff\x05\xdd\xe3`\xd28@\xfb\xd1C\xc7\x81\xcepS\ W\x1f\x9e\xbd\x80\x87\xab\x1f^\x5c\xbd~\xf3\xee\xe5\xab\
\x0d\x96\xc9\xaa\x8c\xe5Xe\xf4h\x7f*R&%\x15\ \xf7\x7f\xff\xf6\xfe\x8f_?\xbc\xfe\xeb\xc6\xb7\xf9%\x8b\
-\xe9F\xfe\xef\xb6\xab\x88\x1e7P9P\xc3D2\ \x97\x0cN\xb9\xb9\xcdJ;\xbcM?\xe7\x1cRr`\
\x9b\x22L\xf3*\x0b?\xca7o\xde\xb7\x95\x85\x03\xa5\ \x8b\xce\x8d\x05\xbc`,:\xcd\x85`I3dC\xff\
\xbc9\xb7\xc5A\x0a\x08J?1\xdavM\xd9\xc8\xdd\ \xf195\x9dN\xf7b\xba\x03H\xfd\xc6z\x10;(\
*\xbdPJ\xf6\x8d>\xf2\x94E';9jm\xa1\ \xb2zgR\x970\x1e\xe3\x88\xadV\x9e\xb4:*\xe0\
\xb4(\xa9\x9f\xe5\xa9\x00\xdfGAwT\x08\x1a\xcf\xd0\ \xe9\xf7)Y\xbb\xce\xa8\xb1\x83\xf6\xb1d\xba\x8e\xaah\
\xd7N\xfb\xeeX\x90\xbcn\xff\xceiCw\x80\xac\xa1\ ]\xfd\x86\xc9\xe8\x04\xf3\xbeN\xd0\xa2\xfd<\x8d\xa8\x10\
2J\xea\x96kI\x96O}At>\x96d\x1dj\ \x84W\xa4k\xf9\xbb\xc3\xba\x03\xb4\xb8\x81N\x01\x09\x82\
\x17\x89u\xac\xc3\x93\xee\xed*#G\x96U\xd9\x13\xbc\ \x055)rI\x92\xc7\xde\x03q\xeb\xd6\xdd\xaa\x93\xb8\
\xdc\xdf\x96\x1d\x80n\xfbw\x8b\x85s\x03\x98\x0d\xe8\xd6\ \x8eT\x1e\x0cm\xb1\x93\x02\x9c\x90\x87\x94T\xb7\x84(\
\xbf\xfcm\xb5Z\xdd.\x7fu\xee\x02+\xb6\x89\xa8\x06\ \xe5z\x95V(\x19}J\xee\xb3\x88\xfa[39\x0a\
\xe9we\xe2\x9c?\xac\xd1\xbc\xb1\x12\xe7\x13\xf8\xb2\xa8\ m*\xb5(,\x9e\xc56\x05\xdf\xfb\x9c\xac\x08\xe4v\
\x9f6\xa3\x84\xf5\x13\x87lS7sZ\xc5\xf9\x12\x1f\ 0AOj\xed\x9dM\x8a\x93\xe2\xbak\x9c6tC\
\xcd\x9ds\xc9\xf3\xa0\x8f\xe4r\xea\x5c\x95;\xd7$\xcf\ \xc8\x1a\x22\xfc\xb0\xb8b\x0c\xc9\xf0).\xc4\xda\xc7\x90\
x\xf6\x5c\xd3(\x86\xf4@w\xb4\xaf\x00\xd9\xc8?\x91\ \x8cC\xad#1\x8e\xb5{\xd2\xad]\xc5xC\xe3<\
\x9c\xae\xda\xbc\xc8Y\xfa\x92seq\x0d\xaa\xab)\xaf\ >\x87\x97\xdb\xdb2\x03P\xd7\xdc\xd1l\xd6\xb8\xf1\xf4\
\xae\x82\xfa5\xd6\xcdZ\x8b\xc5\xb0\xbe\xfa\x05v]\x87\ \x06\xd4U7\xff\xec\xf8\xf8\xf8p\xfei\xe3\xee3b\
wdW\xb4z\xbc\xdd\xfcm\xa7A\x89B\xb1U\xe5\ \x1b\x89\xaa\x93~{&\xce\xf0a\xf5\xe6\x8d\x918\x0f\
=\xe9jT)\xb6\xa0\x08\xc6\xfc\x1f\xa0\xee,\xef\xcc\ \xc1\x97\xfa\xed\xb4\xe9%\xac\x9d8x\x1953\xa7R\
\x88z\xcd\xc9\x91\xd5\x9eY\xdd\xa1\xd5\x9dZ\xcf\x8d\xad\ \x0c\x97xo\xee\x0c%\xcf\x99:\x92\xdd\xa9\xb3W\xee\
-\x97\xb7\xb7.\x95\xdd\xdc\xda\x1f2'\xf6\xadF\x86\ \xec\x93<\xfd\xd9\xb3O\xa3\xe8\xd2\x03\xdd\xd1\xbc\xf2D\
n\x1f\xd2\x88\xa3\xfb\x18\x0c\xbc\xed\xec`^s\xe6\x87\ )\xdf 9u\xb5Y\x913\xb7%g\xcf\xe2\xeaT\
\xde!b\x22\xc1\xb6\xad$u\x97\xfaCP\xd2\xa0\xa9\ WY^u\x05\xb5k\xac\x9e-g\xb3n}\xb5\x0b\
^\xb6\xe1\xc5\xa63Y\x0d\x0e\x07-\xc4$\xe2=\xbc\ l\xbf\x0e\xdf\x90\x9b\xa2\xd1\xe3\xcd\xe6o:uJ\x14\
\xf6\xdc@nA\x17\xeeHZR\x1c\xa8\xe7q\xa48\ \x8a-\xcfNq]\xa3R\xb1\x04\x85\xd3\xe7\x7f\x06u\
&Q\xddl\x0d\x92\x16XVp!\x9f\xd54o\x06\ gx\xc7ZTk\x8e\x8e\xe8\xe6\x8c\xde\x1c\xd2\x9bS\
\xb5I\xcf\x94CG>\xe7X\xd2\x82\x08\x22\xb9\x98F\ \xfa\xd0\x98^qyx\xd8\xa4\xb2\x9e\xd3\xdbC\xf5\xc8\
:p\x11\x97\xd3.uf\xb2\x12\xda\xbf\xe7R0W\ \xbe\xe5\xc8P\xefCh\xb1w\x1f\x9d\x01\xbf\x9a\x1d\xf4\
\xed\xd8\xde\x13$\x81\xd4.\xe03g\xda\x8bl\xeb\xcf\ k\x8d\xf9\xa1u\x88.\x16`[\xe6\x824\x97\xfa\x82\
\x06\xbf\x95viU&\xa6\x18\xed\x84\xbep\x1c\xa3\x99\ \x13\x5c\xa2\xc9^\xb6`\xe9\xa26\x19\x0d\xceu*\x88\
l\x8d\xac\xbdiu0\xa8B\xc6\xe7b^\xe4#c\ Q\xc4Sx\xed\xa2\x84\x5c\x82\xce[\xe1(#\xae#\
\xaae\xb2A\xfa\x89\x7f~\xfen\xca\xc7\x8aw\xb2\x84\ \x9f\xfb\x91\x82\x00\xfbE\xb3\xd5HJ\xa0q\xca\xb8\xb8\
\xfaH\x90\xcf\x1bV\x8c\x82A\x81\xb3\xa2\x00\x19\xed\x18\ \x90_/*\x0b\xc6=#\x06\x1dy\xc81#)\xe6\
|\x8b\xee\x04\xcf\x90Z\xc05L,\x07E\xa2\xc8\x9c\ X0>\x8et\xc9x\x90\x8d\xbb\x14\x99I3h\xff\
&\xd9T\xc7k\xb0|\x9e\xe4\xd7\xe3X\x87\xfb3I\ \x96K\xc1\x5c\xb5\xa2kK\x90\x10R;\x85\xcf\xbaq\
\xbe\xb8\xc2%^MY\xfa2\xaaa\xc69\xb5m~\ /\xbc,>\x93\xecVZEy\x16\xeab4\x13z\
\xacj$\x7f>5N%\xd4\xc4\xebA\x9en\x12\xbe\ \xc7q\xf4f\xb21\xb2\xb6\xa6\xd5\xce\xa0\x0a\x19\x9f\xf0\
\xdc\xc1<&h\x99\x8c\x93\xe7\x18\xfd\xd83P\xfe\xf4\ i\x9a\xf4\x8c\xa9\x86\xc9\x04i'\xfe\xf0\xfc]\x96\x8f\
\x19 d\xd2\xb2\xce\xc6\xe0K\xc5\xa2\xe7V\xf3*\xa9\ \x11\xefh\x09\xb5\x91 \x9f\x174\xed\x05\x83\x02\xa7i\
\xa9/'_v\xe1\x1a~.\xc7\xb9\xb5L~\xcc\xaa\ \x0a2ZQ\xf8\xf6^q\x16#\xb9@\xd30\xb2\x1c\
H\xfdy\xbd\x04s\x89\xb0\xee\xaa\xf6%\xadE:\xc3\ \x14\x89$s\x9cd]\x1d\xd7\xc1\xf20\xc9\xd7\xc7\xb1\
\x5c\xdf\xeeG_\x8b\xe6Oa\x17\x18\x82\xb9\xac\xfe\x04\ \x0a\xf7&I\xde\xb9\xc2.^uY\xda2\xaa`\xfa\
D\x09\xd9n\x99\xf4\xa0\xb5\x1d:|Y\xad\x81\xc6\xf9\ 95mv\xac*${>\x15N\xce\xe5\xc4kA\
\xec,~L6\xa1\xbeF\x8d\xc7\xac\x1e\xf0\x91\xe4(\ \x9ej\x12\xb6\xdc\xc1<\xc6I\x16\xf6\x93\xd70\xda\xb1\
\x83o\xca\xcb\xc0\x97h\xd4S\x99/\x87_*Z\xd6\ \xa7\xa1\xec\xe9\xd3@H\xa7e\x91\x8d\xce\xe3\x9c\xfa\x17\
h\xe3<\xbaV?.U\xbc\xfeD\x82K\x8e\x14\x16\ \x95\xe6ZRS]N\xb6\xec\xc25|\x91\xf5sk\
\x8a\x19\xc4:u}],p\xf5\xa7\xd2\x9b\xc3Gv\ \x98\xec\x98\x95\x91\xda\xf3\xba\x0bf\x17a\xf5UmK\
$1=\x8eS\xe8\x18=\xebz\xf8\x1f\xfdeE\xad\ Z\x854\xc0\x5c\xdbnG_\x85fOa\x1d\x18\x82\
pP\xce\xe5\x95\xf9gM\xec\xf0\xf9[\xf2JD\xb4\ \xb9\xac\xf8\x04D!^.\xa9\xb0\xa0\xb5\x1a:lY\
\xacgy\x0c\xfb\xc9\xa9\xe6\x12d\x1cT,\xbc\xf9\x0e\ -\x80\xfa\xf9\xac-vL\x96\xa1^G\x8d\x07\xb4\x18\
\xb1\xe8et\ \xf0\x91`(\x86o\xca\xdd\xc0\xbbhTS\x99-\x87\
\x8fs\x92\x15h\xfd<6\xadv\x5c\xcax\xed\x89\x04\
\x97\x04I,\x14P\x88u\xec\xfa\xdaY\xe0\xf2\x97J\
k\x0e\xef\xd3\x0d\x0e\xc8\xa6\x9f\xc2\x86\xd1\xb2\xae\xbb\xff\
\x1b\xfc\xbf\xa2\x968(ab\xcf\xfc3&v\xf8\xfc\
\xcdX\xce}\x92\x15\xb3\xbc\x0b\xfbI\x88\xe2\x12d\xd7\
\xc9\xa9w\xf0\x1f+\x9c\xbaL\
\x00\x00\x1cx\ \x00\x00\x1cx\
\x89\ \x89\
PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
@@ -45618,84 +45624,84 @@ qt_resource_struct = b"\
\x00\x00\x00\x00\x00\x02\x00\x00\x00'\x00\x00\x00\x03\ \x00\x00\x00\x00\x00\x02\x00\x00\x00'\x00\x00\x00\x03\
\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x10\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\ \x00\x00\x00\x10\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\
\x00\x00\x01r|\xf92\x84\ \x00\x00\x01r\x82%;p\
\x00\x00\x02\xaa\x00\x00\x00\x00\x00\x01\x00\x08\x03\xab\ \x00\x00\x02\xaa\x00\x00\x00\x00\x00\x01\x00\x08\x04\x10\
\x00\x00\x01ro \xc0+\ \x00\x00\x01ro \xc0+\
\x00\x00\x00\x8e\x00\x00\x00\x00\x00\x01\x00\x01l\xa1\ \x00\x00\x00\x8e\x00\x00\x00\x00\x00\x01\x00\x01m\x06\
\x00\x00\x01rybF\xf5\ \x00\x00\x01rybF\xf5\
\x00\x00\x03\x5c\x00\x00\x00\x00\x00\x01\x00\x09\xab\xc0\ \x00\x00\x03\x5c\x00\x00\x00\x00\x00\x01\x00\x09\xac%\
\x00\x00\x01ro-O\xd6\ \x00\x00\x01ro-O\xd6\
\x00\x00\x00R\x00\x00\x00\x00\x00\x01\x00\x00!U\ \x00\x00\x00R\x00\x00\x00\x00\x00\x01\x00\x00!\xba\
\x00\x00\x01ryefk\ \x00\x00\x01ryefk\
\x00\x00\x02d\x00\x00\x00\x00\x00\x01\x00\x07\x05\x06\ \x00\x00\x02d\x00\x00\x00\x00\x00\x01\x00\x07\x05k\
\x00\x00\x01ro!\xbci\ \x00\x00\x01ro!\xbci\
\x00\x00\x03\x92\x00\x00\x00\x00\x00\x01\x00\x09\xe1P\ \x00\x00\x03\x92\x00\x00\x00\x00\x00\x01\x00\x09\xe1\xb5\
\x00\x00\x01ro \x94\xf5\ \x00\x00\x01ro \x94\xf5\
\x00\x00\x01\x08\x00\x00\x00\x00\x00\x01\x00\x03(\xe6\ \x00\x00\x01\x08\x00\x00\x00\x00\x00\x01\x00\x03)K\
\x00\x00\x01rn\x81\xa0K\ \x00\x00\x01rn\x81\xa0K\
\x00\x00\x00\xf0\x00\x00\x00\x00\x00\x01\x00\x02\xbe\xb5\ \x00\x00\x00\xf0\x00\x00\x00\x00\x00\x01\x00\x02\xbf\x1a\
\x00\x00\x01rn\x7f\x9a\xa2\ \x00\x00\x01rn\x7f\x9a\xa2\
\x00\x00\x01\xfe\x00\x00\x00\x00\x00\x01\x00\x05\xfam\ \x00\x00\x01\xfe\x00\x00\x00\x00\x00\x01\x00\x05\xfa\xd2\
\x00\x00\x01rx\xd0\xef\xa4\ \x00\x00\x01rx\xd0\xef\xa4\
\x00\x00\x01R\x00\x00\x00\x00\x00\x01\x00\x03\xe4\x93\ \x00\x00\x01R\x00\x00\x00\x00\x00\x01\x00\x03\xe4\xf8\
\x00\x00\x01ro&U\x86\ \x00\x00\x01ro&U\x86\
\x00\x00\x02\xc0\x00\x00\x00\x00\x00\x01\x00\x08s\xa8\ \x00\x00\x02\xc0\x00\x00\x00\x00\x00\x01\x00\x08t\x0d\
\x00\x00\x01ro'\x5c\xdd\ \x00\x00\x01ro'\x5c\xdd\
\x00\x00\x03\xe0\x00\x00\x00\x00\x00\x01\x00\x0a\xdbQ\ \x00\x00\x03\xe0\x00\x00\x00\x00\x00\x01\x00\x0a\xdb\xb6\
\x00\x00\x01rxL\xc3L\ \x00\x00\x01rxL\xc3L\
\x00\x00\x01\xd0\x00\x00\x00\x00\x00\x01\x00\x05G\xb3\ \x00\x00\x01\xd0\x00\x00\x00\x00\x00\x01\x00\x05H\x18\
\x00\x00\x01rn\x80a\x98\ \x00\x00\x01rn\x80a\x98\
\x00\x00\x02\x82\x00\x00\x00\x00\x00\x01\x00\x07\x1c\xd3\ \x00\x00\x02\x82\x00\x00\x00\x00\x00\x01\x00\x07\x1d8\
\x00\x00\x01ro!\x10\x8b\ \x00\x00\x01ro!\x10\x8b\
\x00\x00\x00z\x00\x00\x00\x00\x00\x01\x00\x01 z\ \x00\x00\x00z\x00\x00\x00\x00\x00\x01\x00\x01 \xdf\
\x00\x00\x01ro6\xcc\x14\ \x00\x00\x01ro6\xcc\x14\
\x00\x00\x02\x94\x00\x00\x00\x00\x00\x01\x00\x07\x8fb\ \x00\x00\x02\x94\x00\x00\x00\x00\x00\x01\x00\x07\x8f\xc7\
\x00\x00\x01ryf\xd9E\ \x00\x00\x01ryf\xd9E\
\x00\x00\x020\x00\x00\x00\x00\x00\x01\x00\x06Q\xe7\ \x00\x00\x020\x00\x00\x00\x00\x00\x01\x00\x06RL\
\x00\x00\x01rn\x83W\xb2\ \x00\x00\x01rn\x83W\xb2\
\x00\x00\x01\xa0\x00\x00\x00\x00\x00\x01\x00\x04\xaa\xac\ \x00\x00\x01\xa0\x00\x00\x00\x00\x00\x01\x00\x04\xab\x11\
\x00\x00\x01rn\x80\x8e_\ \x00\x00\x01rn\x80\x8e_\
\x00\x00\x018\x00\x00\x00\x00\x00\x01\x00\x03\xb0D\ \x00\x00\x018\x00\x00\x00\x00\x00\x01\x00\x03\xb0\xa9\
\x00\x00\x01ro'\xd9\xb1\ \x00\x00\x01ro'\xd9\xb1\
\x00\x00\x01\xe6\x00\x00\x00\x00\x00\x01\x00\x05\x95\xc1\ \x00\x00\x01\xe6\x00\x00\x00\x00\x00\x01\x00\x05\x96&\
\x00\x00\x01ro!\x80\x9f\ \x00\x00\x01ro!\x80\x9f\
\x00\x00\x03p\x00\x00\x00\x00\x00\x01\x00\x09\xc2\x9a\ \x00\x00\x03p\x00\x00\x00\x00\x00\x01\x00\x09\xc2\xff\
\x00\x00\x01ro*{\xa5\ \x00\x00\x01ro*{\xa5\
\x00\x00\x03\xc4\x00\x00\x00\x00\x00\x01\x00\x0a\xa2>\ \x00\x00\x03\xc4\x00\x00\x00\x00\x00\x01\x00\x0a\xa2\xa3\
\x00\x00\x01rxA\xa0\xe6\ \x00\x00\x01rxA\xa0\xe6\
\x00\x00\x02\x14\x00\x00\x00\x00\x00\x01\x00\x06.)\ \x00\x00\x02\x14\x00\x00\x00\x00\x00\x01\x00\x06.\x8e\
\x00\x00\x01ro'\xf7\xd9\ \x00\x00\x01ro'\xf7\xd9\
\x00\x00\x01\x80\x00\x00\x00\x00\x00\x01\x00\x04KX\ \x00\x00\x01\x80\x00\x00\x00\x00\x00\x01\x00\x04K\xbd\
\x00\x00\x01ro+U:\ \x00\x00\x01ro+U:\
\x00\x00\x000\x00\x00\x00\x00\x00\x01\x00\x00\x04\xd9\ \x00\x00\x000\x00\x00\x00\x00\x00\x01\x00\x00\x05>\
\x00\x00\x01ro\x22L\x9b\ \x00\x00\x01ro\x22L\x9b\
\x00\x00\x00\xba\x00\x00\x00\x00\x00\x01\x00\x02+w\ \x00\x00\x00\xba\x00\x00\x00\x00\x00\x01\x00\x02+\xdc\
\x00\x00\x01rn\x80\xbaA\ \x00\x00\x01rn\x80\xbaA\
\x00\x00\x00\xd4\x00\x00\x00\x00\x00\x01\x00\x02w%\ \x00\x00\x00\xd4\x00\x00\x00\x00\x00\x01\x00\x02w\x8a\
\x00\x00\x01ro\x14<\x9f\ \x00\x00\x01ro\x14<\x9f\
\x00\x00\x02\xdc\x00\x00\x00\x00\x00\x01\x00\x08\x94W\ \x00\x00\x02\xdc\x00\x00\x00\x00\x00\x01\x00\x08\x94\xbc\
\x00\x00\x01ro\x14\xa8\xb6\ \x00\x00\x01ro\x14\xa8\xb6\
\x00\x00\x00f\x00\x00\x00\x00\x00\x01\x00\x00\x9a\xa1\ \x00\x00\x00f\x00\x00\x00\x00\x00\x01\x00\x00\x9b\x06\
\x00\x00\x01ro\x1e\xc7F\ \x00\x00\x01ro\x1e\xc7F\
\x00\x00\x03,\x00\x00\x00\x00\x00\x01\x00\x09_\xb2\ \x00\x00\x03,\x00\x00\x00\x00\x00\x01\x00\x09`\x17\
\x00\x00\x01rxK\x8a\x1d\ \x00\x00\x01rxK\x8a\x1d\
\x00\x00\x01\xbc\x00\x00\x00\x00\x00\x01\x00\x04\xf5\xa2\ \x00\x00\x01\xbc\x00\x00\x00\x00\x00\x01\x00\x04\xf6\x07\
\x00\x00\x01ro!G\x15\ \x00\x00\x01ro!G\x15\
\x00\x00\x01 \x00\x00\x00\x00\x00\x01\x00\x03\x90'\ \x00\x00\x01 \x00\x00\x00\x00\x00\x01\x00\x03\x90\x8c\
\x00\x00\x01ro*\xb4%\ \x00\x00\x01ro*\xb4%\
\x00\x00\x02\xf6\x00\x00\x00\x00\x00\x01\x00\x08\x9d\xf1\ \x00\x00\x02\xf6\x00\x00\x00\x00\x00\x01\x00\x08\x9eV\
\x00\x00\x01ryaf\xee\ \x00\x00\x01ryaf\xee\
\x00\x00\x02J\x00\x00\x00\x00\x00\x01\x00\x06\x9f\xaf\ \x00\x00\x02J\x00\x00\x00\x00\x00\x01\x00\x06\xa0\x14\
\x00\x00\x01ryg+\xf0\ \x00\x00\x01ryg+\xf0\
\x00\x00\x03\xaa\x00\x00\x00\x00\x00\x01\x00\x0a?f\ \x00\x00\x03\xaa\x00\x00\x00\x00\x00\x01\x00\x0a?\xcb\
\x00\x00\x01rx\xcbU\xa4\ \x00\x00\x01rx\xcbU\xa4\
\x00\x00\x03H\x00\x00\x00\x00\x00\x01\x00\x09\x84/\ \x00\x00\x03H\x00\x00\x00\x00\x00\x01\x00\x09\x84\x94\
\x00\x00\x01rx\xcc\xdf'\ \x00\x00\x01rx\xcc\xdf'\
\x00\x00\x01h\x00\x00\x00\x00\x00\x01\x00\x04\x00\x84\ \x00\x00\x01h\x00\x00\x00\x00\x00\x01\x00\x04\x00\xe9\
\x00\x00\x01rn\x80\xf2c\ \x00\x00\x01rn\x80\xf2c\
\x00\x00\x03\x10\x00\x00\x00\x00\x00\x01\x00\x08\xf4`\ \x00\x00\x03\x10\x00\x00\x00\x00\x00\x01\x00\x08\xf4\xc5\
\x00\x00\x01ro!-\x86\ \x00\x00\x01ro!-\x86\
\x00\x00\x00\xa6\x00\x00\x00\x00\x00\x01\x00\x01\xbd\xc0\ \x00\x00\x00\xa6\x00\x00\x00\x00\x00\x01\x00\x01\xbe%\
\x00\x00\x01rn\x7f\xe8!\ \x00\x00\x01rn\x7f\xe8!\
" "

View File

@@ -2,6 +2,9 @@
import sys import sys
from PySide2.QtWidgets import QApplication from PySide2.QtWidgets import QApplication
from PySide2.QtWidgets import QMainWindow from PySide2.QtWidgets import QMainWindow
from PySide2.QtGui import QStandardItemModel
from PySide2.QtGui import QStandardItem
from mainwindow import Ui_MainWindow from mainwindow import Ui_MainWindow
from kman import * from kman import *
@@ -10,20 +13,22 @@ class kmanWindow(QMainWindow):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super(kmanWindow, self).__init__(*args, **kwargs) super(kmanWindow, self).__init__(*args, **kwargs)
""" """
def __init__(self, parent=None): def __init__(self, parent=None):
super(kmanWindow, self).__init__(parent) super(kmanWindow, self).__init__(parent)
self.stat_str = 'status information'
self.search_str = ''
# create ui and initial it # create ui and initial it
ui = Ui_MainWindow() ui = Ui_MainWindow()
ui.setupUi(self) ui.setupUi(self)
self.ui = ui self.ui = ui
books = import_clips() self.books = import_clips()
# connect action to slot functions # connect action/toolbutton to slot functions
ui.actionimportkindle.triggered.connect(lambda: self.importkindle(books)) ui.actionimportkindle.triggered.connect(lambda: self.import_kindle(self.books))
ui.actionimportlocal.triggered.connect(lambda: self.importlocal()) ui.actionimportlocal.triggered.connect(lambda: self.import_local())
ui.actionconfig.triggered.connect(lambda: self.config()) ui.actionconfig.triggered.connect(lambda: self.config())
ui.actionwords.triggered.connect(lambda: self.words()) ui.actionwords.triggered.connect(lambda: self.words())
ui.actionstatistic.triggered.connect(lambda: self.statistic()) ui.actionstatistic.triggered.connect(lambda: self.statistic())
@@ -31,13 +36,56 @@ class kmanWindow(QMainWindow):
ui.actionabout.triggered.connect(lambda: self.about()) ui.actionabout.triggered.connect(lambda: self.about())
ui.actionflush.triggered.connect(lambda: self.flush()) ui.actionflush.triggered.connect(lambda: self.flush())
ui.searchComboBox.currentIndexChanged.connect(self.search_scope_change)
ui.searchToolButton.clicked.connect(self.search_button_clicked)
ui.treeView.activated.connect(self.activated_items)
self.add_ui_component()
#add_ui_component() ###! can not found this function
def add_ui_component(self):
self.ui.searchComboBox.addItems(['ALL','bookname','content','author'])
#inert test data xxxxxxxx
model = QStandardItemModel()
rootItem = model.invisibleRootItem()
for i in range(4):
item = QStandardItem('item {}'.format(i))
rootItem.appendRow(item)
if i==0:
parentItem = item
parentItem.appendRows([QStandardItem('append rows {}'.format(i+10)) for i in range(5)])
if i==3:
parentItem = item
for i in range(5):
item = QStandardItem('another item {}'.format(i+4))
#item.setEnabled(False)
item.setEditable(False)
parentItem.appendRow(item)
self.ui.treeView.setModel(model)
def activated_items(self):
print( 'call activated_items()' )
def search_button_clicked(self):
print( 'call search_button_clicked()' )
def search_scope_change(self,t):
p = {0:'ALL',1:'TITLE',2:'AUTHOR',3:'CONTENT'}
s = self.ui.searchLineEdit.text()
#print(self.books)
#print(search_clip(self.books,s,'ALL',p[t]))
print('call search_scope_change()')
# define slot functions # define slot functions
def importkindle(self,bks): def import_kindle(self,bks):
print("call slot importkindle()") print("call slot importkindle()")
print(bks) print(bks)
pass pass
def importlocal(self): def import_local(self):
print("call slot importlocal()") print("call slot importlocal()")
pass pass
@@ -78,3 +126,4 @@ if __name__ == "__main__":
kmw.resize(900, 600) kmw.resize(900, 600)
kmw.show() kmw.show()
app.exec_() app.exec_()

View File

@@ -203,6 +203,8 @@ class Ui_MainWindow(object):
self.actionsearch.setToolTip(QCoreApplication.translate("MainWindow", u"search note", None)) self.actionsearch.setToolTip(QCoreApplication.translate("MainWindow", u"search note", None))
#endif // QT_CONFIG(tooltip) #endif // QT_CONFIG(tooltip)
self.searchLabel.setText(QCoreApplication.translate("MainWindow", u"Search", None)) self.searchLabel.setText(QCoreApplication.translate("MainWindow", u"Search", None))
self.searchLineEdit.setPlaceholderText(QCoreApplication.translate("MainWindow", u"\u53ef\u6309\u4e66\u540d\u3001\u4f5c\u8005\u3001\u5185\u5bb9\u641c\u7d22\u7b14\u8bb0", None))
self.searchComboBox.setCurrentText("")
self.searchToolButton.setText(QCoreApplication.translate("MainWindow", u"...", None)) self.searchToolButton.setText(QCoreApplication.translate("MainWindow", u"...", None))
self.toolBar.setWindowTitle(QCoreApplication.translate("MainWindow", u"toolBar", None)) self.toolBar.setWindowTitle(QCoreApplication.translate("MainWindow", u"toolBar", None))
# retranslateUi # retranslateUi

View File

@@ -25,10 +25,18 @@
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QLineEdit" name="searchLineEdit"/> <widget class="QLineEdit" name="searchLineEdit">
<property name="placeholderText">
<string>可按书名、作者、内容搜索笔记</string>
</property>
</widget>
</item> </item>
<item> <item>
<widget class="QComboBox" name="searchComboBox"/> <widget class="QComboBox" name="searchComboBox">
<property name="currentText">
<string/>
</property>
</widget>
</item> </item>
<item> <item>
<widget class="QToolButton" name="searchToolButton"> <widget class="QToolButton" name="searchToolButton">

249
mainwindow.ui.autosave Normal file
View File

@@ -0,0 +1,249 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>774</width>
<height>410</height>
</rect>
</property>
<property name="windowTitle">
<string>Kindle Management</string>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLabel" name="searchLabel">
<property name="text">
<string>Search</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="searchLineEdit">
<property name="placeholderText">
<string>可按书名、作者、内容搜索笔记</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="searchComboBox">
<property name="currentText">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="searchToolButton">
<property name="text">
<string>...</string>
</property>
<property name="icon">
<iconset>
<normaloff>icons/search.jpeg</normaloff>icons/search.jpeg</iconset>
</property>
</widget>
</item>
</layout>
</item>
<item row="1" column="0">
<widget class="QSplitter" name="splitter_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<widget class="QTreeView" name="treeView">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>400</width>
<height>16777215</height>
</size>
</property>
</widget>
<widget class="QSplitter" name="splitter">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<widget class="QTableView" name="tableView">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
<widget class="QTextEdit" name="textEdit">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>1</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>400</height>
</size>
</property>
</widget>
</widget>
</widget>
</item>
</layout>
</widget>
<widget class="QStatusBar" name="statusbar"/>
<widget class="QMenuBar" name="menuBar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>774</width>
<height>22</height>
</rect>
</property>
</widget>
<widget class="QToolBar" name="toolBar">
<property name="windowTitle">
<string>toolBar</string>
</property>
<attribute name="toolBarArea">
<enum>TopToolBarArea</enum>
</attribute>
<attribute name="toolBarBreak">
<bool>false</bool>
</attribute>
<addaction name="actionimportkindle"/>
<addaction name="actionimportlocal"/>
<addaction name="separator"/>
<addaction name="actionwords"/>
<addaction name="actionstatistic"/>
<addaction name="separator"/>
<addaction name="actionconfig"/>
<addaction name="separator"/>
<addaction name="actionhomepage"/>
<addaction name="actionabout"/>
<addaction name="separator"/>
<addaction name="actionflush"/>
</widget>
<action name="actionimportlocal">
<property name="icon">
<iconset>
<normaloff>icons/downr.png</normaloff>icons/downr.png</iconset>
</property>
<property name="text">
<string>importlocal</string>
</property>
<property name="toolTip">
<string>import clipping file from local clipping file</string>
</property>
</action>
<action name="actionimportkindle">
<property name="icon">
<iconset>
<normaloff>icons/down.png</normaloff>icons/down.png</iconset>
</property>
<property name="text">
<string>importkindle</string>
</property>
<property name="toolTip">
<string>import clipping file from kindle</string>
</property>
</action>
<action name="actionconfig">
<property name="icon">
<iconset>
<normaloff>icons/config.png</normaloff>icons/config.png</iconset>
</property>
<property name="text">
<string>config</string>
</property>
<property name="toolTip">
<string>configuration</string>
</property>
</action>
<action name="actionflush">
<property name="icon">
<iconset>
<normaloff>icons/refresh.png</normaloff>icons/refresh.png</iconset>
</property>
<property name="text">
<string>refresh</string>
</property>
<property name="toolTip">
<string>refresh import file/quick import from kindle</string>
</property>
</action>
<action name="actionwords">
<property name="icon">
<iconset>
<normaloff>icons/books.png</normaloff>icons/books.png</iconset>
</property>
<property name="text">
<string>words</string>
</property>
<property name="toolTip">
<string>words</string>
</property>
</action>
<action name="actionstatistic">
<property name="icon">
<iconset>
<normaloff>icons/statistics.png</normaloff>icons/statistics.png</iconset>
</property>
<property name="text">
<string>statistic</string>
</property>
<property name="toolTip">
<string>statistics reading habbit</string>
</property>
</action>
<action name="actionhomepage">
<property name="icon">
<iconset>
<normaloff>icons/home.png</normaloff>icons/home.png</iconset>
</property>
<property name="text">
<string>homepage</string>
</property>
<property name="toolTip">
<string>redirect to my homepage</string>
</property>
</action>
<action name="actionabout">
<property name="icon">
<iconset>
<normaloff>icons/question.png</normaloff>icons/question.png</iconset>
</property>
<property name="text">
<string>about</string>
</property>
<property name="toolTip">
<string>open about dialog</string>
</property>
</action>
<action name="actionsearch">
<property name="icon">
<iconset>
<normaloff>icons/Pixadex.png</normaloff>icons/Pixadex.png</iconset>
</property>
<property name="text">
<string>search</string>
</property>
<property name="toolTip">
<string>search note</string>
</property>
</action>
</widget>
<resources/>
<connections/>
</ui>

View File

@@ -1,6 +0,0 @@
TYPE|BOOKNAME|AUTHOR|MARKTIME|CONTENT
--|--|--|--|--
HL|薛兆丰经济学讲义 |薛兆丰|2020/1/13 8:11:05|么到底什么叫边际?边际就是“新增”带来的“新增”。 例如,边际成本就是每新增一个单位产品所需要付出的新增成本;边际收入是每多卖一个产品能够带来的新增收入;边际产量是每新增一份投入所带来的新增产量;边际效用是每消耗一个单位的商品所能带来的新增享受。
HL|薛兆丰经济学讲义 |薛兆丰|2020/1/30 10:23:58|一个国家很大,贫富有差距,并非每个学校和家长都能负担得起这样标准的校车。标准太高,就会逼着很多学校,尤其是农村的学校放弃提供校车,家长们就只能使用安全性能更低的交通工具,比如自己骑自行车或雇用黑车等,结果是孩子们享受到的安全保障反而降低了。
NT|薛兆丰经济学讲义 |薛兆丰|2020/1/30 10:26:31|山寨 假货 问题
HL|薛兆丰经济学讲义 |薛兆丰|2020/1/30 10:29:41|为了克服信息不对称,建立互信,人类社会构想出了各种各样有趣的解决方案,从重复交易到第三方背书,从质保、延保,再到收益共享。此外,还有三种非常接近的建立信任的办法:付出沉没成本、给出人质或者给出抵押。

1
xx
View File

@@ -1 +0,0 @@
{"\u859b\u5146\u4e30\u7ecf\u6d4e\u5b66\u8bb2\u4e49 ": {"author": "\u859b\u5146\u4e30", "1": {"type": "HL", "position": "1408-1410", "day": "2020\u5e741\u670813\u65e5", "week": "\u661f\u671f\u4e00", "meridiem": "\u4e0a\u5348", "time": "8:11:05", "content": "\u4e48\u5230\u5e95\u4ec0\u4e48\u53eb\u8fb9\u9645\uff1f\u8fb9\u9645\u5c31\u662f\u201c\u65b0\u589e\u201d\u5e26\u6765\u7684\u201c\u65b0\u589e\u201d\u3002 \u4f8b\u5982\uff0c\u8fb9\u9645\u6210\u672c\u5c31\u662f\u6bcf\u65b0\u589e\u4e00\u4e2a\u5355\u4f4d\u4ea7\u54c1\u6240\u9700\u8981\u4ed8\u51fa\u7684\u65b0\u589e\u6210\u672c\uff1b\u8fb9\u9645\u6536\u5165\u662f\u6bcf\u591a\u5356\u4e00\u4e2a\u4ea7\u54c1\u80fd\u591f\u5e26\u6765\u7684\u65b0\u589e\u6536\u5165\uff1b\u8fb9\u9645\u4ea7\u91cf\u662f\u6bcf\u65b0\u589e\u4e00\u4efd\u6295\u5165\u6240\u5e26\u6765\u7684\u65b0\u589e\u4ea7\u91cf\uff1b\u8fb9\u9645\u6548\u7528\u662f\u6bcf\u6d88\u8017\u4e00\u4e2a\u5355\u4f4d\u7684\u5546\u54c1\u6240\u80fd\u5e26\u6765\u7684\u65b0\u589e\u4eab\u53d7\u3002"}, "2": {"type": "HL", "position": "4284-4286", "day": "2020\u5e741\u670830\u65e5", "week": "\u661f\u671f\u56db", "meridiem": "\u4e0a\u5348", "time": "10:23:58", "content": "\u4e00\u4e2a\u56fd\u5bb6\u5f88\u5927\uff0c\u8d2b\u5bcc\u6709\u5dee\u8ddd\uff0c\u5e76\u975e\u6bcf\u4e2a\u5b66\u6821\u548c\u5bb6\u957f\u90fd\u80fd\u8d1f\u62c5\u5f97\u8d77\u8fd9\u6837\u6807\u51c6\u7684\u6821\u8f66\u3002\u6807\u51c6\u592a\u9ad8\uff0c\u5c31\u4f1a\u903c\u7740\u5f88\u591a\u5b66\u6821\uff0c\u5c24\u5176\u662f\u519c\u6751\u7684\u5b66\u6821\u653e\u5f03\u63d0\u4f9b\u6821\u8f66\uff0c\u5bb6\u957f\u4eec\u5c31\u53ea\u80fd\u4f7f\u7528\u5b89\u5168\u6027\u80fd\u66f4\u4f4e\u7684\u4ea4\u901a\u5de5\u5177\uff0c\u6bd4\u5982\u81ea\u5df1\u9a91\u81ea\u884c\u8f66\u6216\u96c7\u7528\u9ed1\u8f66\u7b49\uff0c\u7ed3\u679c\u662f\u5b69\u5b50\u4eec\u4eab\u53d7\u5230\u7684\u5b89\u5168\u4fdd\u969c\u53cd\u800c\u964d\u4f4e\u4e86\u3002--CG\u6ce8:\u5c71\u5be8 \u5047\u8d27 \u95ee\u9898"}, "4": {"type": "HL", "position": "4382-4384", "day": "2020\u5e741\u670830\u65e5", "week": "\u661f\u671f\u56db", "meridiem": "\u4e0a\u5348", "time": "10:29:41", "content": "\u4e3a\u4e86\u514b\u670d\u4fe1\u606f\u4e0d\u5bf9\u79f0\uff0c\u5efa\u7acb\u4e92\u4fe1\uff0c\u4eba\u7c7b\u793e\u4f1a\u6784\u60f3\u51fa\u4e86\u5404\u79cd\u5404\u6837\u6709\u8da3\u7684\u89e3\u51b3\u65b9\u6848\uff0c\u4ece\u91cd\u590d\u4ea4\u6613\u5230\u7b2c\u4e09\u65b9\u80cc\u4e66\uff0c\u4ece\u8d28\u4fdd\u3001\u5ef6\u4fdd\uff0c\u518d\u5230\u6536\u76ca\u5171\u4eab\u3002\u6b64\u5916\uff0c\u8fd8\u6709\u4e09\u79cd\u975e\u5e38\u63a5\u8fd1\u7684\u5efa\u7acb\u4fe1\u4efb\u7684\u529e\u6cd5\uff1a\u4ed8\u51fa\u6c89\u6ca1\u6210\u672c\u3001\u7ed9\u51fa\u4eba\u8d28\u6216\u8005\u7ed9\u51fa\u62b5\u62bc\u3002"}, "lines": 4}}