mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
ebook-meta: Add an option to disallow rendered cover of first page for EPUB
This commit is contained in:
parent
57017c437e
commit
cec78caa1f
@ -81,6 +81,9 @@ def config():
|
||||
c.add_opt('get_cover', ['--get-cover'],
|
||||
help=_('Get the cover from the e-book and save it at as the '
|
||||
'specified file.'))
|
||||
c.add_opt('disallow_rendered_cover', ['--disallow-rendered-cover'], action='store_true', help=_(
|
||||
'For formats like EPUB that use a "default cover" of the first page rendered, disallow such default covers'))
|
||||
|
||||
c.add_opt('to_opf', ['--to-opf'],
|
||||
help=_('Specify the name of an OPF file. The metadata will '
|
||||
'be written to the OPF file.'))
|
||||
@ -182,7 +185,8 @@ def main(args=sys.argv):
|
||||
if getattr(opts, pref.name) is not None:
|
||||
trying_to_set = True
|
||||
break
|
||||
with open(path, 'rb') as stream:
|
||||
from calibre.ebooks.metadata.epub import epub_metadata_settings
|
||||
with open(path, 'rb') as stream, epub_metadata_settings(allow_rendered_cover=not opts.disallow_rendered_cover):
|
||||
mi = get_metadata(stream, stream_type, force_read_metadata=True)
|
||||
if trying_to_set:
|
||||
prints(_('Original metadata')+'::')
|
||||
|
@ -10,7 +10,7 @@ __copyright__ = '2008, Kovid Goyal <kovid at kovidgoyal.net>'
|
||||
import io
|
||||
import os
|
||||
import posixpath
|
||||
from contextlib import closing, suppress
|
||||
from contextlib import closing, contextmanager, suppress
|
||||
|
||||
from calibre import CurrentDir
|
||||
from calibre.ebooks.metadata.opf import get_metadata as get_metadata_from_opf
|
||||
@ -230,6 +230,20 @@ def render_cover(cpage, zf, reader=None):
|
||||
return render_html_svg_workaround(cpage, default_log, root=tdir)
|
||||
|
||||
|
||||
epub_allow_rendered_cover = True
|
||||
|
||||
|
||||
@contextmanager
|
||||
def epub_metadata_settings(allow_rendered_cover=epub_allow_rendered_cover):
|
||||
global epub_allow_rendered_cover
|
||||
oarc = epub_allow_rendered_cover
|
||||
epub_allow_rendered_cover = allow_rendered_cover
|
||||
try:
|
||||
yield
|
||||
finally:
|
||||
epub_allow_rendered_cover = oarc
|
||||
|
||||
|
||||
def get_cover(raster_cover, first_spine_item, reader):
|
||||
zf = reader.archive
|
||||
|
||||
@ -241,6 +255,7 @@ def get_cover(raster_cover, first_spine_item, reader):
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
if epub_allow_rendered_cover:
|
||||
return render_cover(first_spine_item, zf, reader=reader)
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user