From 614e30402994243374415a4ec4b7de6e0355d14f Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 6 Jul 2016 10:47:34 +0530 Subject: [PATCH] A spot of minor refactoring --- src/calibre/ebooks/metadata/opf2.py | 16 ++++++++++------ src/calibre/ebooks/metadata/opf3.py | 4 +++- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/calibre/ebooks/metadata/opf2.py b/src/calibre/ebooks/metadata/opf2.py index 2ee4d556e7..3d8be41064 100644 --- a/src/calibre/ebooks/metadata/opf2.py +++ b/src/calibre/ebooks/metadata/opf2.py @@ -1152,6 +1152,15 @@ class OPF(object): # {{{ if os.access(os.path.join(self.base_dir, prefix+suffix), os.R_OK): return cpath + @property + def epub3_raster_cover(self): + for item in self.itermanifest(): + props = set((item.get('properties') or '').lower().split()) + if 'cover-image' in props: + mt = item.get('media-type', '') + if mt and 'xml' not in mt and 'html' not in mt: + return item.get('href', None) + @property def raster_cover(self): covers = self.raster_cover_path(self.metadata) @@ -1168,12 +1177,7 @@ class OPF(object): # {{{ if mt and 'xml' not in mt and 'html' not in mt: return item.get('href', None) elif self.package_version >= 3.0: - for item in self.itermanifest(): - props = set((item.get('properties') or '').lower().split()) - if 'cover-image' in props: - mt = item.get('media-type', '') - if mt and 'xml' not in mt and 'html' not in mt: - return item.get('href', None) + return self.epub3_raster_cover @property def guide_raster_cover(self): diff --git a/src/calibre/ebooks/metadata/opf3.py b/src/calibre/ebooks/metadata/opf3.py index 82b8ad3e54..7bfd51becc 100644 --- a/src/calibre/ebooks/metadata/opf3.py +++ b/src/calibre/ebooks/metadata/opf3.py @@ -116,7 +116,9 @@ def simple_text(f): return normalize_whitespace(f(*args, **kw)) return wrapper -def items_with_property(root, q, prefixes): +def items_with_property(root, q, prefixes=None): + if prefixes is None: + prefixes = read_prefixes(root) q = expand_prefix(q, known_prefixes).lower() for item in XPath("./opf:manifest/opf:item[@properties]")(root): for prop in (item.get('properties') or '').lower().split():