From 989e4de74c8741ce53a70be1300c1c4b6574fbe6 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Mon, 14 Oct 2019 10:32:38 +0530 Subject: [PATCH] Viewer: Dont generate covers for books that dont have a cover --- src/calibre/srv/render_book.py | 2 +- src/pyj/read_book/db.pyj | 5 ++++- src/pyj/read_book/ui.pyj | 14 ++++++++++++-- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/calibre/srv/render_book.py b/src/calibre/srv/render_book.py index 6989231d7d..f44eb5d458 100644 --- a/src/calibre/srv/render_book.py +++ b/src/calibre/srv/render_book.py @@ -204,7 +204,7 @@ class Container(ContainerBase): tweak_mode = True - def __init__(self, path_to_ebook, tdir, log=None, book_hash=None, save_bookmark_data=False, book_metadata=None, allow_no_cover=False): + def __init__(self, path_to_ebook, tdir, log=None, book_hash=None, save_bookmark_data=False, book_metadata=None, allow_no_cover=True): log = log or default_log self.allow_no_cover = allow_no_cover book_fmt, opfpath, input_fmt = extract_book(path_to_ebook, tdir, log=log) diff --git a/src/pyj/read_book/db.pyj b/src/pyj/read_book/db.pyj index 342687ff9a..51cb827fd9 100644 --- a/src/pyj/read_book/db.pyj +++ b/src/pyj/read_book/db.pyj @@ -221,7 +221,10 @@ class DB: store_as_text = xhr.responseType is 'text' or not xhr.responseType fname = file_store_name(book, name) needs_encoding = not store_as_text and not self.supports_blobs - book.stored_files[fname] = {'encoded':needs_encoding, 'mimetype':book.manifest.files[name].mimetype, 'store_as_text':store_as_text} + mt = book.manifest.files[name]?.mimetype + if not mt and is_cover: + mt = 'image/jpeg' + book.stored_files[fname] = {'encoded':needs_encoding, 'mimetype':mt, 'store_as_text':store_as_text} if is_cover: self.store_cover(book, needs_encoding, xhr.response, name, fname, proceed) else: diff --git a/src/pyj/read_book/ui.pyj b/src/pyj/read_book/ui.pyj index 0ca4101d0b..65eaa8a18a 100644 --- a/src/pyj/read_book/ui.pyj +++ b/src/pyj/read_book/ui.pyj @@ -290,6 +290,16 @@ class ReadUI: progress_track = {} pbar.setAttribute('max', total + '') raster_cover_name = book.manifest.raster_cover_name + if not raster_cover_name: + nnum = 1 + base = 'raster-cover-image-{}.jpg' + inserted_name = base.format(nnum) + while inserted_name in files_left: + nnum += 1 + inserted_name = base.format(nnum) + raster_cover_name = inserted_name + files_left.add(raster_cover_name) + raster_cover_size = 0 def update_progress(): @@ -338,7 +348,7 @@ class ReadUI: if this is raster_cover_name and not cover_total_updated: raster_cover_size = ftotal cover_total_updated = True - total = total - files[raster_cover_name].size + raster_cover_size + total = total - (files[raster_cover_name]?.size or 0) + raster_cover_size pbar.setAttribute('max', total + '') progress_track[this] = loaded update_progress() @@ -346,7 +356,7 @@ class ReadUI: def start_download(fname, path): xhr = ajax(path, on_complete.bind(fname), on_progress=on_progress.bind(fname), query=query, progress_totals_needed=fname is raster_cover_name) xhr.responseType = 'text' - if not book.manifest.files[fname].is_virtualized: + if not book.manifest.files[fname]?.is_virtualized: xhr.responseType = 'blob' if self.db.supports_blobs else 'arraybuffer' xhr.send() self.downloads_in_progress.append(xhr)