[pp:exec] support '{_temppath}' replacement field (#8329)

This commit is contained in:
Mike Fährmann
2025-10-09 20:59:06 +02:00
parent 3739388035
commit ca4e061386
3 changed files with 13 additions and 5 deletions

View File

@@ -7720,8 +7720,8 @@ Description
name and any further elements its arguments.
Each element of this list is evaluated as a `Format String`_ using
the files' metadata as well as ``{_path}``, ``{_directory}``,
and ``{_filename}``.
the files' metadata as well as
``{_path}``, ``{_temppath}``, ``{_directory}``, and ``{_filename}``.
exec.commands

View File

@@ -55,7 +55,8 @@ class ExecPP(PostProcessor):
def _prepare_cmd(self, cmd):
if isinstance(cmd, str):
self._sub = util.re(r"\{(_directory|_filename|_path|)\}").sub
self._sub = util.re(
r"\{(_directory|_filename|_(?:temp)?path|)\}").sub
return self.exec_string, cmd
else:
return self.exec_list, [formatter.parse(arg) for arg in cmd]
@@ -69,6 +70,7 @@ class ExecPP(PostProcessor):
kwdict["_directory"] = pathfmt.realdirectory
kwdict["_filename"] = pathfmt.filename
kwdict["_temppath"] = pathfmt.temppath
kwdict["_path"] = pathfmt.realpath
args = [arg.format_map(kwdict) for arg in self.args]
@@ -131,6 +133,8 @@ class ExecPP(PostProcessor):
return quote(self.pathfmt.realdirectory)
if name == "_filename":
return quote(self.pathfmt.filename)
if name == "_temppath":
return quote(self.pathfmt.temppath)
return quote(self.pathfmt.realpath)

View File

@@ -195,7 +195,8 @@ class ExecTest(BasePostprocessorTest):
def test_command_string(self):
self._create({
"command": "echo {} {_path} {_directory} {_filename} && rm {};",
"command": "echo {} {_path} {_temppath} {_directory} {_filename} "
"&& rm {};",
})
with patch("gallery_dl.util.Popen") as p:
@@ -208,6 +209,7 @@ class ExecTest(BasePostprocessorTest):
(f"echo "
f"{self.pathfmt.realpath} "
f"{self.pathfmt.realpath} "
f"{self.pathfmt.temppath} "
f"{self.pathfmt.realdirectory} "
f"{self.pathfmt.filename} "
f"&& rm {self.pathfmt.realpath};"),
@@ -243,7 +245,8 @@ class ExecTest(BasePostprocessorTest):
def test_command_many(self):
self._create({
"commands": [
"echo {} {_path} {_directory} {_filename} && rm {};",
"echo {} {_path} {_temppath} {_directory} {_filename} "
"&& rm {};",
["~/script.sh", "{category}", "\fE _directory.upper()"],
]
})
@@ -259,6 +262,7 @@ class ExecTest(BasePostprocessorTest):
(f"echo "
f"{self.pathfmt.realpath} "
f"{self.pathfmt.realpath} "
f"{self.pathfmt.temppath} "
f"{self.pathfmt.realdirectory} "
f"{self.pathfmt.filename} "
f"&& rm {self.pathfmt.realpath};"),