[pp:directory] add 'directory' post processor (#7432)
This commit is contained in:
@@ -6440,6 +6440,19 @@ Description
|
||||
Only compare file sizes. Do not read and compare their content.
|
||||
|
||||
|
||||
directory.event
|
||||
---------------
|
||||
Type
|
||||
* ``string``
|
||||
* ``list`` of ``strings``
|
||||
Default
|
||||
``"prepare"``
|
||||
Description
|
||||
The event(s) for which directory_ format strings are (re)evaluated.
|
||||
|
||||
See `metadata.event`_ for a list of available events.
|
||||
|
||||
|
||||
exec.archive
|
||||
------------
|
||||
Type
|
||||
@@ -7738,6 +7751,8 @@ Description
|
||||
``compare``
|
||||
| Compare versions of the same file and replace/enumerate them on mismatch
|
||||
| (requires `downloader.*.part`_ = ``true`` and `extractor.*.skip`_ = ``false``)
|
||||
``directory``
|
||||
Reevaluate directory_ format strings
|
||||
``exec``
|
||||
Execute external commands
|
||||
``hash``
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
modules = [
|
||||
"classify",
|
||||
"compare",
|
||||
"directory",
|
||||
"exec",
|
||||
"hash",
|
||||
"metadata",
|
||||
|
||||
30
gallery_dl/postprocessor/directory.py
Normal file
30
gallery_dl/postprocessor/directory.py
Normal file
@@ -0,0 +1,30 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2025 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.
|
||||
|
||||
"""Trigger directory format string evaluation"""
|
||||
|
||||
from .common import PostProcessor
|
||||
|
||||
|
||||
class DirectoryPP(PostProcessor):
|
||||
|
||||
def __init__(self, job, options):
|
||||
PostProcessor.__init__(self, job)
|
||||
|
||||
events = options.get("event")
|
||||
if events is None:
|
||||
events = ("prepare",)
|
||||
elif isinstance(events, str):
|
||||
events = events.split(",")
|
||||
job.register_hooks({event: self.run for event in events}, options)
|
||||
|
||||
def run(self, pathfmt):
|
||||
pathfmt.set_directory(pathfmt.kwdict)
|
||||
|
||||
|
||||
__postprocessor__ = DirectoryPP
|
||||
@@ -173,6 +173,24 @@ class ClassifyTest(BasePostprocessorTest):
|
||||
self.assertEqual(self.pathfmt.realpath, path + "/file.foo")
|
||||
|
||||
|
||||
class DirectoryTest(BasePostprocessorTest):
|
||||
|
||||
def test_default(self):
|
||||
self._create()
|
||||
|
||||
path = os.path.join(self.dir.name, "test")
|
||||
self.assertEqual(self.pathfmt.realdirectory, path + "/")
|
||||
self.assertEqual(self.pathfmt.realpath, path + "/file.ext")
|
||||
|
||||
self.pathfmt.kwdict["category"] = "custom"
|
||||
self._trigger()
|
||||
|
||||
path = os.path.join(self.dir.name, "custom")
|
||||
self.assertEqual(self.pathfmt.realdirectory, path + "/")
|
||||
self.pathfmt.build_path()
|
||||
self.assertEqual(self.pathfmt.realpath, path + "/file.ext")
|
||||
|
||||
|
||||
class ExecTest(BasePostprocessorTest):
|
||||
|
||||
def test_command_string(self):
|
||||
|
||||
Reference in New Issue
Block a user