projects
/
youtube-dl
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[soundcloud] Fix download URL with private tracks
[youtube-dl]
/
youtube_dl
/
extractor
/
soundcloud.py
diff --git
a/youtube_dl/extractor/soundcloud.py
b/youtube_dl/extractor/soundcloud.py
index 2e52e092b0d1193c0f55a718262b1d308408888b..23dcac803252939dae0b2c56b011c1da6fa9e6a7 100644
(file)
--- a/
youtube_dl/extractor/soundcloud.py
+++ b/
youtube_dl/extractor/soundcloud.py
@@
-1,8
+1,8
@@
# coding: utf-8
from __future__ import unicode_literals
# coding: utf-8
from __future__ import unicode_literals
-import re
import itertools
import itertools
+import re
from .common import (
InfoExtractor,
from .common import (
InfoExtractor,
@@
-17,7
+17,7
@@
from ..utils import (
ExtractorError,
int_or_none,
unified_strdate,
ExtractorError,
int_or_none,
unified_strdate,
-)
+
update_url_query
)
class SoundcloudIE(InfoExtractor):
class SoundcloudIE(InfoExtractor):
@@
-160,11
+160,13
@@
class SoundcloudIE(InfoExtractor):
'license': info.get('license'),
}
formats = []
'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
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'),
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,
# 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(
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',
# 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,
})
'ext': ext,
})