diff options
Diffstat (limited to 'gallery_dl/job.py')
| -rw-r--r-- | gallery_dl/job.py | 21 |
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("------------------------------") |
