[scripts/init] support adding test results via '--url'
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user