From f81fbaf5420c6aa4c8a1ee9aa170f6921d665b9d Mon Sep 17 00:00:00 2001 From: Ozzie Isaacs Date: Sat, 4 Aug 2018 17:08:32 +0200 Subject: [PATCH] Fix #568 (encoding problem in fb2 upload) --- cps/fb2.py | 20 +++++++++++--------- cps/helper.py | 6 +++--- cps/web.py | 2 +- 3 files changed, 15 insertions(+), 13 deletions(-) diff --git a/cps/fb2.py b/cps/fb2.py index 262a084f..87295ab8 100644 --- a/cps/fb2.py +++ b/cps/fb2.py @@ -20,41 +20,43 @@ def get_fb2_info(tmp_file_path, original_file_extension): def get_author(element): last_name = element.xpath('fb:last-name/text()', namespaces=ns) if len(last_name): - last_name = last_name[0] + last_name = last_name[0].encode('utf-8') else: last_name = u'' middle_name = element.xpath('fb:middle-name/text()', namespaces=ns) if len(middle_name): - middle_name = middle_name[0] + middle_name = middle_name[0].encode('utf-8') else: middle_name = u'' first_name = element.xpath('fb:first-name/text()', namespaces=ns) if len(first_name): - first_name = first_name[0] + first_name = first_name[0].encode('utf-8') else: first_name = u'' - return first_name + ' ' + middle_name + ' ' + last_name + return (first_name.decode('utf-8') + u' ' + + middle_name.decode('utf-8') + u' ' + + last_name.decode('utf-8')).encode('utf-8') author = str(", ".join(map(get_author, authors))) title = tree.xpath('/fb:FictionBook/fb:description/fb:title-info/fb:book-title/text()', namespaces=ns) if len(title): - title = str(title[0]) + title = str(title[0].encode('utf-8')) else: title = u'' description = tree.xpath('/fb:FictionBook/fb:description/fb:publish-info/fb:book-name/text()', namespaces=ns) if len(description): - description = str(description[0]) + description = str(description[0].encode('utf-8')) else: description = u'' return uploader.BookMeta( file_path=tmp_file_path, extension=original_file_extension, - title=title.encode('utf-8').decode('utf-8'), - author=author.encode('utf-8').decode('utf-8'), + title=title.decode('utf-8'), + author=author.decode('utf-8'), cover=None, - description=description, + description=description.decode('utf-8'), tags="", series="", series_id="", diff --git a/cps/helper.py b/cps/helper.py index 83d67c56..b8af45eb 100755 --- a/cps/helper.py +++ b/cps/helper.py @@ -379,7 +379,7 @@ def save_cover(url, book_path): img = requests.get(url) if img.headers.get('content-type') != 'image/jpeg': web.app.logger.error("Cover is no jpg file, can't save") - return false + return False if ub.config.config_use_google_drive: tmpDir = gettempdir() @@ -388,13 +388,13 @@ def save_cover(url, book_path): f.close() uploadFileToEbooksFolder(os.path.join(book_path, 'cover.jpg'), os.path.join(tmpDir, f.name)) web.app.logger.info("Cover is saved on gdrive") - return true + return True f = open(os.path.join(ub.config.config_calibre_dir, book_path, "cover.jpg"), "wb") f.write(img.content) f.close() web.app.logger.info("Cover is saved") - return true + return True def do_download_file(book, book_format, data, headers): if ub.config.config_use_google_drive: diff --git a/cps/web.py b/cps/web.py index 7224bad5..2cfd813d 100755 --- a/cps/web.py +++ b/cps/web.py @@ -3096,7 +3096,7 @@ def edit_book(book_id): if not error: if to_save["cover_url"]: - if helper.save_cover(to_save["cover_url"], book.path) is true: + if helper.save_cover(to_save["cover_url"], book.path) is True: book.has_cover = 1 else: flash(_(u"Cover is not a jpg file, can't save"), category="error")