kindle manager

This commit is contained in:
gavin
2020-06-15 21:28:17 +08:00
parent 7cb8e61519
commit 956e68f551
8 changed files with 73 additions and 18 deletions

View File

@@ -89,6 +89,29 @@ class kmanWindow(QMainWindow):
[self.filter_books, self.filter_list] = self.km.filter_clips(self.books_data)
#self.filter_list = self.km.filter_words(self.words_data)
# initial books information which grab from douban or amazon
# if the information exist in backup file, initial with this file,
# and grap new book's information from douban
# else grap all book information from douban
self.books_info = defaultdict(dict)
try:
if os.path.exists(BACKUPINFOFN):
self.books_info = self.km.json2dict(BACKUPINFOFN)
increase_book_list = self.check_increase_books(self.books_data, self.books_info)
if len(increase_book_list) > 0:
trd = threading.Thread(target=self.grab_books_info, args=(increase_book_list,))
trd.setDaemon(True)
trd.start()
else:
booklist = list(self.books_data.keys())
trd = threading.Thread(target=self.grab_books_info, args=(book_list,))
trd.setDaemon(True)
trd.start()
except Exception as e:
print(e)
finally:
pass
self.fill_treeview()
self.refresh_ui_component(comp=1)
@@ -126,6 +149,20 @@ class kmanWindow(QMainWindow):
ui.tableView.verticalHeader().hide()
ui.tableView.setModel(self.ui.tablemodel)
def check_increase_books(self, bks, bksinfo):
new_list = list(bks.keys()) # kindle's books with note
new_list = [re.split(r'[\(\-\:_\s]',nn.strip())[0] for nn in new_list]
last_list = list(bksinfo.keys()) # grab book information last time
increase_list = []
for nn in new_list:
flag = 0
for gg in last_list:
if nn in gg: flag = 1
if flag == 0:
increase_list.append(nn)
return increase_list
def add_ui_component(self):
self.ui.searchComboBox.addItems([u'ALL',u'BOOKNAME',u'CONTENT',u'AUTHOR'])
self.ui.treeView.resize(200,200)
@@ -514,26 +551,32 @@ class kmanWindow(QMainWindow):
r = msgBox.exec()
# backup file when kman closed
# read backup file when kman start
# so we can read backup file when kman start
def closeEvent(self, e):
with open(BACKUPNOTEFN, 'w', encoding='utf8', errors='ignore') as fw:
fw.write(self.km.dict2json(self.books_data))
with open(BACKUPWORDFN, 'w', encoding='utf8', errors='ignore') as fw:
fw.write(self.km.dict2json(self.words_data))
with open(BACKUPINFOFN, 'w', encoding='utf8', errors='ignore') as fw:
fw.write(self.km.dict2json(self.books_info))
# stop check thread
self.flag = False
def grab_all_book_info(self):
def grab_books_info(self, booklist):
for bkname in self.books_data.keys():
bks_info = {}
for bkname in booklist:
bkname = re.split(r'[\(\-\:_\s]',bkname.strip())[0]
print(bkname)
bkinfo = self.spide.grab_book_info(bkname)
filter_bkinfo = self.spide.filter_spide_book(bkinfo)
bks_info.update(filter_bkinfo)
if filter_bkinfo:
self.spide.down_book_img(filter_bkinfo)
return self.books_info.update(bks_info)
# thanks Martin Fitzpatrick ^_^
# https://www.learnpyqt.com/courses/model-views/qtableview-modelviews-numpy-pandas/
class nTableModel(QAbstractTableModel):
@@ -576,9 +619,19 @@ if __name__ == "__main__":
#kmw.showFullScreen()
kmw.show()
trd = threading.Thread(target=kmw.grab_all_book_info)
trd.setDaemon(True)
trd.start()
"""
# move to __init__()
try:
booklist = self.books_data.keys()
trd = threading.Thread(target=kmw.grab_books_info, args=(booklist,))
trd.setDaemon(True)
trd.start()
except Exception as e:
print(e)
pass
finally:
pass
"""
# loop check kindle is connected or not
# BUG to be implement XXXX