]> jfr.im git - yt-dlp.git/commitdiff
[outtmpl] Do not traverse `None`
authorpukkandan <redacted>
Sun, 7 Nov 2021 18:53:57 +0000 (00:23 +0530)
committerpukkandan <redacted>
Sun, 7 Nov 2021 18:56:08 +0000 (00:26 +0530)
Closes #1585

test/test_YoutubeDL.py
yt_dlp/utils.py

index bd2d752e2571de8f8890a54402ddc8d5a3f43074..40c4169c8bda07130d75c8bd816826b997c9f746 100644 (file)
@@ -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'
index 75b4ed61b6d47c19e503d106ffc9b1876f782bb9..875ab5e72950395a3178f3190dc99f48f417ac35 100644 (file)
@@ -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 = ...