X-Git-Url: https://git.rapsys.eu/youtubedl/blobdiff_plain/46113edab215c2211a604c06245c16d5d4e57dcf..72d91f91be4810269f74cf296cab5dd61b84129c:/youtube_dl/extractor/mixcloud.py diff --git a/youtube_dl/extractor/mixcloud.py b/youtube_dl/extractor/mixcloud.py index bb8937c..1831c67 100644 --- a/youtube_dl/extractor/mixcloud.py +++ b/youtube_dl/extractor/mixcloud.py @@ -3,11 +3,13 @@ from __future__ import unicode_literals import re from .common import InfoExtractor -from ..utils import ( +from ..compat import ( compat_urllib_parse, +) +from ..utils import ( ExtractorError, HEADRequest, - int_or_none, + str_to_int, parse_iso8601, ) @@ -16,7 +18,7 @@ class MixcloudIE(InfoExtractor): _VALID_URL = r'^(?:https?://)?(?:www\.)?mixcloud\.com/([^/]+)/([^/]+)' IE_NAME = 'mixcloud' - _TEST = { + _TESTS = [{ 'url': 'http://www.mixcloud.com/dholbach/cryptkeeper/', 'info_dict': { 'id': 'dholbach-cryptkeeper', @@ -31,7 +33,20 @@ class MixcloudIE(InfoExtractor): 'view_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): server_count = 30 @@ -58,7 +73,7 @@ class MixcloudIE(InfoExtractor): webpage = self._download_webpage(url, track_id) 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/') template_url = re.sub(r'(stream\d*)', 'stream%d', song_url) final_song_url = self._get_url(track_id, template_url) @@ -70,7 +85,7 @@ class MixcloudIE(InfoExtractor): raise ExtractorError('Unable to extract track url') PREFIX = ( - r'
([0-9]+)<'], webpage, 'like count', fatal=False)) - view_count = int_or_none(self._search_regex( - r'([0-9,.]+)'], webpage, 'play count', fatal=False)) timestamp = parse_iso8601(self._search_regex( r'