X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;ds=inline;f=youtube_dl%2Futils.py;h=4ace22c2fc232ecacef491fd6ac6ecbd0ca3df01;hb=17cb14a33677cd37cd481f8ed7cff37fdab80f9d;hp=55f2fe02c0dc204ed6036bdab205896679699f71;hpb=1c469a9480e9d8bea45950898eb46e07b0c58290;p=youtube-dl diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py index 55f2fe02c..4ace22c2f 100644 --- a/youtube_dl/utils.py +++ b/youtube_dl/utils.py @@ -203,19 +203,27 @@ def sanitize_filename(s, restricted=False): if char == '?' or ord(char) < 32 or ord(char) == 127: return '' elif char == '"': - return '' if restricted else 'FOO\'' + return '' if restricted else '\'' elif char == ':': return '_-' if restricted else ' -' elif char in '\\/|*<>': - return '-' + return '_' if restricted and (char in '&\'' or char.isspace()): return '_' + if restricted and ord(char) > 127: + return '_' return char result = u''.join(map(replace_insane, s)) - while '--' in result: - result = result.replace('--', '-') - return result.strip('-') + while '__' in result: + result = result.replace('__', '_') + result = result.strip('_') + # Common case of "Foreign band name - English song title" + if restricted and result.startswith('-_'): + result = result[2:] + if not result: + result = '_' + return result def orderedSet(iterable): """ Remove all duplicates from the input iterable """