[job] implement '"archive-event": "after"' (#8373)

This commit is contained in:
Mike Fährmann
2025-10-14 11:13:17 +02:00
parent ab3e34e9c3
commit 899dcc62cf
2 changed files with 10 additions and 5 deletions

View File

@@ -1134,15 +1134,16 @@ Type
Default Default
``"file"`` ``"file"``
Example Example
* ``"file,skip"`` * ``"after,skip"``
* ``["file", "skip"]`` * ``["after", "skip"]``
Description Description
`Event(s) <metadata.event_>`__ `Event(s) <metadata.event_>`__
for which IDs get written to an for which IDs get written to an
`archive <extractor.*.archive_>`__. `archive <extractor.*.archive_>`__.
Available Events
Available events are: * ``file``
``file``, ``skip`` * ``after``
* ``skip``
extractor.*.archive-format extractor.*.archive-format

View File

@@ -388,6 +388,8 @@ class DownloadJob(Job):
if "after" in hooks: if "after" in hooks:
for callback in hooks["after"]: for callback in hooks["after"]:
callback(pathfmt) callback(pathfmt)
if archive and self._archive_write_after:
archive.add(kwdict)
def handle_directory(self, kwdict): def handle_directory(self, kwdict):
"""Set and create the target directory for downloads""" """Set and create the target directory for downloads"""
@@ -593,11 +595,13 @@ class DownloadJob(Job):
if events is None: if events is None:
self._archive_write_file = True self._archive_write_file = True
self._archive_write_skip = False self._archive_write_skip = False
self._archive_write_after = False
else: else:
if isinstance(events, str): if isinstance(events, str):
events = events.split(",") events = events.split(",")
self._archive_write_file = ("file" in events) self._archive_write_file = ("file" in events)
self._archive_write_skip = ("skip" in events) self._archive_write_skip = ("skip" in events)
self._archive_write_after = ("after" in events)
if skip := cfg("skip", True): if skip := cfg("skip", True):
self._skipexc = None self._skipexc = None