diff --git a/docs/configuration.rst b/docs/configuration.rst index 47bbe99a88..d476c7ef85 100644 --- a/docs/configuration.rst +++ b/docs/configuration.rst @@ -941,7 +941,7 @@ Description `archive `__. Available events are: - ``file``, ``skip`` + ``file``, ``filtered``, ``skip`` extractor.*.archive-format diff --git a/gallery_dl/job.py b/gallery_dl/job.py index 56b50bf0ea..c424a53045 100644 --- a/gallery_dl/job.py +++ b/gallery_dl/job.py @@ -41,6 +41,7 @@ def __init__(self, extr, parent=None): if not extr: raise exception.NoExtractorError() + self.archive = None self.extractor = extr self.pathfmt = None self.status = 0 @@ -190,6 +191,7 @@ def run(self): def dispatch(self, msg): """Call the appropriate message handler""" hooks = self.hooks + archive = self.archive pathfmt = self.pathfmt if msg[0] == Message.Url: @@ -203,6 +205,8 @@ def dispatch(self, msg): if "filtered" in hooks: for callback in hooks["filtered"]: callback(pathfmt) + if archive and self._archive_write_filtered: + archive.add(kwdict) elif msg[0] == Message.Directory: self.update_kwdict(msg[1]) @@ -218,6 +222,8 @@ def dispatch(self, msg): if "filtered" in hooks: for callback in hooks["filtered"]: callback(pathfmt) + if archive and self._archive_write_filtered: + archive.add(kwdict) def handle_url(self, url, kwdict): """Handle Message.Url""" @@ -596,11 +602,13 @@ def initialize(self, kwdict=None): events = cfg("archive-event") if events is None: self._archive_write_file = True + self._archive_write_filtered = False self._archive_write_skip = False else: if isinstance(events, str): events = events.split(",") self._archive_write_file = ("file" in events) + self._archive_write_filtered = ("filtered" in events) self._archive_write_skip = ("skip" in events) skip = cfg("skip", True) @@ -728,6 +736,8 @@ def handle_url(self, url, kwdict): self.extractor.sleep(self.sleep(), "download") if self.archive and self._archive_write_skip: self.archive.add(kwdict) + if self.archive and self._archive_write_filtered: + self.archive.add(kwdict) self.out.skip(self.pathfmt.build_filename(kwdict)) def handle_directory(self, kwdict):