aboutsummaryrefslogtreecommitdiffstats
path: root/gallery_dl/postprocessor
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@unit193.net>2024-08-03 20:27:44 -0400
committerLibravatarUnit 193 <unit193@unit193.net>2024-08-03 20:27:44 -0400
commit032e5bed275a253e122ed9ac86dac7b8c4204172 (patch)
treeb4eda52ebfe00c4d22e9d633b1ab2d158a9f0573 /gallery_dl/postprocessor
parent80e39a8fc7de105510cbbdca8507f2a4b8c9e01d (diff)
New upstream version 1.27.2.upstream/1.27.2
Diffstat (limited to 'gallery_dl/postprocessor')
-rw-r--r--gallery_dl/postprocessor/metadata.py21
1 files changed, 20 insertions, 1 deletions
diff --git a/gallery_dl/postprocessor/metadata.py b/gallery_dl/postprocessor/metadata.py
index 18d00e1..a520a34 100644
--- a/gallery_dl/postprocessor/metadata.py
+++ b/gallery_dl/postprocessor/metadata.py
@@ -56,7 +56,13 @@ class MetadataPP(PostProcessor):
ext = "json"
directory = options.get("directory")
- if directory:
+ if isinstance(directory, list):
+ self._directory = self._directory_format
+ self._directory_formatters = [
+ formatter.parse(dirfmt, util.NONE).format_map
+ for dirfmt in directory
+ ]
+ elif directory:
self._directory = self._directory_custom
sep = os.sep + (os.altsep or "")
self._metadir = util.expand_path(directory).rstrip(sep) + os.sep
@@ -147,6 +153,19 @@ class MetadataPP(PostProcessor):
def _directory_custom(self, pathfmt):
return os.path.join(pathfmt.realdirectory, self._metadir)
+ def _directory_format(self, pathfmt):
+ formatters = pathfmt.directory_formatters
+ conditions = pathfmt.directory_conditions
+ try:
+ pathfmt.directory_formatters = self._directory_formatters
+ pathfmt.directory_conditions = ()
+ segments = pathfmt.build_directory(pathfmt.kwdict)
+ directory = pathfmt.clean_path(os.sep.join(segments) + os.sep)
+ return os.path.join(pathfmt.realdirectory, directory)
+ finally:
+ pathfmt.directory_conditions = conditions
+ pathfmt.directory_formatters = formatters
+
def _filename(self, pathfmt):
return (pathfmt.filename or "metadata") + "." + self.extension