mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2025-03-09 12:50:23 -05:00
Merge 3492c0123f
into 05c8023a27
This commit is contained in:
commit
1acba47914
2 changed files with 17 additions and 7 deletions
|
@ -802,7 +802,7 @@ def test(tmpl, expected, *, info=None, **params):
|
|||
test('%(id)s', '-abcd', info={'id': '-abcd'})
|
||||
test('%(id)s', '.abcd', info={'id': '.abcd'})
|
||||
test('%(id)s', 'ab__cd', info={'id': 'ab__cd'})
|
||||
test('%(id)s', ('ab:cd', 'ab:cd'), info={'id': 'ab:cd'})
|
||||
test('%(id)s', ('ab:cd', 'ab\u0589cd'), info={'id': 'ab:cd'})
|
||||
test('%(id.0)s', '-', info={'id': '--'})
|
||||
|
||||
# Invalid templates
|
||||
|
@ -861,7 +861,7 @@ def expect_same_infodict(out):
|
|||
test('%(formats)j', (json.dumps(FORMATS), None))
|
||||
test('%(formats)#j', (
|
||||
json.dumps(FORMATS, indent=4),
|
||||
json.dumps(FORMATS, indent=4).replace(':', ':').replace('"', '"').replace('\n', ' '),
|
||||
json.dumps(FORMATS, indent=4).replace(':', '\u0589').replace('"', '\u2033').replace('\n', ' '),
|
||||
))
|
||||
test('%(title5).3B', 'á')
|
||||
test('%(title5)U', 'áéí 𝐀')
|
||||
|
@ -872,13 +872,13 @@ def expect_same_infodict(out):
|
|||
test('%(filesize)#D', '1Ki')
|
||||
test('%(height)5.2D', ' 1.08k')
|
||||
test('%(title4)#S', 'foo_bar_test')
|
||||
test('%(title4).10S', ('foo "bar" ', 'foo "bar"' + ('#' if os.name == 'nt' else ' ')))
|
||||
test('%(title4).10S', ('foo \u2033bar\u2033 ', 'foo \u2033bar\u2033' + ('#' if os.name == 'nt' else ' ')))
|
||||
if os.name == 'nt':
|
||||
test('%(title4)q', ('"foo ""bar"" test"', None))
|
||||
test('%(formats.:.id)#q', ('"id 1" "id 2" "id 3"', None))
|
||||
test('%(formats.0.id)#q', ('"id 1"', None))
|
||||
else:
|
||||
test('%(title4)q', ('\'foo "bar" test\'', '\'foo "bar" test\''))
|
||||
test('%(title4)q', ('\'foo "bar" test\'', '\'foo \u2033bar\u2033 test\''))
|
||||
test('%(formats.:.id)#q', "'id 1' 'id 2' 'id 3'")
|
||||
test('%(formats.0.id)#q', "'id 1'")
|
||||
|
||||
|
@ -903,7 +903,7 @@ def expect_same_infodict(out):
|
|||
for f in FORMATS])
|
||||
test('%(formats.:.{id,height.:2})j', (out, None))
|
||||
test('%(formats.:.{id,height}.id)l', ', '.join(f['id'] for f in FORMATS))
|
||||
test('%(.{id,title})j', ('{"id": "1234"}', '{"id": "1234"}'))
|
||||
test('%(.{id,title})j', ('{"id": "1234"}', '{\u2033id\u2033\u0589 \u20331234\u2033}'))
|
||||
|
||||
# Alternates
|
||||
test('%(title,id)s', '1234')
|
||||
|
|
|
@ -639,8 +639,18 @@ def replace_insane(char):
|
|||
elif not restricted and char == '\n':
|
||||
return '\0 '
|
||||
elif is_id is NO_DEFAULT and not restricted and char in '"*:<>?|/\\':
|
||||
# Replace with their full-width unicode counterparts
|
||||
return {'/': '\u29F8', '\\': '\u29f9'}.get(char, chr(ord(char) + 0xfee0))
|
||||
# Replace with lookalike characters
|
||||
return {
|
||||
'"': '\u2033',
|
||||
'*': '\uA60E',
|
||||
':': '\u0589',
|
||||
'<': '\u227A',
|
||||
'>': '\u227B',
|
||||
'?': '\uFF1F',
|
||||
'|': '\u01C0',
|
||||
'/': '\u29F8',
|
||||
'\\': '\u29f9',
|
||||
}[char]
|
||||
elif char == '?' or ord(char) < 32 or ord(char) == 127:
|
||||
return ''
|
||||
elif char == '"':
|
||||
|
|
Loading…
Reference in a new issue