Commit 05d0f126 authored by Iris Wildthyme's avatar Iris Wildthyme

redid comic importing support to handle metadata properly using comicapi from...

redid comic importing support to handle metadata properly using comicapi from comictagger. needs work to automate installation
parent 4b301a79
...@@ -29,3 +29,7 @@ gdrive_credentials ...@@ -29,3 +29,7 @@ gdrive_credentials
vendor vendor
client_secrets.json client_secrets.json
# External dependencies - need proper integrating
comicapi
libunrar
...@@ -17,33 +17,21 @@ ...@@ -17,33 +17,21 @@
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
import zipfile
import tarfile
import os import os
import uploader import uploader
from comicapi.comicarchive import *
from comicapi.issuestring import *
from iso639 import languages as isoLanguages
def extractCover(tmp_file_name, original_file_extension): def extractCover(tmp_file_name, original_file_extension):
archive = ComicArchive(tmp_file_name)
cover_data = None cover_data = None
if original_file_extension.upper() == '.CBZ': ext = os.path.splitext(archive.getPageName(0))
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: if len(ext) > 1:
extension = ext[1].lower() extension = ext[1].lower()
if extension == '.jpg': if extension == '.jpg' or extension == '.jpeg':
cover_data = cf.extractfile(name).read() cover_data = archive.getPage(0)
break print(archive.getPageName(0))
prefix = os.path.dirname(tmp_file_name) prefix = os.path.dirname(tmp_file_name)
if cover_data: if cover_data:
tmp_cover_name = prefix + '/cover' + extension tmp_cover_name = prefix + '/cover' + extension
...@@ -56,17 +44,34 @@ def extractCover(tmp_file_name, original_file_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): 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
if style is not None:
loadedMetadata = archive.readMetadata(style)
coverfile = extractCover(tmp_file_path, original_file_extension) 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( return uploader.BookMeta(
file_path=tmp_file_path, file_path=tmp_file_path,
extension=original_file_extension, extension=original_file_extension,
title=original_file_name, title=loadedMetadata.title or original_file_name,
author=u"Unknown", author=" & ".join([credit["person"] for credit in loadedMetadata.credits if credit["role"] == "Writer"]) or u"Unknown",
cover=coverfile, cover=extractCover(tmp_file_path, original_file_extension),
description="", description=loadedMetadata.comments or "",
tags="", tags="",
series="", series=loadedMetadata.series or "",
series_id="", series_id=loadedMetadata.issue or "",
languages="") languages=loadedMetadata.language)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment