From d9ae30cfe37e6a55f28a84233c7b4514973a32e2 Mon Sep 17 00:00:00 2001 From: Jim Miller Date: Mon, 18 Jan 2021 11:05:30 -0600 Subject: [PATCH] Add plugin options to mark success/failed/chapter error individually. --- calibre-plugin/config.py | 34 +++++++++++++++++++++++++++++++++- calibre-plugin/fff_plugin.py | 32 ++++++++++++++++++-------------- calibre-plugin/prefs.py | 5 ++++- 3 files changed, 55 insertions(+), 16 deletions(-) diff --git a/calibre-plugin/config.py b/calibre-plugin/config.py index bac46aa3..bc4ffafc 100644 --- a/calibre-plugin/config.py +++ b/calibre-plugin/config.py @@ -5,7 +5,7 @@ from __future__ import (unicode_literals, division, absolute_import, import six __license__ = 'GPL v3' -__copyright__ = '2020, Jim Miller' +__copyright__ = '2021, Jim Miller' __docformat__ = 'restructuredtext en' import logging @@ -284,6 +284,9 @@ class ConfigWidget(QWidget): prefs['updateepubcover'] = self.basic_tab.updateepubcover.isChecked() prefs['keeptags'] = self.basic_tab.keeptags.isChecked() prefs['mark'] = self.basic_tab.mark.isChecked() + prefs['mark_success'] = self.basic_tab.mark_success.isChecked() + prefs['mark_failed'] = self.basic_tab.mark_failed.isChecked() + prefs['mark_chapter_error'] = self.basic_tab.mark_chapter_error.isChecked() prefs['showmarked'] = self.basic_tab.showmarked.isChecked() prefs['autoconvert'] = self.basic_tab.autoconvert.isChecked() prefs['show_est_time'] = self.basic_tab.show_est_time.isChecked() @@ -541,6 +544,35 @@ class BasicTab(QWidget): self.mark.setChecked(prefs['mark']) self.l.addWidget(self.mark) + horz = QHBoxLayout() + horz.addItem(QtGui.QSpacerItem(20, 1)) + self.l.addLayout(horz) + + self.mark_success = QCheckBox(_("Success"),self) + self.mark_success.setToolTip(_("Mark successfully downloaded or updated books.")) + self.mark_success.setChecked(prefs['mark_success']) + self.mark_success.setEnabled(self.checkforseriesurlid.isChecked()) + horz.addWidget(self.mark_success) + + self.mark_failed = QCheckBox(_("Failed"),self) + self.mark_failed.setToolTip(_("Mark failed downloaded or updated books.")) + self.mark_failed.setChecked(prefs['mark_failed']) + self.mark_failed.setEnabled(self.checkforseriesurlid.isChecked()) + horz.addWidget(self.mark_failed) + + self.mark_chapter_error = QCheckBox(_("Chapter Error"),self) + self.mark_chapter_error.setToolTip(_("Mark downloaded or updated books with chapter errors (only when continue_on_chapter_error:true).")) + self.mark_chapter_error.setChecked(prefs['mark_chapter_error']) + self.mark_chapter_error.setEnabled(self.checkforseriesurlid.isChecked()) + horz.addWidget(self.mark_chapter_error) + + def mark_state(): + self.mark_success.setEnabled(self.mark.isChecked()) + self.mark_failed.setEnabled(self.mark.isChecked()) + self.mark_chapter_error.setEnabled(self.mark.isChecked()) + self.mark.stateChanged.connect(mark_state) + mark_state() + self.showmarked = QCheckBox(_("Show Marked books when finished?"),self) self.showmarked.setToolTip(_("Show Marked added/updated books only when finished.\nYou can also manually search for 'marked:fff_success'.\n'marked:fff_failed' and 'marked:fff_chapter_error' are also available, or search 'marked:fff' for all.")) self.showmarked.setChecked(prefs['showmarked']) diff --git a/calibre-plugin/fff_plugin.py b/calibre-plugin/fff_plugin.py index abf36aaa..ea6ca441 100644 --- a/calibre-plugin/fff_plugin.py +++ b/calibre-plugin/fff_plugin.py @@ -6,7 +6,7 @@ import six from six.moves import range __license__ = 'GPL v3' -__copyright__ = '2020, Jim Miller' +__copyright__ = '2021, Jim Miller' __docformat__ = 'restructuredtext en' from .fanficfare.six import ensure_text, string_types, text_type as unicode @@ -1800,20 +1800,24 @@ class FanFicFarePlugin(InterfaceAction): db = self.gui.current_db marked_ids = dict() marked_text = "fff" - for index, book_id in enumerate(all_ids): - marked_ids[book_id] = '%s_success_%04d' % (marked_text, index) - for index, book_id in enumerate(failed_ids): - marked_ids[book_id] = '%s_failed_%04d' % (marked_text, index) - for index, book_id in enumerate(chapter_error_ids): - marked_ids[book_id] = '%s_chapter_error_%04d' % (marked_text, index) - # Mark the results in our database - db.set_marked_ids(marked_ids) + if prefs['mark_success']: + for index, book_id in enumerate(all_ids): + marked_ids[book_id] = '%s_success_%04d' % (marked_text, index) + if prefs['mark_failed']: + for index, book_id in enumerate(failed_ids): + marked_ids[book_id] = '%s_failed_%04d' % (marked_text, index) + if prefs['mark_chapter_error']: + for index, book_id in enumerate(chapter_error_ids): + marked_ids[book_id] = '%s_chapter_error_%04d' % (marked_text, index) + if marked_ids: + # Mark the results in our database + db.set_marked_ids(marked_ids) - if prefs['showmarked']: # show add/update - # Search to display the list contents - self.gui.search.set_search_string('marked:' + marked_text) - # Sort by our marked column to display the books in order - self.gui.library_view.sort_by_named_field('marked', True) + if prefs['showmarked']: # show add/update + # Search to display the list contents + self.gui.search.set_search_string('marked:' + marked_text) + # Sort by our marked column to display the books in order + self.gui.library_view.sort_by_named_field('marked', True) logger.debug(_('Finished Adding/Updating %d books.')%(len(update_list) + len(add_list))) self.gui.status_bar.show_message(_('Finished Adding/Updating %d books.')%(len(update_list) + len(add_list)), 3000) diff --git a/calibre-plugin/prefs.py b/calibre-plugin/prefs.py index 616cdf2b..0b0b3ba0 100644 --- a/calibre-plugin/prefs.py +++ b/calibre-plugin/prefs.py @@ -4,7 +4,7 @@ from __future__ import (unicode_literals, division, absolute_import, print_function) __license__ = 'GPL v3' -__copyright__ = '2020, Jim Miller' +__copyright__ = '2021, Jim Miller' __docformat__ = 'restructuredtext en' import logging @@ -132,6 +132,9 @@ default_prefs['authorcase'] = False default_prefs['titlecase'] = False default_prefs['setanthologyseries'] = False default_prefs['mark'] = False +default_prefs['mark_success'] = True +default_prefs['mark_failed'] = True +default_prefs['mark_chapter_error'] = True default_prefs['showmarked'] = False default_prefs['autoconvert'] = False default_prefs['urlsfromclip'] = True