[postprocessor:metadata] implement 'mode: modify' (#2640)

This commit is contained in:
Mike Fährmann
2022-07-19 12:24:26 +02:00
parent f3de6b7a87
commit 0c73914848
3 changed files with 70 additions and 9 deletions

View File

@@ -30,6 +30,13 @@ class MetadataPP(PostProcessor):
elif mode == "tags":
self.write = self._write_tags
ext = "txt"
elif mode == "modify":
self.run = self._run_modify
self.fields = {
name: formatter.parse(value, None, util.identity).format_map
for name, value in options.get("fields").items()
}
ext = None
elif mode == "delete":
self.run = self._run_delete
self.fields = options.get("fields")
@@ -118,6 +125,19 @@ class MetadataPP(PostProcessor):
def _run_stdout(self, pathfmt):
self.write(sys.stdout, pathfmt.kwdict)
def _run_modify(self, pathfmt):
kwdict = pathfmt.kwdict
for key, func in self.fields.items():
obj = kwdict
try:
while "[" in key:
name, _, key = key.partition("[")
obj = obj[name]
key = key.rstrip("]")
obj[key] = func(kwdict)
except Exception:
pass
def _run_delete(self, pathfmt):
kwdict = pathfmt.kwdict
for key in self.fields: