mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-08 02:34:06 -04:00
Fix #1593520 [metadata refactoring in HEAD broke polish book](https://bugs.launchpad.net/calibre/+bug/1593520)
This commit is contained in:
parent
390884076a
commit
1c7012507c
@ -276,7 +276,7 @@ def set_metadata(stream, mi, apply_null=False, update_timestamp=False, force_ide
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
opfbytes, ver, raster_cover = set_metadata_opf(
|
opfbytes, ver, raster_cover = set_metadata_opf(
|
||||||
reader.read_bytes(reader.opf_path), posixpath.dirname(reader.opf_path), mi,
|
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)
|
||||||
cpath = None
|
cpath = None
|
||||||
replacements = {}
|
replacements = {}
|
||||||
|
@ -64,7 +64,7 @@ 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, cover_prefix, mi, 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):
|
||||||
if isinstance(stream, bytes):
|
if isinstance(stream, bytes):
|
||||||
stream = DummyFile(stream)
|
stream = DummyFile(stream)
|
||||||
root = parse_opf(stream)
|
root = parse_opf(stream)
|
||||||
|
@ -7,7 +7,7 @@ __license__ = 'GPL v3'
|
|||||||
__copyright__ = '2013, Kovid Goyal <kovid at kovidgoyal.net>'
|
__copyright__ = '2013, Kovid Goyal <kovid at kovidgoyal.net>'
|
||||||
__docformat__ = 'restructuredtext en'
|
__docformat__ = 'restructuredtext en'
|
||||||
|
|
||||||
import re, sys, os, time
|
import re, sys, time
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
from functools import partial
|
from functools import partial
|
||||||
|
|
||||||
@ -126,20 +126,14 @@ CLI_HELP = {x:hfix(x, re.sub('<.*?>', '', y)) for x, y in HELP.iteritems()}
|
|||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
def update_metadata(ebook, new_opf):
|
def update_metadata(ebook, new_opf):
|
||||||
from calibre.ebooks.metadata.opf2 import OPF
|
from calibre.ebooks.metadata.opf import get_metadata, set_metadata
|
||||||
from calibre.ebooks.metadata.epub import update_metadata
|
|
||||||
opfpath = ebook.name_to_abspath(ebook.opf_name)
|
|
||||||
with ebook.open(ebook.opf_name, 'r+b') as stream, open(new_opf, 'rb') as ns:
|
with ebook.open(ebook.opf_name, 'r+b') as stream, open(new_opf, 'rb') as ns:
|
||||||
opf = OPF(stream, basedir=os.path.dirname(opfpath), populate_spine=False,
|
mi = get_metadata(ns)[0]
|
||||||
unquote_urls=False)
|
|
||||||
mi = OPF(ns, unquote_urls=False,
|
|
||||||
populate_spine=False).to_book_metadata()
|
|
||||||
mi.cover, mi.cover_data = None, (None, None)
|
mi.cover, mi.cover_data = None, (None, None)
|
||||||
|
opfbytes = set_metadata(stream, mi, apply_null=True, update_timestamp=True)[0]
|
||||||
update_metadata(opf, mi, apply_null=True, update_timestamp=True)
|
|
||||||
stream.seek(0)
|
stream.seek(0)
|
||||||
stream.truncate()
|
stream.truncate()
|
||||||
stream.write(opf.render())
|
stream.write(opfbytes)
|
||||||
|
|
||||||
def polish_one(ebook, opts, report, customization=None):
|
def polish_one(ebook, opts, report, customization=None):
|
||||||
rt = lambda x: report('\n### ' + x)
|
rt = lambda x: report('\n### ' + x)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user