summaryrefslogtreecommitdiffstats
path: root/gallery_dl/job.py
diff options
context:
space:
mode:
Diffstat (limited to 'gallery_dl/job.py')
-rw-r--r--gallery_dl/job.py21
1 files changed, 17 insertions, 4 deletions
diff --git a/gallery_dl/job.py b/gallery_dl/job.py
index 88b6a55..699f057 100644
--- a/gallery_dl/job.py
+++ b/gallery_dl/job.py
@@ -182,6 +182,7 @@ class DownloadJob(Job):
self.downloaders = {}
self.postprocessors = None
self.out = output.select()
+ self.visited = parent.visited if parent else set()
def handle_url(self, url, kwdict, fallback=None):
"""Download the resource specified in 'url'"""
@@ -261,6 +262,10 @@ class DownloadJob(Job):
pp.run_metadata(pathfmt)
def handle_queue(self, url, kwdict):
+ if url in self.visited:
+ return
+ self.visited.add(url)
+
if "_extractor" in kwdict:
extr = kwdict["_extractor"].from_url(url)
else:
@@ -422,11 +427,19 @@ class KeywordJob(Job):
self.print_kwdict(kwdict)
def handle_queue(self, url, kwdict):
- if not kwdict:
+ if not util.filter_dict(kwdict):
self.extractor.log.info(
- "This extractor delegates work to other extractors "
- "and does not provide any keywords on its own. Try "
- "'gallery-dl -K \"%s\"' instead.", url)
+ "This extractor only spawns other extractors "
+ "and does not provide any metadata on its own.")
+
+ if "_extractor" in kwdict:
+ self.extractor.log.info(
+ "Showing results for '%s' instead:\n", url)
+ extr = kwdict["_extractor"].from_url(url)
+ KeywordJob(extr, self).run()
+ else:
+ self.extractor.log.info(
+ "Try 'gallery-dl -K \"%s\"' instead.", url)
else:
print("Keywords for --chapter-filter:")
print("------------------------------")