aboutsummaryrefslogtreecommitdiff
path: root/youtube_dl
diff options
context:
space:
mode:
authordirkf <fieldhouse@gmx.net>2023-05-03 12:40:09 +0100
committerdirkf <fieldhouse@gmx.net>2023-07-19 22:14:50 +0100
commit825a40744bf9aeb743452db24e43d3eb61feb6c2 (patch)
tree3cf1be097f4352ec0272c0d3c31043f06957ce4a /youtube_dl
parent47214e46d852e9d7ddf81d69a8e70806e2396c6c (diff)
downloadyoutube-dl-825a40744bf9aeb743452db24e43d3eb61feb6c2.tar.xz
[utils] Align traverse_obj() with yt-dlp
Thanks Grub4k for these: * traverse `Iterable`s, from https://github.com/yt-dlp/yt-dlp/pull/6902, etc * traverse `set` key for transformations/filters, `re.Match` group names, from https://github.com/yt-dlp/yt-dlp/commit/776995bc109c5cd1aa56b684fada2ce718a386ec, etc * traverse `re.Match`es, from https://github.com/yt-dlp/yt-dlp/pull/5174 * always return list when branching, from https://github.com/yt-dlp/yt-dlp/pull/5170
Diffstat (limited to 'youtube_dl')
-rw-r--r--youtube_dl/utils.py9
1 files changed, 2 insertions, 7 deletions
diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py
index 494f8341b..b77a7fb0e 100644
--- a/youtube_dl/utils.py
+++ b/youtube_dl/utils.py
@@ -4268,13 +4268,8 @@ def variadic(x, allowed_types=NO_DEFAULT):
def dict_get(d, key_or_keys, default=None, skip_false_values=True):
- if isinstance(key_or_keys, (list, tuple)):
- for key in key_or_keys:
- if key not in d or d[key] is None or skip_false_values and not d[key]:
- continue
- return d[key]
- return default
- return d.get(key_or_keys, default)
+ exp = (lambda x: x or None) if skip_false_values else IDENTITY
+ return traverse_obj(d, *variadic(key_or_keys), expected_type=exp, default=default)
def try_call(*funcs, **kwargs):