[extractor/tumblr] add 2fa support

This commit is contained in:
Lauren N. Liberda 2023-07-05 21:22:24 +02:00
parent d44e5195cb
commit 9d1c75df0d
No known key found for this signature in database
GPG Key ID: 734C629FD04BD319
1 changed files with 26 additions and 11 deletions

View File

@ -382,17 +382,32 @@ class TumblrIE(InfoExtractor):
if not self._ACCESS_TOKEN:
return
self._download_json(
self._OAUTH_URL, None, 'Logging in',
data=urlencode_postdata({
'password': password,
'grant_type': 'password',
'username': username,
}), headers={
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': f'Bearer {self._ACCESS_TOKEN}',
},
errnote='Login failed', fatal=False)
data = {
'password': password,
'grant_type': 'password',
'username': username,
}
if self.get_param('twofactor'):
data['tfa_token'] = self.get_param('twofactor')
def _call_login():
return self._download_json(
self._OAUTH_URL, None, 'Logging in',
data=urlencode_postdata(data),
headers={
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': f'Bearer {self._ACCESS_TOKEN}',
},
errnote='Login failed', fatal=False,
expected_status=lambda s: s == 200 or 400 <= s < 500)
response = _call_login()
if response.get('error') == 'tfa_required':
data['tfa_token'] = self._get_tfa_info()
response = _call_login()
if response.get('error'):
self.report_warning('API returned error {}: {}'.format(
response.get('error'), response.get('error_description')))
def _real_extract(self, url):
blog_1, blog_2, video_id = self._match_valid_url(url).groups()