aboutsummaryrefslogtreecommitdiff
path: root/youtube_dl
diff options
context:
space:
mode:
authorTatsuyuki Ishi <ishitatsuyuki@gmail.com>2017-09-01 17:08:24 +0900
committerSergey M․ <dstftw@gmail.com>2017-09-03 16:28:34 +0700
commit73602bcd0c254b735cc93ce5ffeca9e98228190e (patch)
tree838646207a4e3da43490894ccdf37ccf5c513306 /youtube_dl
parent23b2df82c70a832e485aaf52befa26e27a904995 (diff)
[soundcloud] Fix download URL with private tracks
Diffstat (limited to 'youtube_dl')
-rw-r--r--youtube_dl/extractor/soundcloud.py19
1 files changed, 9 insertions, 10 deletions
diff --git a/youtube_dl/extractor/soundcloud.py b/youtube_dl/extractor/soundcloud.py
index 2e52e092b..23dcac803 100644
--- a/youtube_dl/extractor/soundcloud.py
+++ b/youtube_dl/extractor/soundcloud.py
@@ -1,8 +1,8 @@
# coding: utf-8
from __future__ import unicode_literals
-import re
import itertools
+import re
from .common import (
InfoExtractor,
@@ -17,7 +17,7 @@ from ..utils import (
ExtractorError,
int_or_none,
unified_strdate,
-)
+ update_url_query)
class SoundcloudIE(InfoExtractor):
@@ -160,11 +160,13 @@ class SoundcloudIE(InfoExtractor):
'license': info.get('license'),
}
formats = []
+ query = {'client_id': self._CLIENT_ID}
+ if secret_token is not None:
+ query['secret_token'] = secret_token
if info.get('downloadable', False):
# We can build a direct link to the song
- format_url = (
- 'https://api.soundcloud.com/tracks/{0}/download?client_id={1}'.format(
- track_id, self._CLIENT_ID))
+ format_url = update_url_query(
+ 'https://api.soundcloud.com/tracks/{0}/download'.format(track_id), query)
formats.append({
'format_id': 'download',
'ext': info.get('original_format', 'mp3'),
@@ -176,10 +178,7 @@ class SoundcloudIE(InfoExtractor):
# We have to retrieve the url
format_dict = self._download_json(
'https://api.soundcloud.com/i1/tracks/%s/streams' % track_id,
- track_id, 'Downloading track url', query={
- 'client_id': self._CLIENT_ID,
- 'secret_token': secret_token,
- })
+ track_id, 'Downloading track url', query=query)
for key, stream_url in format_dict.items():
abr = int_or_none(self._search_regex(
@@ -216,7 +215,7 @@ class SoundcloudIE(InfoExtractor):
# cannot be always used, sometimes it can give an HTTP 404 error
formats.append({
'format_id': 'fallback',
- 'url': info['stream_url'] + '?client_id=' + self._CLIENT_ID,
+ 'url': update_url_query(info['stream_url'], query),
'ext': ext,
})