|
|
|
@ -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):
|
|
|
|
|
data = self._download_json(
|
|
|
|
|
'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),
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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):
|
|
|
|
|
mobj = re.match(self._VALID_URL, url)
|
|
|
|
|
album_id, track_id = mobj.group('album_id'), mobj.group('id')
|
|
|
|
|