redid comic importing support to handle metadata properly using comicapi from comictagger. needs work to automate installation
This commit is contained in:
parent
4b301a7961
commit
05d0f12608
4
.gitignore
vendored
4
.gitignore
vendored
|
@ -29,3 +29,7 @@ gdrive_credentials
|
||||||
|
|
||||||
vendor
|
vendor
|
||||||
client_secrets.json
|
client_secrets.json
|
||||||
|
|
||||||
|
# External dependencies - need proper integrating
|
||||||
|
comicapi
|
||||||
|
libunrar
|
||||||
|
|
65
cps/comic.py
Normal file → Executable file
65
cps/comic.py
Normal file → Executable file
|
@ -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)
|
if len(ext) > 1:
|
||||||
for name in cf.namelist():
|
extension = ext[1].lower()
|
||||||
ext = os.path.splitext(name)
|
if extension == '.jpg' or extension == '.jpeg':
|
||||||
if len(ext) > 1:
|
cover_data = archive.getPage(0)
|
||||||
extension = ext[1].lower()
|
print(archive.getPageName(0))
|
||||||
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
|
|
||||||
|
|
||||||
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):
|
||||||
|
|
||||||
|
|
||||||
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
|
||||||
|
|
||||||
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(
|
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)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user