mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2026-05-07 07:56:13 +00:00
Compare commits
No commits in common. "5848d613d98c02beb0dcd13ec98a28b8b81f2fed" and "5c50a25ae70da6558d73d1b6aab042f4389ab475" have entirely different histories.
5848d613d9
...
5c50a25ae7
@ -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):
|
||||||
yt_sapisid, yt_1psapisid, yt_3psapisid = self._get_sid_cookies()
|
self._load_sid_cookies()
|
||||||
if yt_sapisid or yt_1psapisid or yt_3psapisid:
|
if self._SAPISID or self._1PSAPISID or self._3PSAPISID:
|
||||||
self.write_debug('Found YouTube account cookies')
|
self.write_debug('Found YouTube account cookies')
|
||||||
|
|
||||||
def _real_initialize(self):
|
def _real_initialize(self):
|
||||||
@ -648,21 +648,24 @@ class YoutubeBaseInfoExtractor(InfoExtractor):
|
|||||||
|
|
||||||
return f'{scheme} {"_".join(parts)}'
|
return f'{scheme} {"_".join(parts)}'
|
||||||
|
|
||||||
def _get_sid_cookies(self):
|
_SAPISID = _3PSAPISID = _1PSAPISID = None
|
||||||
"""
|
|
||||||
Get SAPISID, 1PSAPISID, 3PSAPISID cookie values
|
def _load_sid_cookies(self):
|
||||||
@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)
|
|
||||||
|
|
||||||
# Sometimes SAPISID cookie isn't present but __Secure-3PAPISID is.
|
if not self._SAPISID:
|
||||||
# YouTube also falls back to __Secure-3PAPISID if SAPISID is missing.
|
# Sometimes SAPISID cookie isn't present but __Secure-3PAPISID is.
|
||||||
# See: https://github.com/yt-dlp/yt-dlp/issues/393
|
# YouTube also falls back to __Secure-3PAPISID if SAPISID is missing.
|
||||||
|
# See: https://github.com/yt-dlp/yt-dlp/issues/393
|
||||||
|
self._SAPISID = yt_sapisid or yt_3papisid
|
||||||
|
|
||||||
return yt_sapisid or yt_3papisid, yt_1papisid, yt_3papisid
|
if not self._1PSAPISID:
|
||||||
|
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):
|
||||||
"""
|
"""
|
||||||
@ -677,11 +680,11 @@ class YoutubeBaseInfoExtractor(InfoExtractor):
|
|||||||
if user_session_id:
|
if user_session_id:
|
||||||
additional_parts['u'] = user_session_id
|
additional_parts['u'] = user_session_id
|
||||||
|
|
||||||
yt_sapisid, yt_1psapisid, yt_3psapisid = self._get_sid_cookies()
|
self._load_sid_cookies()
|
||||||
|
|
||||||
for scheme, sid in (('SAPISIDHASH', yt_sapisid),
|
for scheme, sid in (('SAPISIDHASH', self._SAPISID),
|
||||||
('SAPISID1PHASH', yt_1psapisid),
|
('SAPISID1PHASH', self._1PSAPISID),
|
||||||
('SAPISID3PHASH', yt_3psapisid)):
|
('SAPISID3PHASH', self._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))
|
||||||
|
|
||||||
@ -738,9 +741,7 @@ 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('||')
|
||||||
if second:
|
return first if second else None, second if second else first
|
||||||
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