Clean up with the help of pep8
[youtube-dl] / youtube_dl / utils.py
index 1f60d34ae23ad2f36b54072e0b133d3cd2a22149..68a6fae1b1d3c25aabafeb0b198a3ee86761dd33 100644 (file)
@@ -27,9 +27,9 @@ std_headers = {
 }
 
 try:
-    compat_str = unicode # Python 2
+       compat_str = unicode # Python 2
 except NameError:
-    compat_str = str
+       compat_str = str
 
 def preferredencoding():
        """Get preferred encoding.
@@ -37,15 +37,13 @@ def preferredencoding():
        Returns the best encoding scheme for the system, based on
        locale.getpreferredencoding() and some further tweaks.
        """
-       def yield_preferredencoding():
-               try:
-                       pref = locale.getpreferredencoding()
-                       u'TEST'.encode(pref)
-               except:
-                       pref = 'UTF-8'
-               while True:
-                       yield pref
-       return yield_preferredencoding().next()
+       try:
+               pref = locale.getpreferredencoding()
+               u'TEST'.encode(pref)
+       except:
+               pref = 'UTF-8'
+
+       return pref
 
 
 def htmlentity_transform(matchobj):
@@ -128,8 +126,10 @@ class IDParser(HTMLParser.HTMLParser):
        handle_decl = handle_pi = unknown_decl = find_startpos
 
        def get_result(self):
-               if self.result == None: return None
-               if len(self.result) != 3: return None
+               if self.result is None:
+                       return None
+               if len(self.result) != 3:
+                       return None
                lines = self.html.split('\n')
                lines = lines[self.result[1][0]-1:self.result[2][0]]
                lines[0] = lines[0][self.result[1][1]:]
@@ -207,15 +207,23 @@ def sanitize_filename(s, restricted=False):
                elif char == ':':
                        return '_-' if restricted else ' -'
                elif char in '\\/|*<>':
-                       return '-'
-               if restricted and (char in '&\'' or char.isspace()):
+                       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 """
@@ -308,7 +316,7 @@ class ContentTooShortError(Exception):
 
 class Trouble(Exception):
        """Trouble helper exception
-       
+
        This is an exception to be handled with
        FileDownloader.trouble
        """