diff --git a/src/calibre/ebooks/metadata/extz.py b/src/calibre/ebooks/metadata/extz.py index f3725027a9..c7dd8d356b 100644 --- a/src/calibre/ebooks/metadata/extz.py +++ b/src/calibre/ebooks/metadata/extz.py @@ -22,7 +22,6 @@ def get_metadata(stream, extract_cover=True): ''' mi = MetaInformation(_('Unknown'), [_('Unknown')]) stream.seek(0) - try: with ZipFile(stream) as zf: opf_name = get_first_opf_name(zf) @@ -31,9 +30,18 @@ def get_metadata(stream, extract_cover=True): mi = opf.to_book_metadata() if extract_cover: cover_href = opf.raster_cover + if not cover_href: + for meta in opf.metadata.xpath('//*[local-name()="meta" and @name="cover"]'): + val = meta.get('content') + if val.rpartition('.')[2].lower() in {'jpeg', 'jpg', 'png'}: + cover_href = val + break if cover_href: - mi.cover_data = (os.path.splitext(cover_href)[1], zf.read(cover_href)) - except: + try: + mi.cover_data = (os.path.splitext(cover_href)[1], zf.read(cover_href)) + except Exception: + pass + except Exception: return mi return mi