From 4e9cb428d64a3874fc94be1d9ead234f3821b6d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20F=C3=A4hrmann?= Date: Tue, 8 Jul 2025 22:51:58 +0200 Subject: [PATCH] [pp] implement shortcuts for 'mode' and 'event' options This makes it possible to specify 'mode' and/or 'event' options of a postprocessor in its 'name' as "NAME/MODE@EVENT" or "NAME/MODE" or "NAME@EVENT" For example "postprocessors": "metadata/jsonl@file,skip" is equivalent to "postprocessors": { "name" : "metadata", "mode" : "jsonl", "event": ["file", "skip"] } --- gallery_dl/job.py | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/gallery_dl/job.py b/gallery_dl/job.py index 2e5a91e4..8011b553 100644 --- a/gallery_dl/job.py +++ b/gallery_dl/job.py @@ -656,7 +656,26 @@ class DownloadJob(Job): clist, negate)(extr): continue - name = pp_dict.get("name") + name = pp_dict.get("name", "") + if "__init__" not in pp_dict: + name, sep, event = name.rpartition("@") + if sep: + pp_dict["name"] = name + if "event" not in pp_dict: + pp_dict["event"] = event + else: + name = event + + name, sep, mode = name.rpartition("/") + if sep: + pp_dict["name"] = name + if "mode" not in pp_dict: + pp_dict["mode"] = mode + else: + name = mode + + pp_dict["__init__"] = None + pp_cls = postprocessor.find(name) if not pp_cls: pp_log.warning("module '%s' not found", name)