From 05d0f12608a3083eaae446606fd649a74f2ea44e Mon Sep 17 00:00:00 2001 From: Iris Wildthyme <46726098+wildthyme@users.noreply.github.com> Date: Tue, 2 Apr 2019 18:52:45 -0400 Subject: [PATCH] redid comic importing support to handle metadata properly using comicapi from comictagger. needs work to automate installation --- .gitignore | 4 ++++ cps/comic.py | 65 ++++++++++++++++++++++++++++------------------------ 2 files changed, 39 insertions(+), 30 deletions(-) mode change 100644 => 100755 cps/comic.py diff --git a/.gitignore b/.gitignore index 09bf3faa..b3c3d439 100644 --- a/.gitignore +++ b/.gitignore @@ -29,3 +29,7 @@ gdrive_credentials vendor client_secrets.json + +# External dependencies - need proper integrating +comicapi +libunrar diff --git a/cps/comic.py b/cps/comic.py old mode 100644 new mode 100755 index 91cb325d..cc1b0600 --- a/cps/comic.py +++ b/cps/comic.py @@ -17,33 +17,21 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -import zipfile -import tarfile import os import uploader - +from comicapi.comicarchive import * +from comicapi.issuestring import * +from iso639 import languages as isoLanguages def extractCover(tmp_file_name, original_file_extension): + archive = ComicArchive(tmp_file_name) cover_data = None - if original_file_extension.upper() == '.CBZ': - cf = zipfile.ZipFile(tmp_file_name) - for name in cf.namelist(): - ext = os.path.splitext(name) - if len(ext) > 1: - extension = ext[1].lower() - if extension == '.jpg': - cover_data = cf.read(name) - break - elif original_file_extension.upper() == '.CBT': - cf = tarfile.TarFile(tmp_file_name) - for name in cf.getnames(): - ext = os.path.splitext(name) - if len(ext) > 1: - extension = ext[1].lower() - if extension == '.jpg': - cover_data = cf.extractfile(name).read() - break - + ext = os.path.splitext(archive.getPageName(0)) + if len(ext) > 1: + extension = ext[1].lower() + if extension == '.jpg' or extension == '.jpeg': + cover_data = archive.getPage(0) + print(archive.getPageName(0)) prefix = os.path.dirname(tmp_file_name) if cover_data: tmp_cover_name = prefix + '/cover' + extension @@ -56,17 +44,34 @@ def extractCover(tmp_file_name, original_file_extension): def get_comic_info(tmp_file_path, original_file_name, original_file_extension): + archive = ComicArchive(tmp_file_path) + if archive.seemsToBeAComicArchive(): + if archive.hasMetadata(MetaDataStyle.CIX): + style = MetaDataStyle.CIX + elif archive.hasMetadata(MetaDataStyle.CBI): + style = MetaDataStyle.CBI + else: + style = None - coverfile = extractCover(tmp_file_path, original_file_extension) + if style is not None: + loadedMetadata = archive.readMetadata(style) + + lang = loadedMetadata.language + if len(lang) == 2: + loadedMetadata.language = isoLanguages.get(part1=lang).name + elif len(lang) == 3: + loadedMetadata.language = isoLanguages.get(part3=lang).name + else: + loadedMetadata.language = "" return uploader.BookMeta( file_path=tmp_file_path, extension=original_file_extension, - title=original_file_name, - author=u"Unknown", - cover=coverfile, - description="", + title=loadedMetadata.title or original_file_name, + author=" & ".join([credit["person"] for credit in loadedMetadata.credits if credit["role"] == "Writer"]) or u"Unknown", + cover=extractCover(tmp_file_path, original_file_extension), + description=loadedMetadata.comments or "", tags="", - series="", - series_id="", - languages="") + series=loadedMetadata.series or "", + series_id=loadedMetadata.issue or "", + languages=loadedMetadata.language)