[job] enable all 'parent-…' options for parent extractors by default

- parent-directory
- parent-metadata
- parent-session
- parent-skip

- add general 'parent' option
This commit is contained in:
Mike Fährmann
2026-01-27 11:14:05 +01:00
parent 250fbd3294
commit eaaa25b6e4
3 changed files with 36 additions and 21 deletions

View File

@@ -212,12 +212,34 @@ Description
Specifying a default |Path|_ with ``""`` is required.
extractor.*.parent
------------------
Type
``bool``
Default
``true``
``[chevereto]`` |
``erome`` |
``[imagehost]``
``false``
otherwise
Description
Mark an extractor as a `parent` and enable
* `parent-directory <extractor.*.parent-directory_>`__
* `parent-metadata <extractor.*.parent-metadata_>`__
* `parent-session <extractor.*.parent-session_>`__
* `parent-skip <extractor.*.parent-skip_>`__
for it by default.
extractor.*.parent-directory
----------------------------
Type
``bool``
Default
``false``
`extractor.parent <extractor.*.parent_>`__
Description
Use an extractor's current target directory as
base-directory_ for any spawned child extractors.
@@ -231,11 +253,7 @@ Type
* ``bool``
* ``string``
Default
``true``
``[chevereto]`` |
``[imagehost]``
``false``
otherwise
`extractor.parent <extractor.*.parent_>`__
Description
Forward a parent's metadata to its child extractors.
@@ -256,11 +274,7 @@ extractor.*.parent-session
Type
``bool``
Default
``true``
``[chevereto]`` |
``[imagehost]``
``false``
otherwise
`extractor.parent <extractor.*.parent_>`__
Description
Share a parent's
`session <https://requests.readthedocs.io/en/latest/user/advanced/#session-objects>`__
@@ -275,7 +289,7 @@ extractor.*.parent-skip
Type
``bool``
Default
``false``
`extractor.parent <extractor.*.parent_>`__
Description
Share number of skipped downloads between parent and child extractors.

View File

@@ -58,6 +58,7 @@
"keywords-eval" : false,
"keywords-global" : {},
"parent" : false,
"parent-directory": false,
"parent-metadata" : false,
"parent-session" : false,
@@ -307,6 +308,7 @@
"erome":
{
"user": {
"parent" : true,
"reposts": false
}
},
@@ -1023,9 +1025,8 @@
"chevereto":
{
"parent-metadata": true,
"parent-session" : true,
"password" : ""
"parent" : true,
"password": ""
},
"Danbooru":
@@ -1099,8 +1100,7 @@
"imagehost":
{
"parent-metadata": true,
"parent-session" : true
"parent": true
},
"mastodon":

View File

@@ -440,14 +440,15 @@ class DownloadJob(Job):
job = self.__class__(extr, self)
pfmt = self.pathfmt
pextr = self.extractor
parent = pextr.config("parent", pextr.parent)
if pfmt and pextr.config("parent-directory"):
if pfmt and pextr.config("parent-directory", parent):
extr._parentdir = pfmt.directory
else:
extr._parentdir = pextr._parentdir
if pmeta := pextr.config2(
"parent-metadata", "metadata-parent", pextr.parent):
"parent-metadata", "metadata-parent", parent):
if isinstance(pmeta, str):
data = self.kwdict.copy()
if kwdict:
@@ -459,12 +460,12 @@ class DownloadJob(Job):
if kwdict:
job.kwdict.update(kwdict)
if pextr.config("parent-session", pextr.parent):
if pextr.config("parent-session", parent):
extr.session = pextr.session
while True:
try:
if pextr.config("parent-skip"):
if pextr.config("parent-skip", parent):
job._skipcnt = self._skipcnt
status = job.run()
self._skipcnt = job._skipcnt