From 272437e901b0840f94f90699244a4d3e067448f4 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Mon, 13 Jul 2009 17:11:21 -0600 Subject: [PATCH] EPUB Input:Fix handling of user specified cover. Also set --page-breaks-before to / by default for EPUB input, since EPUB files typically already have the needed page breaks --- src/calibre/ebooks/epub/input.py | 4 +++- src/calibre/ebooks/oeb/transforms/metadata.py | 14 ++++++++------ 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/calibre/ebooks/epub/input.py b/src/calibre/ebooks/epub/input.py index 3405e1ef4e..dc2aa230d5 100644 --- a/src/calibre/ebooks/epub/input.py +++ b/src/calibre/ebooks/epub/input.py @@ -8,7 +8,7 @@ from itertools import cycle from lxml import etree -from calibre.customize.conversion import InputFormatPlugin +from calibre.customize.conversion import InputFormatPlugin, OptionRecommendation class EPUBInput(InputFormatPlugin): @@ -17,6 +17,8 @@ class EPUBInput(InputFormatPlugin): description = 'Convert EPUB files (.epub) to HTML' file_types = set(['epub']) + recommendations = set([('page_breaks_before', '/', OptionRecommendation.MED)]) + @classmethod def decrypt_font(cls, key, path): raw = open(path, 'rb').read() diff --git a/src/calibre/ebooks/oeb/transforms/metadata.py b/src/calibre/ebooks/oeb/transforms/metadata.py index e91c4c3140..0969509626 100644 --- a/src/calibre/ebooks/oeb/transforms/metadata.py +++ b/src/calibre/ebooks/oeb/transforms/metadata.py @@ -87,6 +87,7 @@ class MergeMetadata(object): if cover_id is not None: m.add('cover', cover_id) + def set_cover(self, mi, prefer_metadata_cover): cdata = '' if mi.cover and os.access(mi.cover, os.R_OK): @@ -94,12 +95,13 @@ class MergeMetadata(object): elif mi.cover_data and mi.cover_data[-1]: cdata = mi.cover_data[1] id = None - if 'cover' in self.oeb.guide: - href = self.oeb.guide['cover'].href - id = self.oeb.manifest.hrefs[href].id - if not prefer_metadata_cover and cdata: - self.oeb.manifest.hrefs[href]._data = cdata - elif cdata: + old_cover = self.oeb.guide.remove('cover') + self.oeb.guide.remove('titlepage') + if old_cover is not None: + if old_cover.href in self.oeb.manifest.hrefs: + item = self.oeb.manifest.hrefs[old_cover.href] + self.oeb.manifest.remove(item) + if cdata: id, href = self.oeb.manifest.generate('cover', 'cover.jpg') self.oeb.manifest.add(id, href, 'image/jpeg', data=cdata) self.oeb.guide.add('cover', 'Cover', href)