|
|
@ -18,7 +18,7 @@ class MixcloudIE(InfoExtractor):
|
|
|
|
_VALID_URL = r'^(?:https?://)?(?:www\.)?mixcloud\.com/([^/]+)/([^/]+)'
|
|
|
|
_VALID_URL = r'^(?:https?://)?(?:www\.)?mixcloud\.com/([^/]+)/([^/]+)'
|
|
|
|
IE_NAME = 'mixcloud'
|
|
|
|
IE_NAME = 'mixcloud'
|
|
|
|
|
|
|
|
|
|
|
|
_TEST = {
|
|
|
|
_TESTS = [{
|
|
|
|
'url': 'http://www.mixcloud.com/dholbach/cryptkeeper/',
|
|
|
|
'url': 'http://www.mixcloud.com/dholbach/cryptkeeper/',
|
|
|
|
'info_dict': {
|
|
|
|
'info_dict': {
|
|
|
|
'id': 'dholbach-cryptkeeper',
|
|
|
|
'id': 'dholbach-cryptkeeper',
|
|
|
@ -33,7 +33,20 @@ class MixcloudIE(InfoExtractor):
|
|
|
|
'view_count': int,
|
|
|
|
'view_count': int,
|
|
|
|
'like_count': int,
|
|
|
|
'like_count': int,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
}, {
|
|
|
|
|
|
|
|
'url': 'http://www.mixcloud.com/gillespeterson/caribou-7-inch-vinyl-mix-chat/',
|
|
|
|
|
|
|
|
'info_dict': {
|
|
|
|
|
|
|
|
'id': 'gillespeterson-caribou-7-inch-vinyl-mix-chat',
|
|
|
|
|
|
|
|
'ext': 'm4a',
|
|
|
|
|
|
|
|
'title': 'Electric Relaxation vol. 3',
|
|
|
|
|
|
|
|
'description': 'md5:2b8aec6adce69f9d41724647c65875e8',
|
|
|
|
|
|
|
|
'uploader': 'Daniel Drumz',
|
|
|
|
|
|
|
|
'uploader_id': 'gillespeterson',
|
|
|
|
|
|
|
|
'thumbnail': 're:https?://.*\.jpg',
|
|
|
|
|
|
|
|
'view_count': int,
|
|
|
|
|
|
|
|
'like_count': int,
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
}]
|
|
|
|
|
|
|
|
|
|
|
|
def _get_url(self, track_id, template_url):
|
|
|
|
def _get_url(self, track_id, template_url):
|
|
|
|
server_count = 30
|
|
|
|
server_count = 30
|
|
|
@ -60,7 +73,7 @@ class MixcloudIE(InfoExtractor):
|
|
|
|
webpage = self._download_webpage(url, track_id)
|
|
|
|
webpage = self._download_webpage(url, track_id)
|
|
|
|
|
|
|
|
|
|
|
|
preview_url = self._search_regex(
|
|
|
|
preview_url = self._search_regex(
|
|
|
|
r'\s(?:data-preview-url|m-preview)="(.+?)"', webpage, 'preview url')
|
|
|
|
r'\s(?:data-preview-url|m-preview)="([^"]+)"', webpage, 'preview url')
|
|
|
|
song_url = preview_url.replace('/previews/', '/c/originals/')
|
|
|
|
song_url = preview_url.replace('/previews/', '/c/originals/')
|
|
|
|
template_url = re.sub(r'(stream\d*)', 'stream%d', song_url)
|
|
|
|
template_url = re.sub(r'(stream\d*)', 'stream%d', song_url)
|
|
|
|
final_song_url = self._get_url(track_id, template_url)
|
|
|
|
final_song_url = self._get_url(track_id, template_url)
|
|
|
|