]> git.bitcoin.ninja Git - youtube-dl/blobdiff - youtube_dl/InfoExtractors.py
Better error reporting for SoundCloud IE
[youtube-dl] / youtube_dl / InfoExtractors.py
index 036132167a84788b2fe8e0aca7c1720f3c8296b3..334eb59d8745ec4ca4a2518b0516f1f86b4cf17b 100644 (file)
@@ -486,8 +486,8 @@ class YoutubeIE(InfoExtractor):
             # Extension
             video_extension = self._video_extensions.get(format_param, 'flv')
 
-            video_format = '{} - {}'.format(format_param if format_param else video_extension,
-                                            self._video_dimensions.get(format_param, '???'))
+            video_format = '{0} - {1}'.format(format_param if format_param else video_extension,
+                                              self._video_dimensions.get(format_param, '???'))
 
             results.append({
                 'id':       video_id,
@@ -1671,7 +1671,7 @@ class YahooSearchIE(InfoExtractor):
 class YoutubePlaylistIE(InfoExtractor):
     """Information Extractor for YouTube playlists."""
 
-    _VALID_URL = r'(?:(?:https?://)?(?:\w+\.)?youtube\.com/(?:(?:course|view_play_list|my_playlists|artist|playlist)\?.*?(p|a|list)=|user/.*?/user/|p/|user/.*?#[pg]/c/)(?:PL|EC)?|PL|EC)([0-9A-Za-z-_]+)(?:/.*?/([0-9A-Za-z_-]+))?.*'
+    _VALID_URL = r'(?:(?:https?://)?(?:\w+\.)?youtube\.com/(?:(?:course|view_play_list|my_playlists|artist|playlist)\?.*?(p|a|list)=|user/.*?/user/|p/|user/.*?#[pg]/c/)(?:PL|EC)?|PL|EC)([0-9A-Za-z-_]{10,})(?:/.*?/([0-9A-Za-z_-]+))?.*'
     _TEMPLATE_URL = 'http://www.youtube.com/%s?%s=%s&page=%s&gl=US&hl=en'
     _VIDEO_INDICATOR_TEMPLATE = r'/watch\?v=(.+?)&([^&"]+&)*list=.*?%s'
     _MORE_PAGES_INDICATOR = r'yt-uix-pager-next'
@@ -2649,6 +2649,7 @@ class EscapistIE(InfoExtractor):
 class CollegeHumorIE(InfoExtractor):
     """Information extractor for collegehumor.com"""
 
+    _WORKING = False
     _VALID_URL = r'^(?:https?://)?(?:www\.)?collegehumor\.com/video/(?P<videoid>[0-9]+)/(?P<shorttitle>.*)$'
     IE_NAME = u'collegehumor'
 
@@ -2817,16 +2818,18 @@ class SoundcloudIE(InfoExtractor):
             return
 
         # extract uploader (which is in the url)
-        uploader = mobj.group(1).decode('utf-8')
+        uploader = mobj.group(1)
         # extract simple title (uploader + slug of song title)
-        slug_title =  mobj.group(2).decode('utf-8')
+        slug_title =  mobj.group(2)
         simple_title = uploader + u'-' + slug_title
 
         self.report_webpage('%s/%s' % (uploader, slug_title))
 
-        request = compat_urllib_request.Request('http://soundcloud.com/%s/%s' % (uploader, slug_title))
+        url = 'https://soundcloud.com/%s/%s' % (uploader, slug_title)
+        request = compat_urllib_request.Request(url)
         try:
-            webpage = compat_urllib_request.urlopen(request).read()
+            urlo = compat_urllib_request.urlopen(request).read()
+            webpage = webpage_bytes.decode('utf-8')
         except (compat_urllib_error.URLError, compat_http_client.HTTPException, socket.error) as err:
             self._downloader.trouble(u'ERROR: unable to download video webpage: %s' % compat_str(err))
             return
@@ -2838,11 +2841,14 @@ class SoundcloudIE(InfoExtractor):
         if mobj:
             video_id = mobj.group(1)
             stream_token = mobj.group(2)
+        else:
+            self._downloader.trouble(u'ERROR: unable to find video ID in Soundcloud file')
+            return
 
         # extract unsimplified title
         mobj = re.search('"title":"(.*?)",', webpage)
         if mobj:
-            title = mobj.group(1).decode('utf-8')
+            title = mobj.group(1)
         else:
             title = simple_title
 
@@ -2869,13 +2875,13 @@ class SoundcloudIE(InfoExtractor):
         request = compat_urllib_request.Request('http://media.soundcloud.com/crossdomain.xml', std_headers)
 
         return [{
-            'id':       video_id.decode('utf-8'),
+            'id':       video_id,
             'url':      mediaURL,
-            'uploader': uploader.decode('utf-8'),
+            'uploader': uploader,
             'upload_date':  upload_date,
             'title':    title,
             'ext':      u'mp3',
-            'description': description.decode('utf-8')
+            'description': description
         }]