diff options
Diffstat (limited to 'gallery_dl/config.py')
| -rw-r--r-- | gallery_dl/config.py | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/gallery_dl/config.py b/gallery_dl/config.py index 5303616..a3c71cd 100644 --- a/gallery_dl/config.py +++ b/gallery_dl/config.py @@ -108,6 +108,38 @@ def interpolate(path, key, default=None, *, conf=_config): return default +def interpolate_common(common, paths, key, default=None, *, conf=_config): + """Interpolate the value of 'key' + using multiple 'paths' along a 'common' ancestor + """ + if key in conf: + return conf[key] + + # follow the common path + try: + for p in common: + conf = conf[p] + if key in conf: + default = conf[key] + except Exception: + return default + + # try all paths until a value is found + value = util.SENTINEL + for path in paths: + c = conf + try: + for p in path: + c = c[p] + if key in c: + value = c[key] + except Exception: + pass + if value is not util.SENTINEL: + return value + return default + + def set(path, key, value, *, conf=_config): """Set the value of property 'key' for this session""" for p in path: |
