From 780a6c82b2b081ba5d6d01b5a0d0e4dc5a0f41b5 Mon Sep 17 00:00:00 2001 From: ricterzheng Date: Mon, 3 Feb 2025 15:26:14 +0800 Subject: [PATCH] split metadata.json out from html generate function #386 --- nhentai/cmdline.py | 2 ++ nhentai/command.py | 4 ++++ nhentai/serializer.py | 5 ++--- nhentai/utils.py | 7 +++++-- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/nhentai/cmdline.py b/nhentai/cmdline.py index 5435c06..7020e36 100644 --- a/nhentai/cmdline.py +++ b/nhentai/cmdline.py @@ -131,6 +131,8 @@ def cmd_parser(): help='generate a metadata file in doujinshi format') parser.add_option('--regenerate', dest='regenerate', action='store_true', default=False, help='regenerate the cbz or pdf file if exists') + parser.add_option('--no-metadata', dest='no_metadata', action='store_true', default=False, + help='don\'t generate metadata json file in doujinshi output path') # nhentai options parser.add_option('--cookie', type='str', dest='cookie', action='store', diff --git a/nhentai/command.py b/nhentai/command.py index 828c364..d5e3a8d 100644 --- a/nhentai/command.py +++ b/nhentai/command.py @@ -15,6 +15,7 @@ from nhentai.doujinshi import Doujinshi from nhentai.downloader import Downloader from nhentai.logger import logger from nhentai.constant import BASE_URL +from nhentai.serializer import serialize_json from nhentai.utils import generate_html, generate_doc, generate_main_html, generate_metadata_file, \ paging, check_cookie, signal_handler, DB, move_to_folder @@ -115,6 +116,9 @@ def main(): if not options.is_nohtml: generate_html(options.output_dir, doujinshi, template=constant.CONFIG['template']) + if not options.no_metadata: + generate_doc('json', options.output_dir, doujinshi, options.regenerate) + if options.is_cbz: generate_doc('cbz', options.output_dir, doujinshi, options.regenerate) diff --git a/nhentai/serializer.py b/nhentai/serializer.py index fbcc2d9..c831dd1 100644 --- a/nhentai/serializer.py +++ b/nhentai/serializer.py @@ -2,12 +2,11 @@ import json import os -from nhentai.constant import PATH_SEPARATOR +from nhentai.constant import PATH_SEPARATOR, LANGUAGE_ISO from xml.sax.saxutils import escape -from nhentai.constant import LANGUAGE_ISO -def serialize_json(doujinshi, output_dir): +def serialize_json(doujinshi, output_dir: str): metadata = {'title': doujinshi.name, 'subtitle': doujinshi.info.subtitle} if doujinshi.info.favorite_counts: diff --git a/nhentai/utils.py b/nhentai/utils.py index c73e78d..2b9631c 100644 --- a/nhentai/utils.py +++ b/nhentai/utils.py @@ -16,7 +16,7 @@ from requests.structures import CaseInsensitiveDict from nhentai import constant from nhentai.constant import PATH_SEPARATOR from nhentai.logger import logger -from nhentai.serializer import serialize_json, serialize_comic_xml, set_js_database +from nhentai.serializer import serialize_comic_xml, serialize_json, set_js_database MAX_FIELD_LENGTH = 100 EXTENSIONS = ('.png', '.jpg', '.jpeg', '.gif', '.webp') @@ -142,7 +142,7 @@ def generate_html(output_dir='.', doujinshi_obj=None, template='default'): js = readfile(f'viewer/{template}/scripts.js') if doujinshi_obj is not None: - serialize_json(doujinshi_obj, doujinshi_dir) + # serialize_json(doujinshi_obj, doujinshi_dir) name = doujinshi_obj.name else: name = {'title': 'nHentai HTML Viewer'} @@ -274,6 +274,9 @@ def generate_doc(file_type='', output_dir='.', doujinshi_obj=None, regenerate=Fa except ImportError: logger.error("Please install img2pdf package by using pip.") + elif file_type == 'json': + serialize_json(doujinshi_obj, doujinshi_dir) + def format_filename(s, length=MAX_FIELD_LENGTH, _truncate_only=False): """