diff --git a/gallery_dl/config.py b/gallery_dl/config.py index 9a02f307..e351a810 100644 --- a/gallery_dl/config.py +++ b/gallery_dl/config.py @@ -68,6 +68,18 @@ def set(keys, value): conf = temp conf[keys[-1]] = value +def setdefault(keys, value): + """Set the value of property 'key' if it doesn't exist""" + conf = _config + for k in keys[:-1]: + try: + conf = conf[k] + except KeyError: + temp = {} + conf[k] = temp + conf = temp + return conf.setdefault(keys[-1], value) + # -------------------------------------------------------------------- # internals diff --git a/test/test_config.py b/test/test_config.py index f8017626..7644e73f 100644 --- a/test/test_config.py +++ b/test/test_config.py @@ -36,6 +36,12 @@ class TestConfig(unittest.TestCase): self.assertEqual(config.get(["b", "c"]), [1, 2, 3]) self.assertEqual(config.get(["e", "f", "g"]), 234) + def test_setdefault(self): + config.setdefault(["b", "c"], [1, 2, 3]) + config.setdefault(["e", "f", "g"], value=234) + self.assertEqual(config.get(["b", "c"]), "text") + self.assertEqual(config.get(["e", "f", "g"]), 234) + def test_interpolate(self): self.assertEqual(config.interpolate(["a"]), "1") self.assertEqual(config.interpolate(["b", "a"]), "1")