- result['url'] = 'https://api.soundcloud.com/tracks/{0}/download?client_id={1}'.format(track_id, self._CLIENT_ID)
- else:
- # We have to retrieve the url
- stream_json = self._download_webpage(
- 'http://api.soundcloud.com/i1/tracks/{0}/streams?client_id={1}'.format(track_id, self._IPHONE_CLIENT_ID),
- track_id, u'Downloading track url')
- # There should be only one entry in the dictionary
- key, stream_url = list(json.loads(stream_json).items())[0]
- if key.startswith(u'http'):
- result['url'] = stream_url
- elif key.startswith(u'rtmp'):
+ format_url = (
+ 'https://api.soundcloud.com/tracks/{0}/download?client_id={1}'.format(
+ track_id, self._CLIENT_ID))
+ formats.append({
+ 'format_id': 'download',
+ 'ext': info.get('original_format', 'mp3'),
+ 'url': format_url,
+ 'vcodec': 'none',
+ 'preference': 10,
+ })
+
+ # We have to retrieve the url
+ streams_url = ('http://api.soundcloud.com/i1/tracks/{0}/streams?'
+ 'client_id={1}&secret_token={2}'.format(track_id, self._IPHONE_CLIENT_ID, secret_token))
+ stream_json = self._download_webpage(
+ streams_url,
+ track_id, 'Downloading track url')
+
+ format_dict = json.loads(stream_json)
+ for key, stream_url in format_dict.items():
+ if key.startswith('http'):
+ formats.append({
+ 'format_id': key,
+ 'ext': ext,
+ 'url': stream_url,
+ 'vcodec': 'none',
+ })
+ elif key.startswith('rtmp'):