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):
|
def set_metadata(self, stream, mi, type):
|
||||||
from calibre.ebooks.metadata.epub import set_metadata
|
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):
|
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):
|
def set_file_type_metadata(stream, mi, ftype, report_error=None):
|
||||||
ftype = ftype.lower().strip()
|
ftype = ftype.lower().strip()
|
||||||
if ftype in _metadata_writers:
|
if ftype in _metadata_writers:
|
||||||
|
customization = config['plugin_customization']
|
||||||
for plugin in _metadata_writers[ftype]:
|
for plugin in _metadata_writers[ftype]:
|
||||||
if not is_disabled(plugin):
|
if not is_disabled(plugin):
|
||||||
with plugin:
|
with plugin:
|
||||||
try:
|
try:
|
||||||
plugin.apply_null = apply_null_metadata.apply_null
|
plugin.apply_null = apply_null_metadata.apply_null
|
||||||
plugin.force_identifiers = force_identifiers.force_identifiers
|
plugin.force_identifiers = force_identifiers.force_identifiers
|
||||||
|
plugin.site_customization = customization.get(plugin.name, '')
|
||||||
plugin.set_metadata(stream, mi, ftype.lower().strip())
|
plugin.set_metadata(stream, mi, ftype.lower().strip())
|
||||||
break
|
break
|
||||||
except:
|
except:
|
||||||
|
@ -260,7 +260,7 @@ def serialize_cover_data(new_cdata, cpath):
|
|||||||
from calibre.utils.img import save_cover_data_to
|
from calibre.utils.img import save_cover_data_to
|
||||||
return save_cover_data_to(new_cdata, data_fmt=os.path.splitext(cpath)[1][1:])
|
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)
|
stream.seek(0)
|
||||||
reader = get_zip_reader(stream, root=os.getcwdu())
|
reader = get_zip_reader(stream, root=os.getcwdu())
|
||||||
new_cdata = None
|
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(
|
opfbytes, ver, raster_cover = set_metadata_opf(
|
||||||
reader.read_bytes(reader.opf_path), mi, cover_prefix=posixpath.dirname(reader.opf_path),
|
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
|
cpath = None
|
||||||
replacements = {}
|
replacements = {}
|
||||||
if new_cdata and raster_cover:
|
if new_cdata and raster_cover:
|
||||||
|
@ -25,7 +25,8 @@ def get_metadata(stream):
|
|||||||
opf = OPF(None, preparsed_opf=root, read_toc=False)
|
opf = OPF(None, preparsed_opf=root, read_toc=False)
|
||||||
return opf.to_book_metadata(), ver, opf.raster_cover, opf.first_spine_item()
|
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)
|
mi = MetaInformation(mi)
|
||||||
for x in ('guide', 'toc', 'manifest', 'spine'):
|
for x in ('guide', 'toc', 'manifest', 'spine'):
|
||||||
setattr(mi, x, None)
|
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:
|
if update_timestamp and mi.timestamp is not None:
|
||||||
opf.timestamp = mi.timestamp
|
opf.timestamp = mi.timestamp
|
||||||
raster_cover = opf.raster_cover
|
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
|
guide_raster_cover = opf.guide_raster_cover
|
||||||
i = None
|
i = None
|
||||||
if guide_raster_cover is not 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:
|
with pretty_print:
|
||||||
return opf.render(), raster_cover
|
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):
|
if isinstance(stream, bytes):
|
||||||
stream = DummyFile(stream)
|
stream = DummyFile(stream)
|
||||||
root = parse_opf(stream)
|
root = parse_opf(stream)
|
||||||
ver = parse_opf_version(root.get('version'))
|
ver = parse_opf_version(root.get('version'))
|
||||||
opfbytes, raster_cover = set_metadata_opf2(
|
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
|
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)
|
set_identifiers(root, prefixes, refines, mi.identifiers, force_identifiers=force_identifiers)
|
||||||
pretty_print_opf(root)
|
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)
|
root = parse_opf(stream)
|
||||||
return apply_metadata(
|
return apply_metadata(
|
||||||
root, mi, cover_prefix=cover_prefix, cover_data=cover_data,
|
root, mi, cover_prefix=cover_prefix, cover_data=cover_data,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user