diff --git a/src/libprs500/ebooks/lrf/__init__.py b/src/libprs500/ebooks/lrf/__init__.py index b38ef08329..28d41d76e9 100644 --- a/src/libprs500/ebooks/lrf/__init__.py +++ b/src/libprs500/ebooks/lrf/__init__.py @@ -105,6 +105,8 @@ def option_parser(usage): help='Publisher') metadata.add_option('--cover', action='store', dest='cover', default=None, \ help='Path to file containing image to be used as cover') + metadata.add_option('--use-metadata-cover', action='store_true', default=False, + help='If there is a cover graphic detected in the source file, use that instead of the specified cover.') parser.add_option('-o', '--output', action='store', default=None, \ help='Output file name. Default is derived from input filename') diff --git a/src/libprs500/ebooks/lrf/html/convert_from.py b/src/libprs500/ebooks/lrf/html/convert_from.py index 6b94064da5..f33d3b713c 100644 --- a/src/libprs500/ebooks/lrf/html/convert_from.py +++ b/src/libprs500/ebooks/lrf/html/convert_from.py @@ -1717,7 +1717,9 @@ def try_opf(path, options, logger): category = opf.category if category: options.category = category - if not options.cover: + if not options.cover or options.use_metadata_cover: + orig_cover = options.cover + options.cover = None cover = opf.cover if cover: if not os.path.isabs(cover): @@ -1727,19 +1729,19 @@ def try_opf(path, options, logger): PILImage.open(cover) options.cover = cover except: - pass - if not options.cover: - for prefix in opf.possible_cover_prefixes(): - if options.cover: - break - for suffix in ['.jpg', '.jpeg', '.gif', '.png', '.bmp']: - cpath = os.path.join(os.path.dirname(path), prefix+suffix) - try: - PILImage.open(cpath) - options.cover = cpath - break - except: - continue + for prefix in opf.possible_cover_prefixes(): + if options.cover: + break + for suffix in ['.jpg', '.jpeg', '.gif', '.png', '.bmp']: + cpath = os.path.join(os.path.dirname(path), prefix+suffix) + try: + PILImage.open(cpath) + options.cover = cpath + break + except: + continue + if not options.cover and orig_cover is not None: + options.cover = orig_cover options.spine = [i.href for i in opf.spine.items()] options.toc = opf.toc except Exception: diff --git a/src/libprs500/gui2/dialogs/lrf_single.py b/src/libprs500/gui2/dialogs/lrf_single.py index 7c29e501bc..e857e864cc 100644 --- a/src/libprs500/gui2/dialogs/lrf_single.py +++ b/src/libprs500/gui2/dialogs/lrf_single.py @@ -89,8 +89,6 @@ class LRFSingleDialog(QDialog, Ui_LRFSingleDialog): self.setWindowTitle('Convert %s to LRF'%(self.selected_format,)) - - def read_saved_options(self): cmdline = self.db.conversion_options(self.id, self.output_format.lower()) if cmdline: @@ -207,6 +205,7 @@ class LRFSingleDialog(QDialog, Ui_LRFSingleDialog): state = Qt.Checked if default else Qt.Unchecked obj.setCheckState(state) self.gui_headerformat.setDisabled(True) + self.gui_use_metadata_cover.setCheckState(Qt.Checked) self.preprocess.addItem('No preprocessing') for opt in self.PREPROCESS_OPTIONS: self.preprocess.addItem(opt.get_opt_string()[2:]) diff --git a/src/libprs500/gui2/dialogs/lrf_single.ui b/src/libprs500/gui2/dialogs/lrf_single.ui index e52448bde0..caf08cee8c 100644 --- a/src/libprs500/gui2/dialogs/lrf_single.ui +++ b/src/libprs500/gui2/dialogs/lrf_single.ui @@ -256,6 +256,13 @@ + + + + Use &metadata cover + + +