From 49a66615e8f5732f52f4e1c851aa2f7f2814fe37 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Mon, 20 Jul 2015 12:01:10 +0530 Subject: [PATCH] Fix covers not being read from some TXTZ files. Fixes #1475984 [could not read cover from txtz format](https://bugs.launchpad.net/calibre/+bug/1475984) --- src/calibre/ebooks/metadata/extz.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) 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