Added new metadata getter for epub files that include series and series_index information

This commit is contained in:
kyos 2017-07-30 00:18:29 +02:00
parent 0afc8f94da
commit 83d07147e6
2 changed files with 29 additions and 6 deletions

View File

@ -68,6 +68,18 @@ def get_epub_info(tmp_file_path, original_file_name, original_file_extension):
else: else:
epub_metadata['language'] = "" epub_metadata['language'] = ""
series = tree.xpath("/pkg:package/pkg:metadata/pkg:meta[@name='calibre:series']/@content", namespaces=ns)
if len(series) > 0:
epub_metadata['series'] = series[0]
else:
epub_metadata['series'] = ''
series_id = tree.xpath("/pkg:package/pkg:metadata/pkg:meta[@name='calibre:series_index']/@content", namespaces=ns)
if len(series_id) > 0:
epub_metadata['series_id'] = series_id[0]
else:
epub_metadata['series_id'] = '1'
coversection = tree.xpath("/pkg:package/pkg:manifest/pkg:item[@id='cover-image']/@href", namespaces=ns) coversection = tree.xpath("/pkg:package/pkg:manifest/pkg:item[@id='cover-image']/@href", namespaces=ns)
coverfile = None coverfile = None
if len(coversection) > 0: if len(coversection) > 0:
@ -102,6 +114,6 @@ def get_epub_info(tmp_file_path, original_file_name, original_file_extension):
cover=coverfile, cover=coverfile,
description=epub_metadata['description'], description=epub_metadata['description'],
tags="", tags="",
series="", series=epub_metadata['series'].encode('utf-8').decode('utf-8'),
series_id="", series_id=epub_metadata['series_id'].encode('utf-8').decode('utf-8'),
languages=epub_metadata['language']) languages=epub_metadata['language'])

View File

@ -2907,7 +2907,8 @@ def upload():
title = meta.title title = meta.title
author = meta.author author = meta.author
series = meta.series
series_index = meta.series_id
title_dir = helper.get_valid_filename(title, False) title_dir = helper.get_valid_filename(title, False)
author_dir = helper.get_valid_filename(author, False) author_dir = helper.get_valid_filename(author, False)
data_name = title_dir data_name = title_dir
@ -2946,6 +2947,14 @@ def upload():
db_author = db.Authors(author, helper.get_sorted_author(author), "") db_author = db.Authors(author, helper.get_sorted_author(author), "")
db.session.add(db_author) db.session.add(db_author)
db_series = None
is_series = db.session.query(db.Series).filter(db.Series.name == series).first()
if is_series:
db_series = is_series
elif series != '':
db_series = db.Series(series, "")
db.session.add(db_series)
# add language actually one value in list # add language actually one value in list
input_language = meta.languages input_language = meta.languages
db_language = None db_language = None
@ -2959,9 +2968,11 @@ def upload():
db.session.add(db_language) db.session.add(db_language)
# combine path and normalize path from windows systems # combine path and normalize path from windows systems
path = os.path.join(author_dir, title_dir).replace('\\', '/') path = os.path.join(author_dir, title_dir).replace('\\', '/')
db_book = db.Books(title, "", db_author.sort, datetime.datetime.now(), datetime.datetime(101, 1, 1), 1, db_book = db.Books(title, "", db_author.sort, datetime.datetime.now(), datetime.datetime(101, 1, 1),
datetime.datetime.now(), path, has_cover, db_author, [], db_language) series_index, datetime.datetime.now(), path, has_cover, db_author, [], db_language)
db_book.authors.append(db_author) db_book.authors.append(db_author)
if db_series:
db_book.series.append(db_series)
if db_language is not None: if db_language is not None:
db_book.languages.append(db_language) db_book.languages.append(db_language)
db_data = db.Data(db_book, meta.extension.upper()[1:], file_size, data_name) db_data = db.Data(db_book, meta.extension.upper()[1:], file_size, data_name)
@ -2996,4 +3007,4 @@ def start_gevent():
from gevent.wsgi import WSGIServer from gevent.wsgi import WSGIServer
global gevent_server global gevent_server
gevent_server = WSGIServer(('', ub.config.config_port), app) gevent_server = WSGIServer(('', ub.config.config_port), app)
gevent_server.serve_forever() gevent_server.serve_forever()