summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorSergey M․ <[email protected]>2016-05-30 03:26:26 +0700
committerSergey M․ <[email protected]>2016-05-30 03:26:26 +0700
commit197a5da1d01179f6a2d60e3c2017b0070e5abc8b (patch)
tree8c7be0196a6e6c3891b2be0b6e455d26c9917d3a
parentabbb2938fa08733e3a08f6d1917aa7687633b971 (diff)
downloadyoutube-dl-197a5da1d01179f6a2d60e3c2017b0070e5abc8b.tar.gz
youtube-dl-197a5da1d01179f6a2d60e3c2017b0070e5abc8b.zip
[yandexmusic] Improve captcha detection
-rw-r--r--youtube_dl/extractor/yandexmusic.py22
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 'Нам очень жаль, но&nbsp;запросы, поступившие с&nbsp;вашего IP-адреса, похожи на&nbsp;автоматические.' 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):