From 9bc085a23eaf121367b00945fbe19599dd7b74cd Mon Sep 17 00:00:00 2001 From: Ozzieisaacs Date: Sat, 2 May 2020 09:32:53 +0200 Subject: [PATCH] Fixes for comic reader --- cps/about.py | 3 ++- cps/converter.py | 13 +++++++---- cps/editbooks.py | 5 ++++- cps/helper.py | 3 +-- cps/kobo.py | 3 +++ cps/templates/config_edit.html | 2 -- cps/worker.py | 41 ++++++++++------------------------ 7 files changed, 31 insertions(+), 39 deletions(-) diff --git a/cps/about.py b/cps/about.py index 2f1d4b43..863ec871 100644 --- a/cps/about.py +++ b/cps/about.py @@ -89,6 +89,7 @@ def stats(): authors = db.session.query(db.Authors).count() categorys = db.session.query(db.Tags).count() series = db.session.query(db.Series).count() - _VERSIONS['ebook converter'] = _(converter.get_version()) + _VERSIONS['ebook converter'] = _(converter.get_calibre_version()) + _VERSIONS['unrar'] = _(converter.get_version()) return render_title_template('stats.html', bookcounter=counter, authorcounter=authors, versions=_VERSIONS, categorycounter=categorys, seriecounter=series, title=_(u"Statistics"), page="stat") diff --git a/cps/converter.py b/cps/converter.py index d3482e5f..b8ad1372 100644 --- a/cps/converter.py +++ b/cps/converter.py @@ -48,10 +48,15 @@ def _get_command_version(path, pattern, argument=None): return _NOT_INSTALLED -def get_version(): +def get_calibre_version(): version = None - if config.config_ebookconverter == 1: - version = _get_command_version(config.config_converterpath, r'Amazon kindlegen\(') - elif config.config_ebookconverter == 2: + if config.config_ebookconverter == 2: + version = _get_command_version(config.config_converterpath, r'ebook-convert.*\(calibre', '--version') + return version or _NOT_CONFIGURED + + +def get_unrar_version(): + version = None + if config.config_ebookconverter == 2: version = _get_command_version(config.config_converterpath, r'ebook-convert.*\(calibre', '--version') return version or _NOT_CONFIGURED diff --git a/cps/editbooks.py b/cps/editbooks.py index d66763bf..8d5c9d7e 100644 --- a/cps/editbooks.py +++ b/cps/editbooks.py @@ -719,7 +719,6 @@ def upload(): os.path.join(filepath, "cover.jpg")) else: has_cover = 1 - move(meta.cover, os.path.join(filepath, "cover.jpg")) # handle authors is_author = db.session.query(db.Authors).filter(db.Authors.name == authr).first() @@ -796,6 +795,10 @@ def upload(): if config.config_use_google_drive: gdriveutils.updateGdriveCalibreFromLocal() error = helper.update_dir_stucture(book.id, config.config_calibre_dir) + + # move cover to final directory, including book id + if has_cover: + move(meta.cover, os.path.join(filepath+ ' ({})'.format(book_id), "cover.jpg")) db.session.commit() if config.config_use_google_drive: gdriveutils.updateGdriveCalibreFromLocal() diff --git a/cps/helper.py b/cps/helper.py index 416921db..0b4c17d2 100644 --- a/cps/helper.py +++ b/cps/helper.py @@ -173,14 +173,13 @@ def check_send_to_kindle(entry): bookformats.append({'format': 'Pdf', 'convert': 0, 'text': _('Send %(format)s to Kindle', format='Pdf')}) - if config.config_ebookconverter >= 1: + if config.config_ebookconverter == 2: if 'EPUB' in formats and not 'MOBI' in formats: bookformats.append({'format': 'Mobi', 'convert':1, 'text': _('Convert %(orig)s to %(format)s and send to Kindle', orig='Epub', format='Mobi')}) - if config.config_ebookconverter == 2: if 'AZW3' in formats and not 'MOBI' in formats: bookformats.append({'format': 'Mobi', 'convert': 2, diff --git a/cps/kobo.py b/cps/kobo.py index 2e3c1601..3de410d9 100644 --- a/cps/kobo.py +++ b/cps/kobo.py @@ -949,12 +949,15 @@ def HandleInitRequest(): book_uuid="{ImageId}", width="{width}", height="{height}", + Quality='{Quality}', + isGreyscale='isGreyscale', _external=True)) kobo_resources["image_url_template"] = unquote(url_for("kobo.HandleCoverImageRequest", auth_token=kobo_auth.get_auth_token(), book_uuid="{ImageId}", width="{width}", height="{height}", + isGreyscale='false', _external=True)) diff --git a/cps/templates/config_edit.html b/cps/templates/config_edit.html index f3187011..33d4a5e7 100644 --- a/cps/templates/config_edit.html +++ b/cps/templates/config_edit.html @@ -329,8 +329,6 @@
-
-
diff --git a/cps/worker.py b/cps/worker.py index 25fe0f6f..04da7c92 100644 --- a/cps/worker.py +++ b/cps/worker.py @@ -297,11 +297,6 @@ class WorkerThread(threading.Thread): return try: - # check which converter to use kindlegen is "1" - if format_old_ext == '.epub' and format_new_ext == '.mobi': - if config.config_ebookconverter == 1: - command = [config.config_converterpath, file_path + u'.epub'] - quotes = [1] if config.config_ebookconverter == 2: # Linux py2.7 encode as list without quotes no empty element for parameters # linux py3.x no encode and as list without quotes no empty element for parameters @@ -324,28 +319,17 @@ class WorkerThread(threading.Thread): self._handleError(_(u"Ebook-converter failed: %(error)s", error=e)) return - if config.config_ebookconverter == 1: - nextline = p.communicate()[0] - # Format of error message (kindlegen translates its output texts): - # Error(prcgen):E23006: Language not recognized in metadata.The dc:Language field is mandatory.Aborting. - conv_error = re.search(r".*\(.*\):(E\d+):\s(.*)", nextline, re.MULTILINE) - # If error occoures, store error message for logfile - if conv_error: - error_message = _(u"Kindlegen failed with Error %(error)s. Message: %(message)s", - error=conv_error.group(1), message=conv_error.group(2).strip()) - log.debug("convert_kindlegen: %s", nextline) - else: - while p.poll() is None: - nextline = p.stdout.readline() - if os.name == 'nt' and sys.version_info < (3, 0): - nextline = nextline.decode('windows-1252') - elif os.name == 'posix' and sys.version_info < (3, 0): - nextline = nextline.decode('utf-8') - log.debug(nextline.strip('\r\n')) - # parse progress string from calibre-converter - progress = re.search(r"(\d+)%\s.*", nextline) - if progress: - self.UIqueue[index]['progress'] = progress.group(1) + ' %' + while p.poll() is None: + nextline = p.stdout.readline() + if os.name == 'nt' and sys.version_info < (3, 0): + nextline = nextline.decode('windows-1252') + elif os.name == 'posix' and sys.version_info < (3, 0): + nextline = nextline.decode('utf-8') + log.debug(nextline.strip('\r\n')) + # parse progress string from calibre-converter + progress = re.search(r"(\d+)%\s.*", nextline) + if progress: + self.UIqueue[index]['progress'] = progress.group(1) + ' %' # process returncode check = p.returncode @@ -361,8 +345,7 @@ class WorkerThread(threading.Thread): # 0 = Info(prcgen):I1036: Mobi file built successfully # 1 = Info(prcgen):I1037: Mobi file built with WARNINGS! # 2 = Info(prcgen):I1038: MOBI file could not be generated because of errors! - if (check < 2 and config.config_ebookconverter == 1) or \ - (check == 0 and config.config_ebookconverter == 2): + if check == 0 and config.config_ebookconverter == 2: cur_book = db.session.query(db.Books).filter(db.Books.id == bookid).first() if os.path.isfile(file_path + format_new_ext): new_format = db.Data(name=cur_book.data[0].name,