diff options
| -rw-r--r-- | youtube_dl/extractor/yandexmusic.py | 22 | 
1 files changed, 14 insertions, 8 deletions
diff --git a/youtube_dl/extractor/yandexmusic.py b/youtube_dl/extractor/yandexmusic.py index 0f78466e6..b37d0eab6 100644 --- a/youtube_dl/extractor/yandexmusic.py +++ b/youtube_dl/extractor/yandexmusic.py @@ -20,18 +20,24 @@ class YandexMusicBaseIE(InfoExtractor):              error = response.get('error')              if error:                  raise ExtractorError(error, expected=True) +            if response.get('type') == 'captcha' or 'captcha' in response: +                YandexMusicBaseIE._raise_captcha() + +    @staticmethod +    def _raise_captcha(): +        raise ExtractorError( +            'YandexMusic has considered youtube-dl requests automated and ' +            'asks you to solve a CAPTCHA. You can either wait for some ' +            'time until unblocked and optionally use --sleep-interval ' +            'in future or alternatively you can go to https://music.yandex.ru/ ' +            'solve CAPTCHA, then export cookies and pass cookie file to ' +            'youtube-dl with --cookies', +            expected=True)      def _download_webpage(self, *args, **kwargs):          webpage = super(YandexMusicBaseIE, self)._download_webpage(*args, **kwargs)          if 'Нам очень жаль, но запросы, поступившие с вашего IP-адреса, похожи на автоматические.' in webpage: -            raise ExtractorError( -                'YandexMusic has considered youtube-dl requests automated and ' -                'asks you to solve a CAPTCHA. You can either wait for some ' -                'time until unblocked and optionally use --sleep-interval ' -                'in future or alternatively you can go to https://music.yandex.ru/ ' -                'solve CAPTCHA, then export cookies and pass cookie file to ' -                'youtube-dl with --cookies', -                expected=True) +            self._raise_captcha()          return webpage      def _download_json(self, *args, **kwargs):  | 
