mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2026-05-07 07:56:13 +00:00
Compare commits
2 Commits
5c50a25ae7
...
5848d613d9
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5848d613d9 | ||
|
|
6c6e1e9548 |
@ -567,8 +567,8 @@ class YoutubeBaseInfoExtractor(InfoExtractor):
|
|||||||
self._set_cookie('.youtube.com', name='PREF', value=urllib.parse.urlencode(pref))
|
self._set_cookie('.youtube.com', name='PREF', value=urllib.parse.urlencode(pref))
|
||||||
|
|
||||||
def _initialize_cookie_auth(self):
|
def _initialize_cookie_auth(self):
|
||||||
self._load_sid_cookies()
|
yt_sapisid, yt_1psapisid, yt_3psapisid = self._get_sid_cookies()
|
||||||
if self._SAPISID or self._1PSAPISID or self._3PSAPISID:
|
if yt_sapisid or yt_1psapisid or yt_3psapisid:
|
||||||
self.write_debug('Found YouTube account cookies')
|
self.write_debug('Found YouTube account cookies')
|
||||||
|
|
||||||
def _real_initialize(self):
|
def _real_initialize(self):
|
||||||
@ -648,24 +648,21 @@ class YoutubeBaseInfoExtractor(InfoExtractor):
|
|||||||
|
|
||||||
return f'{scheme} {"_".join(parts)}'
|
return f'{scheme} {"_".join(parts)}'
|
||||||
|
|
||||||
_SAPISID = _3PSAPISID = _1PSAPISID = None
|
def _get_sid_cookies(self):
|
||||||
|
"""
|
||||||
def _load_sid_cookies(self):
|
Get SAPISID, 1PSAPISID, 3PSAPISID cookie values
|
||||||
|
@returns sapisid, 1psapisid, 3psapisid
|
||||||
|
"""
|
||||||
yt_cookies = self._get_cookies('https://www.youtube.com')
|
yt_cookies = self._get_cookies('https://www.youtube.com')
|
||||||
yt_sapisid = try_call(lambda: yt_cookies['SAPISID'].value)
|
yt_sapisid = try_call(lambda: yt_cookies['SAPISID'].value)
|
||||||
yt_3papisid = try_call(lambda: yt_cookies['__Secure-3PAPISID'].value)
|
yt_3papisid = try_call(lambda: yt_cookies['__Secure-3PAPISID'].value)
|
||||||
|
yt_1papisid = try_call(lambda: yt_cookies['__Secure-1PAPISID'].value)
|
||||||
|
|
||||||
if not self._SAPISID:
|
# Sometimes SAPISID cookie isn't present but __Secure-3PAPISID is.
|
||||||
# Sometimes SAPISID cookie isn't present but __Secure-3PAPISID is.
|
# YouTube also falls back to __Secure-3PAPISID if SAPISID is missing.
|
||||||
# YouTube also falls back to __Secure-3PAPISID if SAPISID is missing.
|
# See: https://github.com/yt-dlp/yt-dlp/issues/393
|
||||||
# See: https://github.com/yt-dlp/yt-dlp/issues/393
|
|
||||||
self._SAPISID = yt_sapisid or yt_3papisid
|
|
||||||
|
|
||||||
if not self._1PSAPISID:
|
return yt_sapisid or yt_3papisid, yt_1papisid, yt_3papisid
|
||||||
self._1PSAPISID = try_call(lambda: yt_cookies['__Secure-1PAPISID'].value)
|
|
||||||
|
|
||||||
if not self._3PSAPISID:
|
|
||||||
self._3PSAPISID = yt_3papisid
|
|
||||||
|
|
||||||
def _get_sid_authorization_header(self, origin='https://www.youtube.com', user_session_id=None):
|
def _get_sid_authorization_header(self, origin='https://www.youtube.com', user_session_id=None):
|
||||||
"""
|
"""
|
||||||
@ -680,11 +677,11 @@ class YoutubeBaseInfoExtractor(InfoExtractor):
|
|||||||
if user_session_id:
|
if user_session_id:
|
||||||
additional_parts['u'] = user_session_id
|
additional_parts['u'] = user_session_id
|
||||||
|
|
||||||
self._load_sid_cookies()
|
yt_sapisid, yt_1psapisid, yt_3psapisid = self._get_sid_cookies()
|
||||||
|
|
||||||
for scheme, sid in (('SAPISIDHASH', self._SAPISID),
|
for scheme, sid in (('SAPISIDHASH', yt_sapisid),
|
||||||
('SAPISID1PHASH', self._1PSAPISID),
|
('SAPISID1PHASH', yt_1psapisid),
|
||||||
('SAPISID3PHASH', self._3PSAPISID)):
|
('SAPISID3PHASH', yt_3psapisid)):
|
||||||
if sid:
|
if sid:
|
||||||
authorizations.append(self._make_sid_authorization(scheme, sid, origin, additional_parts))
|
authorizations.append(self._make_sid_authorization(scheme, sid, origin, additional_parts))
|
||||||
|
|
||||||
@ -741,7 +738,9 @@ class YoutubeBaseInfoExtractor(InfoExtractor):
|
|||||||
if not data_sync_id:
|
if not data_sync_id:
|
||||||
return None, None
|
return None, None
|
||||||
first, _, second = data_sync_id.partition('||')
|
first, _, second = data_sync_id.partition('||')
|
||||||
return first if second else None, second if second else first
|
if second:
|
||||||
|
return first, second
|
||||||
|
return None, first
|
||||||
|
|
||||||
def _extract_delegated_session_id(self, *args):
|
def _extract_delegated_session_id(self, *args):
|
||||||
"""
|
"""
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user