From 8ecd408f53e8fe5d3ffac61213f1f74da91b32a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20F=C3=A4hrmann?= Date: Fri, 26 Jul 2024 20:36:04 +0200 Subject: [PATCH] add '-J/--resolve-json' command-line option (#5864) --- docs/options.md | 3 +++ gallery_dl/__init__.py | 3 +++ gallery_dl/job.py | 5 +++-- gallery_dl/option.py | 7 ++++++- 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/docs/options.md b/docs/options.md index 902bf874..f16fa5b9 100644 --- a/docs/options.md +++ b/docs/options.md @@ -40,6 +40,8 @@ -G, --resolve-urls Print URLs instead of downloading; resolve intermediary URLs -j, --dump-json Print JSON information + -J, --resolve-json Print JSON information; resolve intermediary + URLs -s, --simulate Simulate data extraction; do not download anything -E, --extractor-info Print extractor defaults and settings @@ -54,6 +56,7 @@ extractors but cannot be handled, to FILE --write-pages Write downloaded intermediary pages to files in the current directory to debug problems + --print-traffic Display sent and read HTTP traffic --no-colors Do not emit ANSI color codes in output ## Networking Options: diff --git a/gallery_dl/__init__.py b/gallery_dl/__init__.py index 8a23127f..4b39c15a 100644 --- a/gallery_dl/__init__.py +++ b/gallery_dl/__init__.py @@ -249,6 +249,9 @@ def main(): if config.get(("output",), "fallback", True): jobtype.handle_url = \ staticmethod(jobtype.handle_url_fallback) + elif args.dump_json: + jobtype = job.DataJob + jobtype.resolve = args.dump_json - 1 else: jobtype = args.jobtype or job.DownloadJob diff --git a/gallery_dl/job.py b/gallery_dl/job.py index cc0175a6..0e0916d8 100644 --- a/gallery_dl/job.py +++ b/gallery_dl/job.py @@ -856,6 +856,7 @@ class InfoJob(Job): class DataJob(Job): """Collect extractor results and dump them""" + resolve = False def __init__(self, url, parent=None, file=sys.stdout, ensure_ascii=True, resolve=False): @@ -863,12 +864,12 @@ class DataJob(Job): self.file = file self.data = [] self.ascii = config.get(("output",), "ascii", ensure_ascii) - self.resolve = 128 if resolve is True else resolve + self.resolve = 128 if resolve is True else (resolve or self.resolve) private = config.get(("output",), "private") self.filter = dict.copy if private else util.filter_dict - if resolve: + if self.resolve > 0: self.handle_queue = self.handle_queue_resolve def run(self): diff --git a/gallery_dl/option.py b/gallery_dl/option.py index caafe880..155cbd91 100644 --- a/gallery_dl/option.py +++ b/gallery_dl/option.py @@ -293,9 +293,14 @@ def build_parser(): ) output.add_argument( "-j", "--dump-json", - dest="jobtype", action="store_const", const=job.DataJob, + dest="dump_json", action="count", help="Print JSON information", ) + output.add_argument( + "-J", "--resolve-json", + dest="dump_json", action="store_const", const=128, + help="Print JSON information; resolve intermediary URLs", + ) output.add_argument( "-s", "--simulate", dest="jobtype", action="store_const", const=job.SimulationJob,