[pp:exec] support '{_temppath}' replacement field (#8329)
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
|
||||
@@ -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};"),
|
||||
|
||||
Reference in New Issue
Block a user