From 51bc0e82a4814e9c2aa5443890165c37adf46e87 Mon Sep 17 00:00:00 2001 From: kyos Date: Mon, 31 Jul 2017 09:00:09 +0200 Subject: [PATCH] Added series and series_index metadata handler --- cps/epub.py | 16 ++++++++++++++-- cps/web.py | 16 ++++++++++++++-- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/cps/epub.py b/cps/epub.py index 4276badd..dd9ad28b 100644 --- a/cps/epub.py +++ b/cps/epub.py @@ -71,6 +71,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: @@ -105,6 +117,6 @@ def get_epub_info(tmp_file_path, original_file_name, original_file_extension): cover=coverfile, description=epub_metadata['description'], tags=epub_metadata['subject'].encode('utf-8').decode('utf-8'), - 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 0779d244..9bafc73d 100755 --- a/cps/web.py +++ b/cps/web.py @@ -2929,6 +2929,8 @@ def upload(): title = meta.title author = meta.author tags = meta.tags + 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 +2969,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 +2990,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)