mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
EPUB metadata: Add an option to disable adding of cover images to EPUB files that declare no cover image in their metadata (Preferences->Plugins->Customize the Set EPUB metadata plugin)
This commit is contained in:
parent
8ff668d26c
commit
c72a6315c2
@ -432,7 +432,13 @@ class EPUBMetadataWriter(MetadataWriterPlugin):
|
||||
|
||||
def set_metadata(self, stream, mi, type):
|
||||
from calibre.ebooks.metadata.epub import set_metadata
|
||||
set_metadata(stream, mi, apply_null=self.apply_null, force_identifiers=self.force_identifiers)
|
||||
q = self.site_customization or ''
|
||||
set_metadata(stream, mi, apply_null=self.apply_null, force_identifiers=self.force_identifiers, add_missing_cover='disable-add-missing-cover' != q)
|
||||
|
||||
def customization_help(self, gui=False):
|
||||
return _('Enter {}disable-add-missing-cover{} below to have the EPUB metadata writer plugin not'
|
||||
' add cover images to EPUB files that have no existing cover image.').format(
|
||||
'<i>' if gui else '', '</i>' if gui else '')
|
||||
|
||||
class FB2MetadataWriter(MetadataWriterPlugin):
|
||||
|
||||
|
@ -383,12 +383,14 @@ def get_file_type_metadata(stream, ftype):
|
||||
def set_file_type_metadata(stream, mi, ftype, report_error=None):
|
||||
ftype = ftype.lower().strip()
|
||||
if ftype in _metadata_writers:
|
||||
customization = config['plugin_customization']
|
||||
for plugin in _metadata_writers[ftype]:
|
||||
if not is_disabled(plugin):
|
||||
with plugin:
|
||||
try:
|
||||
plugin.apply_null = apply_null_metadata.apply_null
|
||||
plugin.force_identifiers = force_identifiers.force_identifiers
|
||||
plugin.site_customization = customization.get(plugin.name, '')
|
||||
plugin.set_metadata(stream, mi, ftype.lower().strip())
|
||||
break
|
||||
except:
|
||||
|
@ -260,7 +260,7 @@ def serialize_cover_data(new_cdata, cpath):
|
||||
from calibre.utils.img import save_cover_data_to
|
||||
return save_cover_data_to(new_cdata, data_fmt=os.path.splitext(cpath)[1][1:])
|
||||
|
||||
def set_metadata(stream, mi, apply_null=False, update_timestamp=False, force_identifiers=False):
|
||||
def set_metadata(stream, mi, apply_null=False, update_timestamp=False, force_identifiers=False, add_missing_cover=True):
|
||||
stream.seek(0)
|
||||
reader = get_zip_reader(stream, root=os.getcwdu())
|
||||
new_cdata = None
|
||||
@ -277,7 +277,8 @@ def set_metadata(stream, mi, apply_null=False, update_timestamp=False, force_ide
|
||||
|
||||
opfbytes, ver, raster_cover = set_metadata_opf(
|
||||
reader.read_bytes(reader.opf_path), mi, cover_prefix=posixpath.dirname(reader.opf_path),
|
||||
cover_data=new_cdata, apply_null=apply_null, update_timestamp=update_timestamp, force_identifiers=force_identifiers)
|
||||
cover_data=new_cdata, apply_null=apply_null, update_timestamp=update_timestamp,
|
||||
force_identifiers=force_identifiers, add_missing_cover=add_missing_cover)
|
||||
cpath = None
|
||||
replacements = {}
|
||||
if new_cdata and raster_cover:
|
||||
|
@ -25,7 +25,8 @@ def get_metadata(stream):
|
||||
opf = OPF(None, preparsed_opf=root, read_toc=False)
|
||||
return opf.to_book_metadata(), ver, opf.raster_cover, opf.first_spine_item()
|
||||
|
||||
def set_metadata_opf2(root, cover_prefix, mi, opf_version, cover_data=None, apply_null=False, update_timestamp=False, force_identifiers=False):
|
||||
def set_metadata_opf2(root, cover_prefix, mi, opf_version,
|
||||
cover_data=None, apply_null=False, update_timestamp=False, force_identifiers=False, add_missing_cover=True):
|
||||
mi = MetaInformation(mi)
|
||||
for x in ('guide', 'toc', 'manifest', 'spine'):
|
||||
setattr(mi, x, None)
|
||||
@ -45,7 +46,7 @@ def set_metadata_opf2(root, cover_prefix, mi, opf_version, cover_data=None, appl
|
||||
if update_timestamp and mi.timestamp is not None:
|
||||
opf.timestamp = mi.timestamp
|
||||
raster_cover = opf.raster_cover
|
||||
if raster_cover is None and cover_data is not None:
|
||||
if raster_cover is None and cover_data is not None and add_missing_cover:
|
||||
guide_raster_cover = opf.guide_raster_cover
|
||||
i = None
|
||||
if guide_raster_cover is not None:
|
||||
@ -71,11 +72,13 @@ def set_metadata_opf2(root, cover_prefix, mi, opf_version, cover_data=None, appl
|
||||
with pretty_print:
|
||||
return opf.render(), raster_cover
|
||||
|
||||
def set_metadata(stream, mi, cover_prefix='', cover_data=None, apply_null=False, update_timestamp=False, force_identifiers=False):
|
||||
def set_metadata(stream, mi, cover_prefix='', cover_data=None, apply_null=False, update_timestamp=False, force_identifiers=False, add_missing_cover=True):
|
||||
if isinstance(stream, bytes):
|
||||
stream = DummyFile(stream)
|
||||
root = parse_opf(stream)
|
||||
ver = parse_opf_version(root.get('version'))
|
||||
opfbytes, raster_cover = set_metadata_opf2(
|
||||
root, cover_prefix, mi, ver, cover_data=cover_data, apply_null=apply_null, update_timestamp=update_timestamp, force_identifiers=force_identifiers)
|
||||
root, cover_prefix, mi, ver, cover_data=cover_data,
|
||||
apply_null=apply_null, update_timestamp=update_timestamp,
|
||||
force_identifiers=force_identifiers, add_missing_cover=add_missing_cover)
|
||||
return opfbytes, ver, raster_cover
|
||||
|
@ -196,7 +196,7 @@ def apply_metadata(root, mi, cover_prefix='', cover_data=None, apply_null=False,
|
||||
set_identifiers(root, prefixes, refines, mi.identifiers, force_identifiers=force_identifiers)
|
||||
pretty_print_opf(root)
|
||||
|
||||
def set_metadata(stream, mi, cover_prefix='', cover_data=None, apply_null=False, update_timestamp=False, force_identifiers=False):
|
||||
def set_metadata(stream, mi, cover_prefix='', cover_data=None, apply_null=False, update_timestamp=False, force_identifiers=False, add_missing_cover=True):
|
||||
root = parse_opf(stream)
|
||||
return apply_metadata(
|
||||
root, mi, cover_prefix=cover_prefix, cover_data=cover_data,
|
||||
|
Loading…
x
Reference in New Issue
Block a user