diff --git a/calibre-plugin/ffdl_plugin.py b/calibre-plugin/ffdl_plugin.py
index 9550f994..47b527d5 100644
--- a/calibre-plugin/ffdl_plugin.py
+++ b/calibre-plugin/ffdl_plugin.py
@@ -497,6 +497,7 @@ make_firstimage_cover:true
book['password'] = adapter.password
book['icon'] = 'plus.png'
+ book['status'] = 'Add'
if story.getMetadataRaw('datePublished'):
# should only happen when an adapter is broken, but better to
# fail gracefully.
@@ -505,6 +506,7 @@ make_firstimage_cover:true
if collision in (CALIBREONLY):
book['icon'] = 'metadata.png'
+ book['status'] = 'Meta'
# Dialogs should prevent this case now.
if collision in (UPDATE,UPDATEALWAYS) and fileform != 'epub':
@@ -560,6 +562,7 @@ make_firstimage_cover:true
book_id = identicalbooks.pop()
book['calibre_id'] = book_id
book['icon'] = 'edit-redo.png'
+ book['status'] = 'Update'
if book_id != None and collision != ADDNEW:
if collision in (CALIBREONLY):
@@ -767,47 +770,89 @@ make_firstimage_cover:true
self.previous = self.gui.library_view.currentIndex()
db = self.gui.current_db
+ # if display_story_list(self.gui,
+ # 'Downloads finished, confirm to update Calibre',
+ # prefs,
+ # self.qaction.icon(),
+ # job.result,
+ # label_text='Stories will not be added or updated in Calibre without confirmation.',
+ # offer_skip=True):
- if display_story_list(self.gui,
- 'Downloads finished, confirm to update Calibre',
- prefs,
- self.qaction.icon(),
- job.result,
- label_text='Stories will not be added or updated in Calibre without confirmation.',
- offer_skip=True):
-
- book_list = job.result
- good_list = filter(lambda x : x['good'], book_list)
- total_good = len(good_list)
+ # payload = (job.statistics_cols_map, book_statistics_map)
+ # all_ids = set(book_statistics_map.keys())
+ # msg = '
Count Pages plugin found %d statistics(s). ' % len(all_ids) + \
+ # 'Proceed with updating columns in your library?'
+ # self.gui.proceed_question(self._update_database_columns,
+ # payload, job.details,
+ # 'Count log', 'Count complete', msg,
+ # show_copy_button=False)
- self.gui.status_bar.show_message(_('Adding/Updating %s books.'%total_good))
+ book_list = job.result
+ good_list = filter(lambda x : x['good'], book_list)
+ bad_list = filter(lambda x : x['calibre_id'] and not x['good'], book_list)
+ payload = (good_list, bad_list, options)
+
+ msg = '''
+
FFDL found %s good and %s bad updates.
+See log for details.
+Proceed with updating your library?
+'''%(len(good_list),len(bad_list))
- if total_good > 0:
+ htmllog='| Status | Title | Author | URL | Comment |
'
+ for book in good_list:
+ if 'status' in book:
+ status = book['status']
+ else:
+ status = 'Good'
+ htmllog = htmllog + '| ' + ' | '.join([status,book['title'],", ".join(book['author']),book['url'],book['comment']]) + ' |
'
+
+ for book in bad_list:
+ if 'status' in book:
+ status = book['status']
+ else:
+ status = 'Bad'
+ htmllog = htmllog + '| ' + ' | '.join([status,book['title'],", ".join(book['author']),book['url'],book['comment']]) + ' |
'
+
+ htmllog = htmllog + '
'
+
+ self.gui.proceed_question(self._do_download_list_update,
+ payload, htmllog,
+ 'FFDL log', 'FFDL download complete', msg,
+ show_copy_button=True)
+
+
+ def _do_download_list_update(self, payload):
+
+ (good_list,bad_list,options) = payload
+ total_good = len(good_list)
+
+ self.gui.status_bar.show_message(_('Adding/Updating %s books.'%total_good))
+
+ if total_good > 0:
+ LoopProgressDialog(self.gui,
+ good_list,
+ partial(self._update_book, options=options, db=self.gui.current_db),
+ partial(self._update_books_completed, options=options),
+ init_label="Updating calibre for FanFiction stories...",
+ win_title="Update calibre for FanFiction stories",
+ status_prefix="Updated")
+
+ total_bad = len(bad_list)
+
+ if total_bad > 0:
+ custom_columns = self.gui.library_view.model().custom_columns
+ if prefs['errorcol'] != '' and prefs['errorcol'] in custom_columns:
+ self.gui.status_bar.show_message(_('Adding/Updating %s BAD books.'%total_bad))
+ label = custom_columns[prefs['errorcol']]['label']
+ ## if error column and all bad.
LoopProgressDialog(self.gui,
- good_list,
- partial(self._update_book, options=options, db=self.gui.current_db),
- partial(self._update_books_completed, options=options),
- init_label="Updating calibre for FanFiction stories...",
- win_title="Update calibre for FanFiction stories",
+ bad_list,
+ partial(self._update_bad_book, label=label, options=options, db=self.gui.current_db),
+ partial(self._update_books_completed, options=options, showlist=False),
+ init_label="Updating calibre for BAD FanFiction stories...",
+ win_title="Update calibre for BAD FanFiction stories",
status_prefix="Updated")
- bad_list = filter(lambda x : x['calibre_id'] and not x['good'], book_list)
- total_bad = len(bad_list)
-
- if total_bad > 0:
- custom_columns = self.gui.library_view.model().custom_columns
- if prefs['errorcol'] != '' and prefs['errorcol'] in custom_columns:
- self.gui.status_bar.show_message(_('Adding/Updating %s BAD books.'%total_bad))
- label = custom_columns[prefs['errorcol']]['label']
- ## if error column and all bad.
- LoopProgressDialog(self.gui,
- bad_list,
- partial(self._update_bad_book, label=label, options=options, db=self.gui.current_db),
- partial(self._update_books_completed, options=options, showlist=False),
- init_label="Updating calibre for BAD FanFiction stories...",
- win_title="Update calibre for BAD FanFiction stories",
- status_prefix="Updated")
-
def _add_or_update_book(self,book,options,prefs,mi=None):
db = self.gui.current_db
@@ -830,6 +875,7 @@ make_firstimage_cover:true
book['comment'] = "Adding format to book failed for some reason..."
book['good']=False
book['icon']='dialog_error.png'
+ book['status'] = 'Error'
if prefs['deleteotherforms']:
fmts = db.formats(book['calibre_id'], index_is_id=True).split(',')
@@ -1117,6 +1163,7 @@ make_firstimage_cover:true
book['comment'] = "No story URL found."
book['good'] = False
book['icon'] = 'search_delete_saved.png'
+ book['status'] = 'Not Found'
else:
# get normalized url or None.
book['url'] = self._is_good_downloader_url(url)
@@ -1125,6 +1172,7 @@ make_firstimage_cover:true
book['comment'] = "URL is not a valid story URL."
book['good'] = False
book['icon']='dialog_error.png'
+ book['status'] = 'Bad URL'
def _get_story_url(self, db, book_id):
identifiers = db.get_identifiers(book_id,index_is_id=True)
diff --git a/calibre-plugin/jobs.py b/calibre-plugin/jobs.py
index 6325dd75..49ea8639 100644
--- a/calibre-plugin/jobs.py
+++ b/calibre-plugin/jobs.py
@@ -177,6 +177,7 @@ def do_download_for_worker(book,options):
book['good']=False
book['comment']=unicode(e)
book['icon']='dialog_error.png'
+ book['status'] = 'Error'
print("Exception: %s:%s"%(book,unicode(e)))
traceback.print_exc()