From 3963dbe5e4457e69069b3294b2b700a5bc7e3dd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20F=C3=A4hrmann?= Date: Mon, 7 Aug 2023 23:22:12 +0200 Subject: [PATCH] extend 'parent>child' categories continuation of ed21908f allow for children to have an arbitrary distance from their parent, e.g. reddit -> danbooru -> imgur:gallery -> imgur:album would still be covered by 'reddit>imgur' or even 'danbooru>imgur' --- gallery_dl/job.py | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/gallery_dl/job.py b/gallery_dl/job.py index f169788e..d33d35c1 100644 --- a/gallery_dl/job.py +++ b/gallery_dl/job.py @@ -18,7 +18,7 @@ from .output import stdout_write class Job(): - """Base class for Job-types""" + """Base class for Job types""" ulog = None def __init__(self, extr, parent=None): @@ -33,15 +33,29 @@ class Job(): self.status = 0 cfgpath = [] - if parent and parent.extractor.category != extr.category: - cat = "{}>{}".format( - parent.extractor.category, extr.category) - cfgpath.append((cat, extr.subcategory)) - cfgpath.append((extr.category, extr.subcategory)) + if parent: + if extr.category == parent.extractor.category or \ + extr.category in parent.parents: + parents = parent.parents + else: + parents = parent.parents + (parent.extractor.category,) + + if parents: + for category in parents: + cat = "{}>{}".format(category, extr.category) + cfgpath.append((cat, extr.subcategory)) + cfgpath.append((extr.category, extr.subcategory)) + self.parents = parents + else: + self.parents = () + else: + self.parents = () + if extr.basecategory: if not cfgpath: cfgpath.append((extr.category, extr.subcategory)) cfgpath.append((extr.basecategory, extr.subcategory)) + if cfgpath: extr._cfgpath = cfgpath extr.config = extr._config_shared