瀏覽代碼

[yandexmusic] Capture and output API errors

Sergey M․ 9 年之前
父節點
當前提交
ae7d31af1c
共有 1 個文件被更改,包括 16 次插入2 次删除
  1. 16 2
      youtube_dl/extractor/yandexmusic.py

+ 16 - 2
youtube_dl/extractor/yandexmusic.py

@@ -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(