Merge remote-tracking branch 'joelverhagen/master'
[youtube-dl] / youtube_dl / utils.py
index 55f2fe02c0dc204ed6036bdab205896679699f71..4ace22c2fc232ecacef491fd6ac6ecbd0ca3df01 100644 (file)
@@ -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 """