[yandexmusic] Capture and output API errors

This commit is contained in:
Sergey M․ 2016-03-04 21:32:54 +06:00
parent 9d303bf29b
commit ae7d31af1c

View file

@ -10,13 +10,27 @@ from ..compat import (
compat_urllib_parse, compat_urllib_parse,
) )
from ..utils import ( from ..utils import (
ExtractorError,
int_or_none, int_or_none,
float_or_none, float_or_none,
sanitized_Request, sanitized_Request,
) )
class YandexMusicTrackIE(InfoExtractor): class YandexMusicBaseIE(InfoExtractor):
@staticmethod
def _handle_error(response):
error = response.get('error')
if error:
raise ExtractorError(error, expected=True)
def _download_json(self, *args, **kwargs):
response = super(YandexMusicBaseIE, self)._download_json(*args, **kwargs)
self._handle_error(response)
return response
class YandexMusicTrackIE(YandexMusicBaseIE):
IE_NAME = 'yandexmusic:track' IE_NAME = 'yandexmusic:track'
IE_DESC = 'Яндекс.Музыка - Трек' IE_DESC = 'Яндекс.Музыка - Трек'
_VALID_URL = r'https?://music\.yandex\.(?:ru|kz|ua|by)/album/(?P<album_id>\d+)/track/(?P<id>\d+)' _VALID_URL = r'https?://music\.yandex\.(?:ru|kz|ua|by)/album/(?P<album_id>\d+)/track/(?P<id>\d+)'
@ -73,7 +87,7 @@ class YandexMusicTrackIE(InfoExtractor):
return self._get_track_info(track) return self._get_track_info(track)
class YandexMusicPlaylistBaseIE(InfoExtractor): class YandexMusicPlaylistBaseIE(YandexMusicBaseIE):
def _build_playlist(self, tracks): def _build_playlist(self, tracks):
return [ return [
self.url_result( self.url_result(