From 1c7012507c88f1728f209bfe3418f6ea78ea7cda Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 17 Jun 2016 07:54:09 +0530 Subject: [PATCH] Fix #1593520 [metadata refactoring in HEAD broke polish book](https://bugs.launchpad.net/calibre/+bug/1593520) --- src/calibre/ebooks/metadata/epub.py | 2 +- src/calibre/ebooks/metadata/opf.py | 2 +- src/calibre/ebooks/oeb/polish/main.py | 16 +++++----------- 3 files changed, 7 insertions(+), 13 deletions(-) diff --git a/src/calibre/ebooks/metadata/epub.py b/src/calibre/ebooks/metadata/epub.py index ae0d9197a7..e643ea0087 100644 --- a/src/calibre/ebooks/metadata/epub.py +++ b/src/calibre/ebooks/metadata/epub.py @@ -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 = {} diff --git a/src/calibre/ebooks/metadata/opf.py b/src/calibre/ebooks/metadata/opf.py index a0a9f963c9..e4a88580ae 100644 --- a/src/calibre/ebooks/metadata/opf.py +++ b/src/calibre/ebooks/metadata/opf.py @@ -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) diff --git a/src/calibre/ebooks/oeb/polish/main.py b/src/calibre/ebooks/oeb/polish/main.py index d60a3151d1..5c889b9a86 100644 --- a/src/calibre/ebooks/oeb/polish/main.py +++ b/src/calibre/ebooks/oeb/polish/main.py @@ -7,7 +7,7 @@ __license__ = 'GPL v3' __copyright__ = '2013, Kovid Goyal ' __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)