From 27291ae96fc7cdb576ebd7d3816de79707273690 Mon Sep 17 00:00:00 2001 From: kyos Date: Sun, 30 Jul 2017 00:18:29 +0200 Subject: [PATCH] Added new metadata getter for epub files that include series and series_index information --- cps/epub.py | 16 ++++++++++++++-- cps/web.py | 19 +++++++++++++++---- 2 files changed, 29 insertions(+), 6 deletions(-) diff --git a/cps/epub.py b/cps/epub.py index 50714b6f..d76a28c6 100644 --- a/cps/epub.py +++ b/cps/epub.py @@ -68,6 +68,18 @@ def get_epub_info(tmp_file_path, original_file_name, original_file_extension): else: 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) coverfile = None if len(coversection) > 0: @@ -102,6 +114,6 @@ def get_epub_info(tmp_file_path, original_file_name, original_file_extension): cover=coverfile, description=epub_metadata['description'], tags="", - series="", - series_id="", + series=epub_metadata['series'].encode('utf-8').decode('utf-8'), + series_id=epub_metadata['series_id'].encode('utf-8').decode('utf-8'), languages=epub_metadata['language']) diff --git a/cps/web.py b/cps/web.py index ad548226..ab3280d5 100755 --- a/cps/web.py +++ b/cps/web.py @@ -2928,7 +2928,8 @@ def upload(): title = meta.title author = meta.author - + series = meta.series + series_index = meta.series_id title_dir = helper.get_valid_filename(title, False) author_dir = helper.get_valid_filename(author, False) data_name = title_dir @@ -2967,6 +2968,14 @@ def upload(): db_author = db.Authors(author, helper.get_sorted_author(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 input_language = meta.languages db_language = None @@ -2980,9 +2989,11 @@ def upload(): db.session.add(db_language) # combine path and normalize path from windows systems 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, - datetime.datetime.now(), path, has_cover, db_author, [], db_language) + db_book = db.Books(title, "", db_author.sort, datetime.datetime.now(), datetime.datetime(101, 1, 1), + series_index, datetime.datetime.now(), path, has_cover, db_author, [], db_language) db_book.authors.append(db_author) + if db_series: + db_book.series.append(db_series) if db_language is not None: db_book.languages.append(db_language) db_data = db.Data(db_book, meta.extension.upper()[1:], file_size, data_name) @@ -3017,4 +3028,4 @@ def start_gevent(): from gevent.wsgi import WSGIServer global gevent_server gevent_server = WSGIServer(('', ub.config.config_port), app) - gevent_server.serve_forever() + gevent_server.serve_forever() \ No newline at end of file