|
@ -5,6 +5,7 @@ import re |
|
|
from .common import InfoExtractor |
|
|
from .common import InfoExtractor |
|
|
from ..utils import ( |
|
|
from ..utils import ( |
|
|
unified_strdate, |
|
|
unified_strdate, |
|
|
|
|
|
compat_urllib_parse, |
|
|
ExtractorError, |
|
|
ExtractorError, |
|
|
) |
|
|
) |
|
|
|
|
|
|
|
@ -15,8 +16,9 @@ class MixcloudIE(InfoExtractor): |
|
|
|
|
|
|
|
|
_TEST = { |
|
|
_TEST = { |
|
|
'url': 'http://www.mixcloud.com/dholbach/cryptkeeper/', |
|
|
'url': 'http://www.mixcloud.com/dholbach/cryptkeeper/', |
|
|
'file': 'dholbach-cryptkeeper.mp3', |
|
|
|
|
|
'info_dict': { |
|
|
'info_dict': { |
|
|
|
|
|
'id': 'dholbach-cryptkeeper', |
|
|
|
|
|
'ext': 'mp3', |
|
|
'title': 'Cryptkeeper', |
|
|
'title': 'Cryptkeeper', |
|
|
'description': 'After quite a long silence from myself, finally another Drum\'n\'Bass mix with my favourite current dance floor bangers.', |
|
|
'description': 'After quite a long silence from myself, finally another Drum\'n\'Bass mix with my favourite current dance floor bangers.', |
|
|
'uploader': 'Daniel Holbach', |
|
|
'uploader': 'Daniel Holbach', |
|
@ -45,7 +47,7 @@ class MixcloudIE(InfoExtractor): |
|
|
mobj = re.match(self._VALID_URL, url) |
|
|
mobj = re.match(self._VALID_URL, url) |
|
|
uploader = mobj.group(1) |
|
|
uploader = mobj.group(1) |
|
|
cloudcast_name = mobj.group(2) |
|
|
cloudcast_name = mobj.group(2) |
|
|
track_id = '-'.join((uploader, cloudcast_name)) |
|
|
|
|
|
|
|
|
track_id = compat_urllib_parse.unquote('-'.join((uploader, cloudcast_name))) |
|
|
|
|
|
|
|
|
webpage = self._download_webpage(url, track_id) |
|
|
webpage = self._download_webpage(url, track_id) |
|
|
|
|
|
|
|
|