diff options
Diffstat (limited to 'youtube_dl/extractor/soundcloud.py')
| -rw-r--r-- | youtube_dl/extractor/soundcloud.py | 19 | 
1 files changed, 13 insertions, 6 deletions
| diff --git a/youtube_dl/extractor/soundcloud.py b/youtube_dl/extractor/soundcloud.py index 316b2c90f..118ca4832 100644 --- a/youtube_dl/extractor/soundcloud.py +++ b/youtube_dl/extractor/soundcloud.py @@ -29,7 +29,7 @@ class SoundcloudIE(InfoExtractor):      _VALID_URL = r'''(?x)^(?:https?://)?                      (?:(?:(?:www\.|m\.)?soundcloud\.com/                              (?P<uploader>[\w\d-]+)/ -                            (?!sets/|likes/?(?:$|[?#])) +                            (?!sets/|(?:likes|tracks)/?(?:$|[?#]))                              (?P<title>[\w\d-]+)/?                              (?P<token>[^?]+?)?(?:[?].*)?$)                         |(?:api\.soundcloud\.com/tracks/(?P<track_id>\d+) @@ -221,7 +221,12 @@ class SoundcloudIE(InfoExtractor):                  info_json_url += "&secret_token=" + token          elif mobj.group('player'):              query = compat_urlparse.parse_qs(compat_urlparse.urlparse(url).query) -            return self.url_result(query['url'][0]) +            real_url = query['url'][0] +            # If the token is in the query of the original url we have to +            # manually add it +            if 'secret_token' in query: +                real_url += '?secret_token=' + query['secret_token'][0] +            return self.url_result(real_url)          else:              # extract uploader (which is in the url)              uploader = mobj.group('uploader') @@ -274,9 +279,8 @@ class SoundcloudSetIE(SoundcloudIE):          info = self._download_json(resolv_url, full_title)          if 'errors' in info: -            for err in info['errors']: -                self._downloader.report_error('unable to download video webpage: %s' % compat_str(err['error_message'])) -            return +            msgs = (compat_str(err['error_message']) for err in info['errors']) +            raise ExtractorError('unable to download video webpage: %s' % ','.join(msgs))          return {              '_type': 'playlist', @@ -303,6 +307,9 @@ class SoundcloudUserIE(SoundcloudIE):              'title': 'The Royal Concept',          },          'playlist_mincount': 1, +    }, { +        'url': 'https://soundcloud.com/the-akashic-chronicler/tracks', +        'only_matching': True,      }]      def _real_extract(self, url): @@ -332,7 +339,7 @@ class SoundcloudUserIE(SoundcloudIE):              if len(new_entries) == 0:                  self.to_screen('%s: End page received' % uploader)                  break -            entries.extend(self._extract_info_dict(e, quiet=True) for e in new_entries) +            entries.extend(self.url_result(e['permalink_url'], 'Soundcloud') for e in new_entries)          return {              '_type': 'playlist', | 
