Viewer: Dont generate covers for books that dont have a cover

This commit is contained in:
Kovid Goyal 2019-10-14 10:32:38 +05:30
parent b20f1d3fd7
commit 989e4de74c
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
3 changed files with 17 additions and 4 deletions

View File

@ -204,7 +204,7 @@ class Container(ContainerBase):
tweak_mode = True 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 log = log or default_log
self.allow_no_cover = allow_no_cover self.allow_no_cover = allow_no_cover
book_fmt, opfpath, input_fmt = extract_book(path_to_ebook, tdir, log=log) book_fmt, opfpath, input_fmt = extract_book(path_to_ebook, tdir, log=log)

View File

@ -221,7 +221,10 @@ class DB:
store_as_text = xhr.responseType is 'text' or not xhr.responseType store_as_text = xhr.responseType is 'text' or not xhr.responseType
fname = file_store_name(book, name) fname = file_store_name(book, name)
needs_encoding = not store_as_text and not self.supports_blobs 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: if is_cover:
self.store_cover(book, needs_encoding, xhr.response, name, fname, proceed) self.store_cover(book, needs_encoding, xhr.response, name, fname, proceed)
else: else:

View File

@ -290,6 +290,16 @@ class ReadUI:
progress_track = {} progress_track = {}
pbar.setAttribute('max', total + '') pbar.setAttribute('max', total + '')
raster_cover_name = book.manifest.raster_cover_name 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 raster_cover_size = 0
def update_progress(): def update_progress():
@ -338,7 +348,7 @@ class ReadUI:
if this is raster_cover_name and not cover_total_updated: if this is raster_cover_name and not cover_total_updated:
raster_cover_size = ftotal raster_cover_size = ftotal
cover_total_updated = True 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 + '') pbar.setAttribute('max', total + '')
progress_track[this] = loaded progress_track[this] = loaded
update_progress() update_progress()
@ -346,7 +356,7 @@ class ReadUI:
def start_download(fname, path): 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 = 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' 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.responseType = 'blob' if self.db.supports_blobs else 'arraybuffer'
xhr.send() xhr.send()
self.downloads_in_progress.append(xhr) self.downloads_in_progress.append(xhr)