diff --git a/calibre-plugin/config.py b/calibre-plugin/config.py index d6984009..8218acf2 100644 --- a/calibre-plugin/config.py +++ b/calibre-plugin/config.py @@ -278,7 +278,6 @@ class ConfigWidget(QWidget): prefs['collision'] = save_collisions[unicode(self.basic_tab.collision.currentText())] prefs['updatemeta'] = self.basic_tab.updatemeta.isChecked() prefs['bgmeta'] = self.basic_tab.bgmeta.isChecked() - 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() @@ -333,6 +332,7 @@ class ConfigWidget(QWidget): prefs['calibre_gen_cover'] = self.calibrecover_tab.calibre_gen_cover.isChecked() prefs['plugin_gen_cover'] = self.calibrecover_tab.plugin_gen_cover.isChecked() prefs['gcnewonly'] = self.calibrecover_tab.gcnewonly.isChecked() + prefs['covernewonly'] = self.calibrecover_tab.covernewonly.isChecked() gc_site_settings = {} for (site,combo) in six.iteritems(self.calibrecover_tab.gc_dropdowns): val = unicode(combo.itemData(combo.currentIndex())) @@ -482,11 +482,6 @@ class BasicTab(QWidget): self.updatemeta.setChecked(prefs['updatemeta']) horz.addWidget(self.updatemeta) - self.updateepubcover = QCheckBox(_('Default Update EPUB Cover when Updating EPUB?'),self) - self.updateepubcover.setToolTip(_("On each download, FanFicFare offers an option to update the book cover image inside the EPUB from the web site when the EPUB is updated.
This sets whether that will default to on or off.")) - self.updateepubcover.setChecked(prefs['updateepubcover']) - horz.addWidget(self.updateepubcover) - self.bgmeta = QCheckBox(_('Default Background Metadata?'),self) self.bgmeta.setToolTip(_("On each download, FanFicFare offers an option to Collect Metadata from sites in a Background process.
This returns control to you quicker while updating, but you won't be asked for username/passwords or if you are an adult--stories that need those will just fail.
Only available for Update/Overwrite of existing books in case URL given isn't canonical or matches to existing book by Title/Author.")) self.bgmeta.setChecked(prefs['bgmeta']) @@ -997,7 +992,7 @@ class CalibreCoverTab(QWidget): self.gencov_elements=[] ## used to disable/enable when gen ## cover is off/on. This is more - ## about being a visual que than real + ## about being a visual cue than real ## necessary function. topl = self.l = QVBoxLayout() @@ -1018,6 +1013,12 @@ class CalibreCoverTab(QWidget): self.l.addWidget(label) self.l.addSpacing(5) + self.covernewonly = QCheckBox(_("Set Covers Only for New Books"),self) + self.covernewonly.setToolTip(_("Set or generate a Calibre cover only for new books, never for updated books.")) + self.covernewonly.setChecked(prefs['covernewonly']) + self.l.addWidget(self.covernewonly) + self.l.addSpacing(5) + tooltip = _("Update Calibre book cover image from EPUB when Calibre metadata is updated.\n" "Doesn't go looking for new images on 'Update Calibre Metadata Only'.\n" "Cover in EPUB could be from site or previously injected into the EPUB.\n" diff --git a/calibre-plugin/dialogs.py b/calibre-plugin/dialogs.py index 006f933f..c4d9fb4b 100644 --- a/calibre-plugin/dialogs.py +++ b/calibre-plugin/dialogs.py @@ -314,12 +314,6 @@ class AddNewDialog(SizePersistedDialog): self.mergehide.append(self.updatemeta) self.mergeupdateshow.append(self.updatemeta) - self.updateepubcover = QCheckBox(_('Update EPUB Cover?'),self) - self.updateepubcover.setToolTip(_('Update book cover image from site or defaults (if found) inside the EPUB when EPUB is updated.')) - self.updateepubcover.setChecked(self.prefs['updateepubcover']) - horz.addWidget(self.updateepubcover) - self.mergehide.append(self.updateepubcover) - self.gbl.addLayout(horz) ## bgmeta not used with Add New because of stories that change @@ -449,9 +443,6 @@ class AddNewDialog(SizePersistedDialog): self.updatemeta.setChecked(self.prefs['updatemeta']) # self.bgmeta.setChecked(self.prefs['bgmeta']) - if not self.merge: - self.updateepubcover.setChecked(self.prefs['updateepubcover']) - self.url.setText(url_list_text) if url_list_text: self.button_box.button(QDialogButtonBox.Ok).setFocus() @@ -489,14 +480,12 @@ class AddNewDialog(SizePersistedDialog): 'collision': unicode(self.collision.currentText()), 'updatemeta': self.updatemeta.isChecked(), 'bgmeta': False, # self.bgmeta.isChecked(), - 'updateepubcover': self.updateepubcover.isChecked(), 'smarten_punctuation':self.prefs['smarten_punctuation'], 'do_wordcount':self.prefs['do_wordcount'], } if self.merge: retval['fileform']=='epub' - retval['updateepubcover']=True if self.newmerge: retval['updatemeta']=True retval['collision']=ADDNEW @@ -891,11 +880,6 @@ class UpdateExistingDialog(SizePersistedDialog): self.updatemeta.setChecked(self.prefs['updatemeta']) horz.addWidget(self.updatemeta) - self.updateepubcover = QCheckBox(_('Update EPUB Cover?'),self) - self.updateepubcover.setToolTip(_('Update book cover image from site or defaults (if found) inside the EPUB when EPUB is updated.')) - self.updateepubcover.setChecked(self.prefs['updateepubcover']) - horz.addWidget(self.updateepubcover) - self.bgmeta = QCheckBox(_('Background Metadata?'),self) self.bgmeta.setToolTip(_("Collect Metadata from sites in a Background process.
This returns control to you quicker while updating, but you won't be asked for username/passwords or if you are an adult--stories that need those will just fail.")) self.bgmeta.setChecked(self.prefs['bgmeta']) @@ -947,7 +931,6 @@ class UpdateExistingDialog(SizePersistedDialog): 'collision': unicode(self.collision.currentText()), 'updatemeta': self.updatemeta.isChecked(), 'bgmeta': self.bgmeta.isChecked(), - 'updateepubcover': self.updateepubcover.isChecked(), 'smarten_punctuation':self.prefs['smarten_punctuation'], 'do_wordcount':self.prefs['do_wordcount'], } diff --git a/calibre-plugin/fff_plugin.py b/calibre-plugin/fff_plugin.py index 83b8291d..b085e384 100644 --- a/calibre-plugin/fff_plugin.py +++ b/calibre-plugin/fff_plugin.py @@ -25,7 +25,6 @@ from fanficfare.six import ensure_text, string_types, text_type as unicode # profile.print_stats() # return profiled_func - import logging logger = logging.getLogger(__name__) @@ -116,6 +115,20 @@ from calibre_plugins.fanficfare_plugin.dialogs import ( save_collisions, question_dialog_all, NotGoingToDownload, RejectUrlEntry ) +from calibre.gui2.ui import get_gui +def do_updateepubcover_warning(func): + def profiled_func(*args, **kwargs): + if prefs['updateepubcover'] == False: + confirm('

'+_("FanFicFare's Update EPUB Cover? Download Options checkbox has been removed.")+'<\p>'+ + '

'+_("It was a very old setting that didn't quite do what users expected.")+'<\p>'+ + '

'+_("You are getting this warning because you had Default Update EPUB Cover when Updating EPUB? unchecked.")+'<\p>'+ + '

'+_("To keep the same behavior, you can add these lines to your personal.ini:")+'<\p>'+ + '

[overrides]
never_make_cover:true<\p>'+ + '

'+_("Click this link for more information.")+'<\p>', + 'fff_updateepubcover_removed', get_gui(), show_cancel_button=False, title=_("FanFicFare Warning")) + return func(*args, **kwargs) + return profiled_func + # because calibre immediately transforms html into zip and don't want # to have an 'if html'. db.has_format is cool with the case mismatch, # but if I'm doing it anyway... @@ -597,7 +610,6 @@ class FanFicFarePlugin(InterfaceAction): 'collision': extraoptions.get('collision',save_collisions[prefs['collision']]), 'updatemeta': prefs['updatemeta'], 'bgmeta': False, - 'updateepubcover': prefs['updateepubcover'], 'smarten_punctuation':prefs['smarten_punctuation'], 'do_wordcount':prefs['do_wordcount'], 'add_tag':prefs['imaptags'], @@ -866,6 +878,7 @@ class FanFicFarePlugin(InterfaceAction): if confirm(message,'fff_reject_non_fanfiction', self.gui): self.gui.iactions['Remove Books'].delete_books() + @do_updateepubcover_warning def add_dialog(self, checked, url_list_text=None, @@ -1235,8 +1248,7 @@ class FanFicFarePlugin(InterfaceAction): options={'fileform':'epub', 'collision':ADDNEW, 'updatemeta':True, - 'bgmeta':False, - 'updateepubcover':True}, + 'bgmeta':False}, merge=False): ''' Update passed in book dict with metadata from website and @@ -1258,7 +1270,6 @@ class FanFicFarePlugin(InterfaceAction): collision = book['collision'] = options['collision'] updatemeta= options['updatemeta'] bgmeta= options['bgmeta'] - updateepubcover= options['updateepubcover'] ## Check reject list. Redundant with below for when story URL ## changes, but also kept here to avoid network hit in most @@ -1666,8 +1677,7 @@ class FanFicFarePlugin(InterfaceAction): options={'fileform':'epub', 'collision':ADDNEW, 'updatemeta':True, - 'bgmeta':False, - 'updateepubcover':True}, + 'bgmeta':False}, merge=False): ''' Called by LoopProgressDialog to start story downloads BG processing. @@ -1796,8 +1806,7 @@ class FanFicFarePlugin(InterfaceAction): options={'fileform':'epub', 'collision':ADDNEW, 'updatemeta':True, - 'bgmeta':False, - 'updateepubcover':True}, + 'bgmeta':False}, errorcol_label=None, lastcheckedcol_label=None): @@ -2464,6 +2473,11 @@ class FanFicFarePlugin(InterfaceAction): db.commit() + # First, should cover generation happen at all? + # everything after here is cover processing. + if not book['added'] and prefs['covernewonly']: + return + logger.info("cover_image:%s"%book['all_metadata']['cover_image']) # updating calibre cover from book. if options['fileform'] == 'epub' and ( @@ -2479,7 +2493,6 @@ class FanFicFarePlugin(InterfaceAction): except: logger.info("Failed to set_cover, skipping") - # First, should cover generation happen at all? # logger.debug("book['all_metadata']['cover_image']:%s"%book['all_metadata']['cover_image']) if (book['added'] or not prefs['gcnewonly']) and ( # skip if not new book and gcnewonly is True prefs['gencalcover'] == SAVE_YES ## yes, always diff --git a/calibre-plugin/jobs.py b/calibre-plugin/jobs.py index c42bfd87..27816089 100644 --- a/calibre-plugin/jobs.py +++ b/calibre-plugin/jobs.py @@ -222,8 +222,8 @@ def do_download_for_worker(book,options,merge,notification=lambda x,y:x): options['fileform'], options['personal.ini']) - if not options['updateepubcover'] and 'epub_for_update' in book and book['collision'] in (UPDATE, UPDATEALWAYS): - configuration.set("overrides","never_make_cover","true") + # if not options['updateepubcover'] and 'epub_for_update' in book and book['collision'] in (UPDATE, UPDATEALWAYS): + # configuration.set("overrides","never_make_cover","true") # images only for epub, html, even if the user mistakenly # turned it on else where. diff --git a/calibre-plugin/prefs.py b/calibre-plugin/prefs.py index 2a615270..98c05242 100644 --- a/calibre-plugin/prefs.py +++ b/calibre-plugin/prefs.py @@ -120,7 +120,7 @@ default_prefs['reject_delete_default'] = True default_prefs['updatemeta'] = True default_prefs['bgmeta'] = False -default_prefs['updateepubcover'] = False +default_prefs['updateepubcover'] = True # removed in favor of always True Sep 2022 default_prefs['keeptags'] = False default_prefs['suppressauthorsort'] = False default_prefs['suppresstitlesort'] = False @@ -158,6 +158,7 @@ default_prefs['addtoreadlists'] = False default_prefs['addtolistsonread'] = False default_prefs['autounnew'] = False +default_prefs['covernewonly'] = False default_prefs['updatecalcover'] = SAVE_YES_IF_IMG default_prefs['gencalcover'] = SAVE_YES default_prefs['updatecover'] = False