aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--test/test_YoutubeDL.py2
-rw-r--r--yt_dlp/YoutubeDL.py10
-rw-r--r--yt_dlp/utils/_utils.py2
3 files changed, 7 insertions, 7 deletions
diff --git a/test/test_YoutubeDL.py b/test/test_YoutubeDL.py
index ee6c52713..ccc9e36f3 100644
--- a/test/test_YoutubeDL.py
+++ b/test/test_YoutubeDL.py
@@ -755,7 +755,7 @@ class TestYoutubeDL(unittest.TestCase):
test('%(id)d %(id)r', "1234 '1234'")
test('%(id)r %(height)r', "'1234' 1080")
test('%(ext)s-%(ext|def)d', 'mp4-def')
- test('%(width|0)04d', '0000')
+ test('%(width|0)04d', '0')
test('a%(width|b)d', 'ab', outtmpl_na_placeholder='none')
FORMATS = self.outtmpl_info['formats']
diff --git a/yt_dlp/YoutubeDL.py b/yt_dlp/YoutubeDL.py
index 077a37b30..a546ce65b 100644
--- a/yt_dlp/YoutubeDL.py
+++ b/yt_dlp/YoutubeDL.py
@@ -1286,17 +1286,17 @@ class YoutubeDL:
if fmt == 's' and value is not None and key in field_size_compat_map.keys():
fmt = f'0{field_size_compat_map[key]:d}d'
- if value is None:
- value = default
- elif replacement is not None:
+ if None not in (value, replacement):
try:
value = replacement_formatter.format(replacement, value)
except ValueError:
- value = na
+ value, default = None, na
flags = outer_mobj.group('conversion') or ''
str_fmt = f'{fmt[:-1]}s'
- if fmt[-1] == 'l': # list
+ if value is None:
+ value, fmt = default, 's'
+ elif fmt[-1] == 'l': # list
delim = '\n' if '#' in flags else ', '
value, fmt = delim.join(map(str, variadic(value, allowed_types=(str, bytes)))), str_fmt
elif fmt[-1] == 'j': # json
diff --git a/yt_dlp/utils/_utils.py b/yt_dlp/utils/_utils.py
index 256e2db5a..d10d621d5 100644
--- a/yt_dlp/utils/_utils.py
+++ b/yt_dlp/utils/_utils.py
@@ -3302,7 +3302,7 @@ STR_FORMAT_RE_TMPL = r'''(?x)
'''
-STR_FORMAT_TYPES = 'diouxXeEfFgGcrs'
+STR_FORMAT_TYPES = 'diouxXeEfFgGcrsa'
def limit_length(s, length):