diff options
| author | Sergey M․ <dstftw@gmail.com> | 2016-05-30 03:26:26 +0700 | 
|---|---|---|
| committer | Sergey M․ <dstftw@gmail.com> | 2016-05-30 03:26:26 +0700 | 
| commit | 197a5da1d01179f6a2d60e3c2017b0070e5abc8b (patch) | |
| tree | 8c7be0196a6e6c3891b2be0b6e455d26c9917d3a | |
| parent | abbb2938fa08733e3a08f6d1917aa7687633b971 (diff) | |
[yandexmusic] Improve captcha detection
| -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): | 
