Skip to content

Commit

Permalink
[outtmpl] Smarter replacing of unsupported characters
Browse files Browse the repository at this point in the history
  • Loading branch information
pukkandan committed Aug 4, 2022
1 parent 05e2243 commit 989a01c
Showing 1 changed file with 6 additions and 0 deletions.
6 changes: 6 additions & 0 deletions yt_dlp/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
import time
import traceback
import types
import unicodedata
import urllib.error
import urllib.parse
import urllib.request
Expand Down Expand Up @@ -647,6 +648,9 @@ def replace_insane(char):
return ACCENT_CHARS[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))
elif char == '?' or ord(char) < 32 or ord(char) == 127:
return ''
elif char == '"':
Expand All @@ -659,6 +663,8 @@ def replace_insane(char):
return '\0_'
return char

if restricted and is_id is NO_DEFAULT:
s = unicodedata.normalize('NFKC', s)
s = re.sub(r'[0-9]+(?::[0-9]+)+', lambda m: m.group(0).replace(':', '_'), s) # Handle timestamps
result = ''.join(map(replace_insane, s))
if is_id is NO_DEFAULT:
Expand Down

0 comments on commit 989a01c

Please sign in to comment.