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'],
|
c.add_opt('get_cover', ['--get-cover'],
|
||||||
help=_('Get the cover from the e-book and save it at as the '
|
help=_('Get the cover from the e-book and save it at as the '
|
||||||
'specified file.'))
|
'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'],
|
c.add_opt('to_opf', ['--to-opf'],
|
||||||
help=_('Specify the name of an OPF file. The metadata will '
|
help=_('Specify the name of an OPF file. The metadata will '
|
||||||
'be written to the OPF file.'))
|
'be written to the OPF file.'))
|
||||||
@ -182,7 +185,8 @@ def main(args=sys.argv):
|
|||||||
if getattr(opts, pref.name) is not None:
|
if getattr(opts, pref.name) is not None:
|
||||||
trying_to_set = True
|
trying_to_set = True
|
||||||
break
|
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)
|
mi = get_metadata(stream, stream_type, force_read_metadata=True)
|
||||||
if trying_to_set:
|
if trying_to_set:
|
||||||
prints(_('Original metadata')+'::')
|
prints(_('Original metadata')+'::')
|
||||||
|
@ -10,7 +10,7 @@ __copyright__ = '2008, Kovid Goyal <kovid at kovidgoyal.net>'
|
|||||||
import io
|
import io
|
||||||
import os
|
import os
|
||||||
import posixpath
|
import posixpath
|
||||||
from contextlib import closing, suppress
|
from contextlib import closing, contextmanager, suppress
|
||||||
|
|
||||||
from calibre import CurrentDir
|
from calibre import CurrentDir
|
||||||
from calibre.ebooks.metadata.opf import get_metadata as get_metadata_from_opf
|
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)
|
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):
|
def get_cover(raster_cover, first_spine_item, reader):
|
||||||
zf = reader.archive
|
zf = reader.archive
|
||||||
|
|
||||||
@ -241,7 +255,8 @@ def get_cover(raster_cover, first_spine_item, reader):
|
|||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
return render_cover(first_spine_item, zf, reader=reader)
|
if epub_allow_rendered_cover:
|
||||||
|
return render_cover(first_spine_item, zf, reader=reader)
|
||||||
|
|
||||||
|
|
||||||
def get_metadata(stream, extract_cover=True):
|
def get_metadata(stream, extract_cover=True):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user