Compare commits

..

No commits in common. "5848d613d98c02beb0dcd13ec98a28b8b81f2fed" and "5c50a25ae70da6558d73d1b6aab042f4389ab475" have entirely different histories.

View File

@ -567,8 +567,8 @@ class YoutubeBaseInfoExtractor(InfoExtractor):
self._set_cookie('.youtube.com', name='PREF', value=urllib.parse.urlencode(pref))
def _initialize_cookie_auth(self):
yt_sapisid, yt_1psapisid, yt_3psapisid = self._get_sid_cookies()
if yt_sapisid or yt_1psapisid or yt_3psapisid:
self._load_sid_cookies()
if self._SAPISID or self._1PSAPISID or self._3PSAPISID:
self.write_debug('Found YouTube account cookies')
def _real_initialize(self):
@ -648,21 +648,24 @@ class YoutubeBaseInfoExtractor(InfoExtractor):
return f'{scheme} {"_".join(parts)}'
def _get_sid_cookies(self):
"""
Get SAPISID, 1PSAPISID, 3PSAPISID cookie values
@returns sapisid, 1psapisid, 3psapisid
"""
_SAPISID = _3PSAPISID = _1PSAPISID = None
def _load_sid_cookies(self):
yt_cookies = self._get_cookies('https://www.youtube.com')
yt_sapisid = try_call(lambda: yt_cookies['SAPISID'].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.
# YouTube also falls back to __Secure-3PAPISID if SAPISID is missing.
# See: https://github.com/yt-dlp/yt-dlp/issues/393
if not self._SAPISID:
# Sometimes SAPISID cookie isn't present but __Secure-3PAPISID is.
# 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):
"""
@ -677,11 +680,11 @@ class YoutubeBaseInfoExtractor(InfoExtractor):
if 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),
('SAPISID1PHASH', yt_1psapisid),
('SAPISID3PHASH', yt_3psapisid)):
for scheme, sid in (('SAPISIDHASH', self._SAPISID),
('SAPISID1PHASH', self._1PSAPISID),
('SAPISID3PHASH', self._3PSAPISID)):
if sid:
authorizations.append(self._make_sid_authorization(scheme, sid, origin, additional_parts))
@ -738,9 +741,7 @@ class YoutubeBaseInfoExtractor(InfoExtractor):
if not data_sync_id:
return None, None
first, _, second = data_sync_id.partition('||')
if second:
return first, second
return None, first
return first if second else None, second if second else first
def _extract_delegated_session_id(self, *args):
"""