From 582fad70f547b7008495400b38c8b32c3412cd27 Mon Sep 17 00:00:00 2001 From: pukkandan Date: Mon, 8 Nov 2021 00:23:57 +0530 Subject: [PATCH] [outtmpl] Do not traverse `None` Closes #1585 --- test/test_YoutubeDL.py | 1 + yt_dlp/utils.py | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/test/test_YoutubeDL.py b/test/test_YoutubeDL.py index bd2d752e25..40c4169c8b 100644 --- a/test/test_YoutubeDL.py +++ b/test/test_YoutubeDL.py @@ -737,6 +737,7 @@ def expect_same_infodict(out): test(NA_TEST_OUTTMPL, 'NA-NA-def-1234.mp4') test(NA_TEST_OUTTMPL, 'none-none-def-1234.mp4', outtmpl_na_placeholder='none') test(NA_TEST_OUTTMPL, '--def-1234.mp4', outtmpl_na_placeholder='') + test('%(non_existent.0)s', 'NA') # String formatting FMT_TEST_OUTTMPL = '%%(height)%s.%%(ext)s' diff --git a/yt_dlp/utils.py b/yt_dlp/utils.py index 75b4ed61b6..875ab5e729 100644 --- a/yt_dlp/utils.py +++ b/yt_dlp/utils.py @@ -6442,10 +6442,10 @@ def traverse_obj( def _traverse_obj(obj, path, _current_depth=0): nonlocal depth - if obj is None: - return None path = tuple(variadic(path)) for i, key in enumerate(path): + if obj is None: + return None if isinstance(key, (list, tuple)): obj = [_traverse_obj(obj, sub_key, _current_depth) for sub_key in key] key = ...