Browse Source

[youtube] Improve login error handling (closes #13822)

master-ytdl-org
Sergey M․ 6 years ago
parent
commit
9a6628aaf9
No known key found for this signature in database GPG Key ID: 2C393E0F18A9236D
1 changed files with 16 additions and 5 deletions
  1. +16
    -5
      youtube_dl/extractor/youtube.py

+ 16
- 5
youtube_dl/extractor/youtube.py View File

@ -178,13 +178,13 @@ class YoutubeBaseInfoExtractor(InfoExtractor):
warn('Unable to extract result entry') warn('Unable to extract result entry')
return False return False
tfa = try_get(res, lambda x: x[0][0], list)
if tfa:
tfa_str = try_get(tfa, lambda x: x[2], compat_str)
if tfa_str == 'TWO_STEP_VERIFICATION':
login_challenge = try_get(res, lambda x: x[0][0], list)
if login_challenge:
challenge_str = try_get(login_challenge, lambda x: x[2], compat_str)
if challenge_str == 'TWO_STEP_VERIFICATION':
# SEND_SUCCESS - TFA code has been successfully sent to phone # SEND_SUCCESS - TFA code has been successfully sent to phone
# QUOTA_EXCEEDED - reached the limit of TFA codes # QUOTA_EXCEEDED - reached the limit of TFA codes
status = try_get(tfa, lambda x: x[5], compat_str)
status = try_get(login_challenge, lambda x: x[5], compat_str)
if status == 'QUOTA_EXCEEDED': if status == 'QUOTA_EXCEEDED':
warn('Exceeded the limit of TFA codes, try later') warn('Exceeded the limit of TFA codes, try later')
return False return False
@ -228,6 +228,17 @@ class YoutubeBaseInfoExtractor(InfoExtractor):
check_cookie_url = try_get( check_cookie_url = try_get(
tfa_results, lambda x: x[0][-1][2], compat_str) tfa_results, lambda x: x[0][-1][2], compat_str)
else:
CHALLENGES = {
'LOGIN_CHALLENGE': "This device isn't recognized. For your security, Google wants to make sure it's really you.",
'USERNAME_RECOVERY': 'Please provide additional information to aid in the recovery process.',
'REAUTH': "There is something unusual about your activity. For your security, Google wants to make sure it's really you.",
}
challenge = CHALLENGES.get(
challenge_str,
'%s returned error %s.' % (self.IE_NAME, challenge_str))
warn('%s\nGo to https://accounts.google.com/, login and solve a challenge.' % challenge)
return False
else: else:
check_cookie_url = try_get(res, lambda x: x[2], compat_str) check_cookie_url = try_get(res, lambda x: x[2], compat_str)


Loading…
Cancel
Save