summaryrefslogtreecommitdiffstats
path: root/gallery_dl/postprocessor/metadata.py
diff options
context:
space:
mode:
Diffstat (limited to 'gallery_dl/postprocessor/metadata.py')
-rw-r--r--gallery_dl/postprocessor/metadata.py23
1 files changed, 15 insertions, 8 deletions
diff --git a/gallery_dl/postprocessor/metadata.py b/gallery_dl/postprocessor/metadata.py
index 714f4fe..5004bed 100644
--- a/gallery_dl/postprocessor/metadata.py
+++ b/gallery_dl/postprocessor/metadata.py
@@ -124,10 +124,8 @@ class MetadataPP(PostProcessor):
for key, func in self.fields.items():
obj = kwdict
try:
- while "[" in key:
- name, _, key = key.partition("[")
- obj = obj[name]
- key = key.rstrip("]")
+ if "[" in key:
+ obj, key = _traverse(obj, key)
obj[key] = func(kwdict)
except Exception:
pass
@@ -137,10 +135,8 @@ class MetadataPP(PostProcessor):
for key in self.fields:
obj = kwdict
try:
- while "[" in key:
- name, _, key = key.partition("[")
- obj = obj[name]
- key = key.rstrip("]")
+ if "[" in key:
+ obj, key = _traverse(obj, key)
del obj[key]
except Exception:
pass
@@ -214,4 +210,15 @@ class MetadataPP(PostProcessor):
)
+def _traverse(obj, key):
+ name, _, key = key.partition("[")
+ obj = obj[name]
+
+ while "[" in key:
+ name, _, key = key.partition("[")
+ obj = obj[name.strip("\"']")]
+
+ return obj, key.strip("\"']")
+
+
__postprocessor__ = MetadataPP