mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-11-04 08:35:12 +00:00 
			
		
		
		
	[youtube] Improve login error handling (closes #13822)
This commit is contained in:
		@@ -178,13 +178,13 @@ class YoutubeBaseInfoExtractor(InfoExtractor):
 | 
			
		||||
            warn('Unable to extract result entry')
 | 
			
		||||
            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
 | 
			
		||||
                # 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':
 | 
			
		||||
                    warn('Exceeded the limit of TFA codes, try later')
 | 
			
		||||
                    return False
 | 
			
		||||
@@ -228,6 +228,17 @@ class YoutubeBaseInfoExtractor(InfoExtractor):
 | 
			
		||||
 | 
			
		||||
                check_cookie_url = try_get(
 | 
			
		||||
                    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:
 | 
			
		||||
            check_cookie_url = try_get(res, lambda x: x[2], compat_str)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user