summaryrefslogtreecommitdiffstats
path: root/gallery_dl/job.py
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@unit193.net>2021-03-13 16:26:30 -0500
committerLibravatarUnit 193 <unit193@unit193.net>2021-03-13 16:26:30 -0500
commit3201d77a148367d739862b4f07868a76eaeb7cb1 (patch)
tree78b8d71633ec000672a84ad0bbbddd0513ae2d30 /gallery_dl/job.py
parentfc83315c164afd74734adf27e0f7fec2011904aa (diff)
New upstream version 1.17.0.upstream/1.17.0
Diffstat (limited to 'gallery_dl/job.py')
-rw-r--r--gallery_dl/job.py71
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)))