From dd759d34ddf10db9d5e5e26467263cf6ece05395 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20F=C3=A4hrmann?= Date: Sun, 22 Jun 2025 22:19:02 +0200 Subject: [PATCH] [scripts/init] support adding test results via '--url' --- scripts/init.py | 70 ++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 57 insertions(+), 13 deletions(-) diff --git a/scripts/init.py b/scripts/init.py index 4c3a665d..56c45507 100755 --- a/scripts/init.py +++ b/scripts/init.py @@ -112,8 +112,16 @@ def insert_into_supportedsites(opts): def insert_test_result(opts): - cat = opts["category"] - sub = opts["subcategory"] + if url := opts["url"]: + from gallery_dl.extractor import find + extr = opts["extractor"] = find(url) + cat = extr.category + sub = extr.subcategory + gen = generate_test_result_extractor + else: + cat = opts["category"] + sub = opts["subcategory"] + gen = generate_test_result_basic path = util.path("test", "results", f"{cat}.py") LOG.info("Adding %stest result skeleton into '%s'", @@ -122,7 +130,7 @@ def insert_test_result(opts): with open(path) as fp: lines = fp.readlines() - lines.insert(-2, generate_test_result_skeleton(opts)) + lines.insert(-2, gen(opts)) with util.lazy(path) as fp: fp.writelines(lines) @@ -286,21 +294,56 @@ from gallery_dl.extractor import {cat} return module, import_stmt -def generate_test_result_skeleton(opts): +def generate_test_result_basic(opts): cat = opts["category"] - ccat = cat.capitalize() sub = opts["subcategory"] - csub = sub.capitalize() - + extr_name = f"{cat.capitalize()}{sub.capitalize()}Extractor" module_name, _ = generate_test_result_import(opts) - return f''' + return f""" {{ "#url" : "{opts['url']}", "#comment" : "", - "#class" : {module_name}.{ccat}{csub}Extractor, + "#class" : {module_name}.{extr_name}, +}} +""" + + +def generate_test_result_extractor(opts): + from gallery_dl.extractor import common + + extr = opts["extractor"] + extr_name = extr.__class__.__name__ + module_name = extr.__module__.rpartition(".")[2] + + head = f""" +{{ + "#url" : "{extr.url}", + "#comment" : "", + "#class" : {module_name}.{extr_name},\ +""" + + if isinstance(extr, common.GalleryExtractor): + body = """ + "#pattern" : r"", + "#count" : 123, +""" + + elif isinstance(extr, common.MangaExtractor): + extr_name = extr_name.replace("MangaEx", "ChapterEx") + body = f""" + "#pattern" : {module_name}.{extr_name}.pattern, + "#count" : 123, +""" + + else: + body = "" + + tail = """\ }}, -''' +""" + + return f"{head}{body}{tail}" ############################################################################### @@ -330,7 +373,7 @@ def parse_args(args=None): "-U", "--user", action="store_const", const="user", dest="type") - parser.add_argument("category") + parser.add_argument("category", default="") parser.add_argument("subcategory", nargs="?", default="") return parser.parse_args() @@ -339,7 +382,7 @@ def parse_args(args=None): def parse_opts(args=None): args = parse_args(args) - if not args.mode and not args.type and not args.root: + if not (args.mode or args.type or args.url or args.root): LOG.error("--root required") raise SystemExit(2) @@ -350,6 +393,7 @@ def parse_opts(args=None): "mode" : args.mode, "type" : args.type, "url" : args.url, + "results" : False, "open_mode" : args.open_mode, } @@ -383,7 +427,7 @@ def parse_opts(args=None): def main(): opts = parse_opts() - if opts["mode"] == "test": + if opts["url"] or opts["mode"] == "test": insert_test_result(opts) else: init_extractor_module(opts)