[outtmpl] Do not traverse `None`

Closes #1585
pull/1592/head
pukkandan 3 years ago
parent aeec0e44e2
commit 582fad70f5
No known key found for this signature in database
GPG Key ID: 0F00D95A001F4698

@ -737,6 +737,7 @@ class TestYoutubeDL(unittest.TestCase):
test(NA_TEST_OUTTMPL, 'NA-NA-def-1234.mp4') 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, 'none-none-def-1234.mp4', outtmpl_na_placeholder='none')
test(NA_TEST_OUTTMPL, '--def-1234.mp4', outtmpl_na_placeholder='') test(NA_TEST_OUTTMPL, '--def-1234.mp4', outtmpl_na_placeholder='')
test('%(non_existent.0)s', 'NA')
# String formatting # String formatting
FMT_TEST_OUTTMPL = '%%(height)%s.%%(ext)s' FMT_TEST_OUTTMPL = '%%(height)%s.%%(ext)s'

@ -6442,10 +6442,10 @@ def traverse_obj(
def _traverse_obj(obj, path, _current_depth=0): def _traverse_obj(obj, path, _current_depth=0):
nonlocal depth nonlocal depth
if obj is None:
return None
path = tuple(variadic(path)) path = tuple(variadic(path))
for i, key in enumerate(path): for i, key in enumerate(path):
if obj is None:
return None
if isinstance(key, (list, tuple)): if isinstance(key, (list, tuple)):
obj = [_traverse_obj(obj, sub_key, _current_depth) for sub_key in key] obj = [_traverse_obj(obj, sub_key, _current_depth) for sub_key in key]
key = ... key = ...

Loading…
Cancel
Save