From 1619ab3e67d8dc4f86fc7ed292c79345bc0d91a0 Mon Sep 17 00:00:00 2001 From: pukkandan Date: Wed, 21 Jun 2023 06:49:56 +0530 Subject: [PATCH] Bugfix for ebe1b4e34f43c3acad30e4bcb8484681a030c114 --- test/test_YoutubeDL.py | 2 ++ yt_dlp/YoutubeDL.py | 10 ++++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/test/test_YoutubeDL.py b/test/test_YoutubeDL.py index 05dd3ed412..f495fa6d90 100644 --- a/test/test_YoutubeDL.py +++ b/test/test_YoutubeDL.py @@ -630,6 +630,7 @@ class TestYoutubeDL(unittest.TestCase): self.assertEqual(test_dict['playlist'], 'funny videos') outtmpl_info = { + 'id': '1234', 'id': '1234', 'ext': 'mp4', 'width': None, @@ -754,6 +755,7 @@ class TestYoutubeDL(unittest.TestCase): test('%(ext)c', 'm') test('%(id)d %(id)r', "1234 '1234'") test('%(id)r %(height)r', "'1234' 1080") + test('%(title5)a %(height)a', (R"'\xe1\xe9\xed \U0001d400' 1080", None)) test('%(ext)s-%(ext|def)d', 'mp4-def') test('%(width|0)04d', '0') test('a%(width|b)d', 'ab', outtmpl_na_placeholder='none') diff --git a/yt_dlp/YoutubeDL.py b/yt_dlp/YoutubeDL.py index 503aafbc77..bc5c1b95ee 100644 --- a/yt_dlp/YoutubeDL.py +++ b/yt_dlp/YoutubeDL.py @@ -1328,17 +1328,19 @@ class YoutubeDL: value = str(value)[0] else: fmt = str_fmt - elif fmt[-1] not in 'rs': # numeric + elif fmt[-1] not in 'rsa': # numeric value = float_or_none(value) if value is None: value, fmt = default, 's' if sanitize: + # If value is an object, sanitize might convert it to a string + # So we convert it to repr first if fmt[-1] == 'r': - # If value is an object, sanitize might convert it to a string - # So we convert it to repr first value, fmt = repr(value), str_fmt - if fmt[-1] in 'csr': + elif fmt[-1] == 'a': + value, fmt = ascii(value), str_fmt + if fmt[-1] in 'csra': value = sanitizer(initial_field, value) key = '%s\0%s' % (key.replace('%', '%\0'), outer_mobj.group('format'))