|
@ -12,7 +12,23 @@ from ..utils import ( |
|
|
) |
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class YandexMusicBaseIE(InfoExtractor): |
|
|
|
|
|
|
|
|
class YandexMusicTrackIE(InfoExtractor): |
|
|
|
|
|
IE_NAME = 'yandexmusic:track' |
|
|
|
|
|
IE_DESC = 'Яндекс.Музыка - Трек' |
|
|
|
|
|
_VALID_URL = r'https?://music\.yandex\.(?:ru|kz|ua|by)/album/(?P<album_id>\d+)/track/(?P<id>\d+)' |
|
|
|
|
|
|
|
|
|
|
|
_TEST = { |
|
|
|
|
|
'url': 'http://music.yandex.ru/album/540508/track/4878838', |
|
|
|
|
|
'md5': 'f496818aa2f60b6c0062980d2e00dc20', |
|
|
|
|
|
'info_dict': { |
|
|
|
|
|
'id': '4878838', |
|
|
|
|
|
'ext': 'mp3', |
|
|
|
|
|
'title': 'Carlo Ambrosio - Gypsy Eyes 1', |
|
|
|
|
|
'filesize': 4628061, |
|
|
|
|
|
'duration': 193.04, |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
def _get_track_url(self, storage_dir, track_id): |
|
|
def _get_track_url(self, storage_dir, track_id): |
|
|
data = self._download_json( |
|
|
data = self._download_json( |
|
|
'http://music.yandex.ru/api/v1.5/handlers/api-jsonp.jsx?action=getTrackSrc&p=download-info/%s' |
|
|
'http://music.yandex.ru/api/v1.5/handlers/api-jsonp.jsx?action=getTrackSrc&p=download-info/%s' |
|
@ -35,24 +51,6 @@ class YandexMusicBaseIE(InfoExtractor): |
|
|
'duration': float_or_none(track.get('durationMs'), 1000), |
|
|
'duration': float_or_none(track.get('durationMs'), 1000), |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class YandexMusicTrackIE(YandexMusicBaseIE): |
|
|
|
|
|
IE_NAME = 'yandexmusic:track' |
|
|
|
|
|
IE_DESC = 'Яндекс.Музыка - Трек' |
|
|
|
|
|
_VALID_URL = r'https?://music\.yandex\.(?:ru|kz|ua|by)/album/(?P<album_id>\d+)/track/(?P<id>\d+)' |
|
|
|
|
|
|
|
|
|
|
|
_TEST = { |
|
|
|
|
|
'url': 'http://music.yandex.ru/album/540508/track/4878838', |
|
|
|
|
|
'md5': 'f496818aa2f60b6c0062980d2e00dc20', |
|
|
|
|
|
'info_dict': { |
|
|
|
|
|
'id': '4878838', |
|
|
|
|
|
'ext': 'mp3', |
|
|
|
|
|
'title': 'Carlo Ambrosio - Gypsy Eyes 1', |
|
|
|
|
|
'filesize': 4628061, |
|
|
|
|
|
'duration': 193.04, |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
def _real_extract(self, url): |
|
|
def _real_extract(self, url): |
|
|
mobj = re.match(self._VALID_URL, url) |
|
|
mobj = re.match(self._VALID_URL, url) |
|
|
album_id, track_id = mobj.group('album_id'), mobj.group('id') |
|
|
album_id, track_id = mobj.group('album_id'), mobj.group('id') |
|
|