projects
/
youtube-dl
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
release 2018.08.04
[youtube-dl]
/
youtube_dl
/
extractor
/
mixcloud.py
diff --git
a/youtube_dl/extractor/mixcloud.py
b/youtube_dl/extractor/mixcloud.py
index f331db89075864c52733375c46b15fed74ef0e77..b7bccb504529d7ca1e7f70ced45d86b9259d454b 100644
(file)
--- a/
youtube_dl/extractor/mixcloud.py
+++ b/
youtube_dl/extractor/mixcloud.py
@@
-1,12
+1,12
@@
from __future__ import unicode_literals
from __future__ import unicode_literals
-import base64
import functools
import itertools
import re
from .common import InfoExtractor
from ..compat import (
import functools
import itertools
import re
from .common import InfoExtractor
from ..compat import (
+ compat_b64decode,
compat_chr,
compat_ord,
compat_str,
compat_chr,
compat_ord,
compat_str,
@@
-79,7
+79,7
@@
class MixcloudIE(InfoExtractor):
if encrypted_play_info is not None:
# Decode
if encrypted_play_info is not None:
# Decode
- encrypted_play_info =
base64.
b64decode(encrypted_play_info)
+ encrypted_play_info =
compat_
b64decode(encrypted_play_info)
else:
# New path
full_info_json = self._parse_json(self._html_search_regex(
else:
# New path
full_info_json = self._parse_json(self._html_search_regex(
@@
-109,7
+109,7
@@
class MixcloudIE(InfoExtractor):
kpa_target = encrypted_play_info
else:
kps = ['https://', 'http://']
kpa_target = encrypted_play_info
else:
kps = ['https://', 'http://']
- kpa_target =
base64.
b64decode(info_json['streamInfo']['url'])
+ kpa_target =
compat_
b64decode(info_json['streamInfo']['url'])
for kp in kps:
partial_key = self._decrypt_xor_cipher(kpa_target, kp)
for quote in ["'", '"']:
for kp in kps:
partial_key = self._decrypt_xor_cipher(kpa_target, kp)
for quote in ["'", '"']:
@@
-165,7
+165,7
@@
class MixcloudIE(InfoExtractor):
format_url = stream_info.get(url_key)
if not format_url:
continue
format_url = stream_info.get(url_key)
if not format_url:
continue
- decrypted = self._decrypt_xor_cipher(key,
base64.
b64decode(format_url))
+ decrypted = self._decrypt_xor_cipher(key,
compat_
b64decode(format_url))
if not decrypted:
continue
if url_key == 'hlsUrl':
if not decrypted:
continue
if url_key == 'hlsUrl':
@@
-179,6
+179,10
@@
class MixcloudIE(InfoExtractor):
formats.append({
'format_id': 'http',
'url': decrypted,
formats.append({
'format_id': 'http',
'url': decrypted,
+ 'downloader_options': {
+ # Mixcloud starts throttling at >~5M
+ 'http_chunk_size': 5242880,
+ },
})
self._sort_formats(formats)
})
self._sort_formats(formats)
@@
-291,7
+295,7
@@
class MixcloudUserIE(MixcloudPlaylistBaseIE):
functools.partial(
self._tracks_page_func,
'%s/%s' % (user_id, list_type), video_id, 'list of %s' % list_type),
functools.partial(
self._tracks_page_func,
'%s/%s' % (user_id, list_type), video_id, 'list of %s' % list_type),
- self._PAGE_SIZE
, use_cache=True
)
+ self._PAGE_SIZE)
return self.playlist_result(
entries, video_id, '%s (%s)' % (username, list_type), description)
return self.playlist_result(
entries, video_id, '%s (%s)' % (username, list_type), description)