[yandexmusic] Improve captcha detection

This commit is contained in:
Sergey M․ 2016-05-30 03:26:26 +07:00
parent abbb2938fa
commit 197a5da1d0
No known key found for this signature in database
GPG Key ID: 2C393E0F18A9236D

View File

@ -20,10 +20,11 @@ class YandexMusicBaseIE(InfoExtractor):
error = response.get('error') error = response.get('error')
if error: if error:
raise ExtractorError(error, expected=True) raise ExtractorError(error, expected=True)
if response.get('type') == 'captcha' or 'captcha' in response:
YandexMusicBaseIE._raise_captcha()
def _download_webpage(self, *args, **kwargs): @staticmethod
webpage = super(YandexMusicBaseIE, self)._download_webpage(*args, **kwargs) def _raise_captcha():
if 'Нам очень жаль, но запросы, поступившие с вашего IP-адреса, похожи на автоматические.' in webpage:
raise ExtractorError( raise ExtractorError(
'YandexMusic has considered youtube-dl requests automated and ' 'YandexMusic has considered youtube-dl requests automated and '
'asks you to solve a CAPTCHA. You can either wait for some ' 'asks you to solve a CAPTCHA. You can either wait for some '
@ -32,6 +33,11 @@ class YandexMusicBaseIE(InfoExtractor):
'solve CAPTCHA, then export cookies and pass cookie file to ' 'solve CAPTCHA, then export cookies and pass cookie file to '
'youtube-dl with --cookies', 'youtube-dl with --cookies',
expected=True) expected=True)
def _download_webpage(self, *args, **kwargs):
webpage = super(YandexMusicBaseIE, self)._download_webpage(*args, **kwargs)
if 'Нам очень жаль, но запросы, поступившие с вашего IP-адреса, похожи на автоматические.' in webpage:
self._raise_captcha()
return webpage return webpage
def _download_json(self, *args, **kwargs): def _download_json(self, *args, **kwargs):