diff options
| author | 2022-08-29 02:17:22 -0400 | |
|---|---|---|
| committer | 2022-08-29 02:17:22 -0400 | |
| commit | ba3ac631ac4e8820d3d701980782ab4a03c1276b (patch) | |
| tree | 06eecd8b697bf84e96d8347453bb66ba8689fc8b /gallery_dl/postprocessor | |
| parent | 011fcf09a56e256bc5d78bcbc629e6f6f76b053d (diff) | |
| parent | a768930761f7f20587ae40a8cacca0e55c85290a (diff) | |
Update upstream source from tag 'upstream/1.23.0'
Update to upstream version '1.23.0'
with Debian dir 8809d3b22d175263b51492e17e8298cdd52f7af1
Diffstat (limited to 'gallery_dl/postprocessor')
| -rw-r--r-- | gallery_dl/postprocessor/metadata.py | 39 |
1 files changed, 38 insertions, 1 deletions
diff --git a/gallery_dl/postprocessor/metadata.py b/gallery_dl/postprocessor/metadata.py index 2d16db8..d9baed3 100644 --- a/gallery_dl/postprocessor/metadata.py +++ b/gallery_dl/postprocessor/metadata.py @@ -30,6 +30,17 @@ 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") + ext = None else: self.write = self._write_json self.indent = options.get("indent", 4) @@ -99,7 +110,7 @@ class MetadataPP(PostProcessor): with open(path, "w", encoding="utf-8") as fp: self.write(fp, pathfmt.kwdict) except FileNotFoundError: - os.makedirs(directory) + os.makedirs(directory, exist_ok=True) with open(path, "w", encoding="utf-8") as fp: self.write(fp, pathfmt.kwdict) @@ -114,6 +125,32 @@ 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: + obj = kwdict + try: + while "[" in key: + name, _, key = key.partition("[") + obj = obj[name] + key = key.rstrip("]") + del obj[key] + except Exception: + pass + def _directory(self, pathfmt): return pathfmt.realdirectory |
