mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2024-11-29 20:42:29 -05:00
[ie/twitter] Fix auth for x.com migration (#9952)
Authored by: bashonly
This commit is contained in:
parent
53b4d44f55
commit
3e35aa32c7
1 changed files with 13 additions and 7 deletions
|
@ -34,8 +34,8 @@
|
||||||
|
|
||||||
class TwitterBaseIE(InfoExtractor):
|
class TwitterBaseIE(InfoExtractor):
|
||||||
_NETRC_MACHINE = 'twitter'
|
_NETRC_MACHINE = 'twitter'
|
||||||
_API_BASE = 'https://api.twitter.com/1.1/'
|
_API_BASE = 'https://api.x.com/1.1/'
|
||||||
_GRAPHQL_API_BASE = 'https://twitter.com/i/api/graphql/'
|
_GRAPHQL_API_BASE = 'https://x.com/i/api/graphql/'
|
||||||
_BASE_REGEX = r'https?://(?:(?:www|m(?:obile)?)\.)?(?:(?:twitter|x)\.com|twitter3e4tixl4xyajtrzo62zg5vztmjuricljdp2c5kshju4avyoid\.onion)/'
|
_BASE_REGEX = r'https?://(?:(?:www|m(?:obile)?)\.)?(?:(?:twitter|x)\.com|twitter3e4tixl4xyajtrzo62zg5vztmjuricljdp2c5kshju4avyoid\.onion)/'
|
||||||
_AUTH = 'AAAAAAAAAAAAAAAAAAAAANRILgAAAAAAnNwIzUejRCOuH5E6I8xnZz4puTs%3D1Zv7ttfk8LF81IUq16cHjhLTvJu4FA33AGWWjCpTnA'
|
_AUTH = 'AAAAAAAAAAAAAAAAAAAAANRILgAAAAAAnNwIzUejRCOuH5E6I8xnZz4puTs%3D1Zv7ttfk8LF81IUq16cHjhLTvJu4FA33AGWWjCpTnA'
|
||||||
_LEGACY_AUTH = 'AAAAAAAAAAAAAAAAAAAAAIK1zgAAAAAA2tUWuhGZ2JceoId5GwYWU5GspY4%3DUq7gzFoCZs1QfwGoVdvSac3IniczZEYXIcDyumCauIXpcAPorE'
|
_LEGACY_AUTH = 'AAAAAAAAAAAAAAAAAAAAAIK1zgAAAAAA2tUWuhGZ2JceoId5GwYWU5GspY4%3DUq7gzFoCZs1QfwGoVdvSac3IniczZEYXIcDyumCauIXpcAPorE'
|
||||||
|
@ -153,6 +153,14 @@ def _search_dimensions_in_video_url(a_format, video_url):
|
||||||
def is_logged_in(self):
|
def is_logged_in(self):
|
||||||
return bool(self._get_cookies(self._API_BASE).get('auth_token'))
|
return bool(self._get_cookies(self._API_BASE).get('auth_token'))
|
||||||
|
|
||||||
|
# XXX: Temporary workaround until twitter.com => x.com migration is completed
|
||||||
|
def _real_initialize(self):
|
||||||
|
if self.is_logged_in or not self._get_cookies('https://twitter.com/').get('auth_token'):
|
||||||
|
return
|
||||||
|
# User has not yet been migrated to x.com and has passed twitter.com cookies
|
||||||
|
TwitterBaseIE._API_BASE = 'https://api.twitter.com/1.1/'
|
||||||
|
TwitterBaseIE._GRAPHQL_API_BASE = 'https://twitter.com/i/api/graphql/'
|
||||||
|
|
||||||
@functools.cached_property
|
@functools.cached_property
|
||||||
def _selected_api(self):
|
def _selected_api(self):
|
||||||
return self._configuration_arg('api', ['graphql'], ie_key='Twitter')[0]
|
return self._configuration_arg('api', ['graphql'], ie_key='Twitter')[0]
|
||||||
|
@ -196,17 +204,15 @@ def _perform_login(self, username, password):
|
||||||
if self.is_logged_in:
|
if self.is_logged_in:
|
||||||
return
|
return
|
||||||
|
|
||||||
webpage = self._download_webpage('https://twitter.com/', None, 'Downloading login page')
|
guest_token = self._fetch_guest_token(None)
|
||||||
guest_token = self._search_regex(
|
|
||||||
r'\.cookie\s*=\s*["\']gt=(\d+);', webpage, 'gt', default=None) or self._fetch_guest_token(None)
|
|
||||||
headers = {
|
headers = {
|
||||||
**self._set_base_headers(),
|
**self._set_base_headers(),
|
||||||
'content-type': 'application/json',
|
'content-type': 'application/json',
|
||||||
'x-guest-token': guest_token,
|
'x-guest-token': guest_token,
|
||||||
'x-twitter-client-language': 'en',
|
'x-twitter-client-language': 'en',
|
||||||
'x-twitter-active-user': 'yes',
|
'x-twitter-active-user': 'yes',
|
||||||
'Referer': 'https://twitter.com/',
|
'Referer': 'https://x.com/',
|
||||||
'Origin': 'https://twitter.com',
|
'Origin': 'https://x.com',
|
||||||
}
|
}
|
||||||
|
|
||||||
def build_login_json(*subtask_inputs):
|
def build_login_json(*subtask_inputs):
|
||||||
|
|
Loading…
Reference in a new issue