diff --git a/gallery_dl/util.py b/gallery_dl/util.py index 931b196d..1d9c9c66 100644 --- a/gallery_dl/util.py +++ b/gallery_dl/util.py @@ -331,6 +331,9 @@ class Formatter(): """Return value called 'field_name' from 'kwargs'""" first, rest = _string.formatter_field_name_split(field_name) + if first not in kwargs: + return None + obj = kwargs[first] for is_attr, i in rest: if is_attr: diff --git a/test/test_util.py b/test/test_util.py index cf972e36..7cc82cc1 100644 --- a/test/test_util.py +++ b/test/test_util.py @@ -175,6 +175,13 @@ class TestFormatter(unittest.TestCase): self._run_test("{name}{title4:?//}", "Name") self._run_test("{name}{title4:? **/''/}", "Name") + def test_missing(self): + replacement = "None" + self._run_test("{missing}", replacement) + self._run_test("{missing.attr}", replacement) + self._run_test("{missing[key]}", replacement) + self._run_test("{missing?a/b/}", replacement) + def _run_test(self, format_string, result): formatter = util.Formatter() output = formatter.vformat(format_string, self.kwdict)