Fix #1593520 [metadata refactoring in HEAD broke polish book](https://bugs.launchpad.net/calibre/+bug/1593520)

This commit is contained in:
Kovid Goyal 2016-06-17 07:54:09 +05:30
parent 390884076a
commit 1c7012507c
3 changed files with 7 additions and 13 deletions

View File

@ -276,7 +276,7 @@ def set_metadata(stream, mi, apply_null=False, update_timestamp=False, force_ide
pass
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)
cpath = None
replacements = {}

View File

@ -64,7 +64,7 @@ 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, 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):
stream = DummyFile(stream)
root = parse_opf(stream)

View File

@ -7,7 +7,7 @@ __license__ = 'GPL v3'
__copyright__ = '2013, Kovid Goyal <kovid at kovidgoyal.net>'
__docformat__ = 'restructuredtext en'
import re, sys, os, time
import re, sys, time
from collections import namedtuple
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):
from calibre.ebooks.metadata.opf2 import OPF
from calibre.ebooks.metadata.epub import update_metadata
opfpath = ebook.name_to_abspath(ebook.opf_name)
from calibre.ebooks.metadata.opf import get_metadata, set_metadata
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,
unquote_urls=False)
mi = OPF(ns, unquote_urls=False,
populate_spine=False).to_book_metadata()
mi = get_metadata(ns)[0]
mi.cover, mi.cover_data = None, (None, None)
update_metadata(opf, mi, apply_null=True, update_timestamp=True)
opfbytes = set_metadata(stream, mi, apply_null=True, update_timestamp=True)[0]
stream.seek(0)
stream.truncate()
stream.write(opf.render())
stream.write(opfbytes)
def polish_one(ebook, opts, report, customization=None):
rt = lambda x: report('\n### ' + x)