Fix vimeo error (Closes #224)
[youtube-dl.git] / youtube-dl
index d4eadc9..688ed41 100755 (executable)
@@ -17,7 +17,7 @@ __author__  = (
        )
 
 __license__ = 'Public Domain'
-__version__ = '2011.10.19'
+__version__ = '2011.11.22'
 
 UPDATE_URL = 'https://raw.github.com/rg3/youtube-dl/master/youtube-dl'
 
@@ -278,7 +278,8 @@ def timeconvert(timestr):
        return timestamp
 
 def _simplify_title(title):
-       return re.sub(ur'[^\w\d_\-]+', u'_', title).strip(u'_')
+       expr = re.compile(ur'[^\w\d_\-]+', flags=re.UNICODE)
+       return expr.sub(u'_', title).strip(u'_')
 
 class DownloadError(Exception):
        """Download Error exception.
@@ -2013,7 +2014,7 @@ class VimeoIE(InfoExtractor):
                        self._downloader.trouble(u'ERROR: unable to extract video title')
                        return
                video_title = mobj.group(1).decode('utf-8')
-               simple_title = _simple_title(video_title)
+               simple_title = _simplify_title(video_title)
 
                # Extract uploader
                mobj = re.search(r'<uploader_url>http://vimeo.com/(.*?)</uploader_url>', webpage)
@@ -2937,6 +2938,7 @@ class BlipTVIE(InfoExtractor):
                        if urlh.headers.get('Content-Type', '').startswith('video/'): # Direct download
                                basename = url.split('/')[-1]
                                title,ext = os.path.splitext(basename)
+                               title = title.decode('UTF-8')
                                ext = ext.replace('.', '')
                                self.report_direct_download(title)
                                info = {
@@ -3089,9 +3091,9 @@ class ComedyCentralIE(InfoExtractor):
 
                if mobj.group('shortname'):
                        if mobj.group('shortname') in ('tds', 'thedailyshow'):
-                               url = 'http://www.thedailyshow.com/full-episodes/'
+                               url = u'http://www.thedailyshow.com/full-episodes/'
                        else:
-                               url = 'http://www.colbertnation.com/full-episodes/'
+                               url = u'http://www.colbertnation.com/full-episodes/'
                        mobj = re.match(self._VALID_URL, url)
                        assert mobj is not None
 
@@ -3177,14 +3179,14 @@ class ComedyCentralIE(InfoExtractor):
 
                        self._downloader.increment_downloads()
 
-                       effTitle = showId + '-' + epTitle
+                       effTitle = showId + u'-' + epTitle
                        info = {
                                'id': shortMediaId,
                                'url': video_url,
                                'uploader': showId,
                                'upload_date': officialDate,
                                'title': effTitle,
-                               'stitle': self._simplify_title(effTitle),
+                               'stitle': _simplify_title(effTitle),
                                'ext': 'mp4',
                                'format': format,
                                'thumbnail': None,
@@ -3505,7 +3507,7 @@ class SoundcloudIE(InfoExtractor):
                if mobj:
                        try:
                                upload_date = datetime.datetime.strptime(mobj.group(1), '%B %d, %Y %H:%M').strftime('%Y%m%d')
-                       except Exception as e:
+                       except Exception, e:
                                print str(e)
 
                # for soundcloud, a request to a cross domain is required for cookies