]> gitweb @ CieloNegro.org - youtube-dl.git/blobdiff - youtube_dl/utils.py
reorganized the titles sanitizing: now title is the untouched title
[youtube-dl.git] / youtube_dl / utils.py
index 0f903c64a0d8c71517378143ecad1caf07cb5893..ae30da53e3b73441c2e39b1c8d8bd139054871fa 100644 (file)
@@ -11,16 +11,12 @@ import sys
 import zlib
 import urllib2
 import email.utils
+import json
 
 try:
        import cStringIO as StringIO
 except ImportError:
        import StringIO
-               
-try:
-       import json
-except ImportError: # Python <2.6, use trivialjson (https://github.com/phihag/trivialjson):
-       import trivialjson as json
 
 std_headers = {
        'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:5.0.1) Gecko/20100101 Firefox/5.0.1',
@@ -160,12 +156,6 @@ def clean_html(html):
        return html
 
 
-def sanitize_title(utitle):
-       """Sanitizes a video title so it could be used as part of a filename."""
-       utitle = unescapeHTML(utitle)
-       return utitle.replace(unicode(os.sep), u'%')
-
-
 def sanitize_open(filename, open_mode):
        """Try to open the given filename, and slightly tweak it if this fails.
 
@@ -200,10 +190,14 @@ def timeconvert(timestr):
        if timetuple is not None:
                timestamp = email.utils.mktime_tz(timetuple)
        return timestamp
-
-def simplify_title(title):
-       expr = re.compile(ur'[^\w\d_\-]+', flags=re.UNICODE)
-       return expr.sub(u'_', title).strip(u'_')
+       
+def sanitize_filename(s):
+       """Sanitizes a string so it could be used as part of a filename."""
+       def replace_insane(char):
+               if char in u' .\\/|?*<>:"' or ord(char) < 32:
+                       return '_'
+               return char
+       return u''.join(map(replace_insane, s)).strip('_')
 
 def orderedSet(iterable):
        """ Remove all duplicates from the input iterable """
@@ -294,6 +288,13 @@ class ContentTooShortError(Exception):
                self.expected = expected
 
 
+class Trouble(Exception):
+       """Trouble helper exception
+       
+       This is an exception to be handled with
+       FileDownloader.trouble
+       """
+
 class YoutubeDLHandler(urllib2.HTTPHandler):
        """Handler for HTTP requests and responses.