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)) 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)
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
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):
""" """