diff options
Diffstat (limited to 'gallery_dl/job.py')
| -rw-r--r-- | gallery_dl/job.py | 71 |
1 files changed, 50 insertions, 21 deletions
diff --git a/gallery_dl/job.py b/gallery_dl/job.py index c1d32ef..0f40bb9 100644 --- a/gallery_dl/job.py +++ b/gallery_dl/job.py @@ -1,15 +1,17 @@ # -*- coding: utf-8 -*- -# Copyright 2015-2020 Mike Fährmann +# Copyright 2015-2021 Mike Fährmann # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 as # published by the Free Software Foundation. import sys +import json import time import errno import logging +import operator import collections from . import extractor, downloader, postprocessor from . import config, text, util, output, exception @@ -111,10 +113,6 @@ class Job(): if self.pred_queue(url, kwds): self.handle_queue(url, kwds) - elif msg[0] == Message.Metadata: - self.update_kwdict(msg[1]) - self.handle_metadata(msg[1]) - elif msg[0] == Message.Version: if msg[1] != 1: raise "unsupported message-version ({}, {})".format( @@ -128,9 +126,6 @@ class Job(): def handle_directory(self, kwdict): """Handle Message.Directory""" - def handle_metadata(self, kwdict): - """Handle Message.Metadata""" - def handle_queue(self, url, kwdict): """Handle Message.Queue""" @@ -280,15 +275,6 @@ class DownloadJob(Job): for callback in self.hooks["post"]: callback(self.pathfmt) - def handle_metadata(self, kwdict): - """Run postprocessors with metadata from 'kwdict'""" - if "metadata" in self.hooks: - kwdict["extension"] = "metadata" - pathfmt = self.pathfmt - pathfmt.set_filename(kwdict) - for callback in self.hooks["metadata"]: - callback(pathfmt) - def handle_queue(self, url, kwdict): if url in self.visited: return @@ -456,7 +442,21 @@ class DownloadJob(Job): if wlist is not None: if isinstance(wlist, str): wlist = wlist.split(",") - blist = {e.category for e in extractor._list_classes()} + + # build a set of all categories + blist = set() + add = blist.add + update = blist.update + get = operator.itemgetter(0) + + for extr in extractor._list_classes(): + category = extr.category + if category: + add(category) + else: + update(map(get, extr.instances)) + + # remove whitelisted categories blist.difference_update(wlist) return blist @@ -576,6 +576,38 @@ class UrlJob(Job): self._write_unsupported(url) +class InfoJob(Job): + """Print extractor defaults and settings""" + + def run(self): + ex = self.extractor + pm = self._print_multi + pc = self._print_config + + if ex.basecategory: + pm("Category / Subcategory / Basecategory", + ex.category, ex.subcategory, ex.basecategory) + else: + pm("Category / Subcategory", ex.category, ex.subcategory) + + pc("Filename format", "filename", ex.filename_fmt) + pc("Directory format", "directory", ex.directory_fmt) + pc("Request interval", "sleep-request", ex.request_interval) + + return 0 + + def _print_multi(self, title, *values): + print(title, "\n ", " / ".join(json.dumps(v) for v in values), sep="") + + def _print_config(self, title, optname, value): + optval = self.extractor.config(optname, util.SENTINEL) + if optval is not util.SENTINEL: + print(title, "(custom):\n ", json.dumps(optval)) + print(title, "(default):\n ", json.dumps(value)) + elif value: + print(title, "(default):\n ", json.dumps(value)) + + class DataJob(Job): """Collect extractor results and dump them""" @@ -624,8 +656,5 @@ class DataJob(Job): def handle_directory(self, kwdict): self.data.append((Message.Directory, self.filter(kwdict))) - def handle_metadata(self, kwdict): - self.data.append((Message.Metadata, self.filter(kwdict))) - def handle_queue(self, url, kwdict): self.data.append((Message.Queue, url, self.filter(kwdict))) |
