[scripts/init] support adding test results via '--url'

This commit is contained in:
Mike Fährmann
2025-06-22 22:19:02 +02:00
parent 1055773301
commit dd759d34dd

View File

@@ -112,8 +112,16 @@ def insert_into_supportedsites(opts):
def insert_test_result(opts): def insert_test_result(opts):
cat = opts["category"] if url := opts["url"]:
sub = opts["subcategory"] 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") path = util.path("test", "results", f"{cat}.py")
LOG.info("Adding %stest result skeleton into '%s'", LOG.info("Adding %stest result skeleton into '%s'",
@@ -122,7 +130,7 @@ def insert_test_result(opts):
with open(path) as fp: with open(path) as fp:
lines = fp.readlines() lines = fp.readlines()
lines.insert(-2, generate_test_result_skeleton(opts)) lines.insert(-2, gen(opts))
with util.lazy(path) as fp: with util.lazy(path) as fp:
fp.writelines(lines) fp.writelines(lines)
@@ -286,21 +294,56 @@ from gallery_dl.extractor import {cat}
return module, import_stmt return module, import_stmt
def generate_test_result_skeleton(opts): def generate_test_result_basic(opts):
cat = opts["category"] cat = opts["category"]
ccat = cat.capitalize()
sub = opts["subcategory"] sub = opts["subcategory"]
csub = sub.capitalize() extr_name = f"{cat.capitalize()}{sub.capitalize()}Extractor"
module_name, _ = generate_test_result_import(opts) module_name, _ = generate_test_result_import(opts)
return f''' return f"""
{{ {{
"#url" : "{opts['url']}", "#url" : "{opts['url']}",
"#comment" : "", "#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", "-U", "--user",
action="store_const", const="user", dest="type") action="store_const", const="user", dest="type")
parser.add_argument("category") parser.add_argument("category", default="")
parser.add_argument("subcategory", nargs="?", default="") parser.add_argument("subcategory", nargs="?", default="")
return parser.parse_args() return parser.parse_args()
@@ -339,7 +382,7 @@ def parse_args(args=None):
def parse_opts(args=None): def parse_opts(args=None):
args = parse_args(args) 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") LOG.error("--root required")
raise SystemExit(2) raise SystemExit(2)
@@ -350,6 +393,7 @@ def parse_opts(args=None):
"mode" : args.mode, "mode" : args.mode,
"type" : args.type, "type" : args.type,
"url" : args.url, "url" : args.url,
"results" : False,
"open_mode" : args.open_mode, "open_mode" : args.open_mode,
} }
@@ -383,7 +427,7 @@ def parse_opts(args=None):
def main(): def main():
opts = parse_opts() opts = parse_opts()
if opts["mode"] == "test": if opts["url"] or opts["mode"] == "test":
insert_test_result(opts) insert_test_result(opts)
else: else:
init_extractor_module(opts) init_extractor_module(opts)