Pass additional headers to all player request and manifest urls by default

This commit is contained in:
MoojMidge 2026-01-08 14:16:02 +09:00
parent f7f0dff842
commit a30d3503c4

View file

@ -1128,12 +1128,14 @@ class YouTubePlayerClient(YouTubeDataClient):
if itag in stream_list:
break
url = response['mpd_manifest']
headers = response['client']['headers']
url = self._process_url_params(
response['mpd_manifest'],
headers=headers,
)
if not url:
continue
headers = response['client']['headers']
url_components = urlsplit(url)
if url_components.query:
params = dict(parse_qs(url_components.query))
@ -1197,12 +1199,14 @@ class YouTubePlayerClient(YouTubeDataClient):
itags = ('9995', '9996') if is_live else ('9993', '9994')
for client_name, response in responses.items():
url = response['hls_manifest']
headers = response['client']['headers']
url = self._process_url_params(
response['hls_manifest'],
headers=headers,
)
if not url:
continue
headers = response['client']['headers']
result = self.request(
url,
headers=headers,
@ -1318,11 +1322,10 @@ class YouTubePlayerClient(YouTubeDataClient):
else:
new_url = url
new_url = self._process_url_params(new_url,
mpd=False,
headers=headers,
referrer=None,
visitor_data=None)
new_url = self._process_url_params(
new_url,
headers=headers,
)
if not new_url:
continue
@ -1416,11 +1419,11 @@ class YouTubePlayerClient(YouTubeDataClient):
def _process_url_params(self,
url,
mpd=True,
stream_proxy=False,
headers=None,
cpn=False,
referrer=False,
visitor_data=False,
referrer=None,
visitor_data=None,
method='POST',
digits_re=re_compile(r'\d+')):
if not url:
@ -1473,7 +1476,7 @@ class YouTubePlayerClient(YouTubeDataClient):
or 'https://www.youtube.com/watch?v=%s' % self.video_id,
)
if mpd:
if stream_proxy:
new_params['__id'] = self.video_id
new_params['__method'] = method
new_params['__host'] = [parts.hostname]
@ -2406,6 +2409,7 @@ class YouTubePlayerClient(YouTubeDataClient):
urls = self._process_url_params(
unquote(url),
stream_proxy=True,
headers=client['headers'],
cpn=client.get('_cpn'),
)
@ -2851,9 +2855,8 @@ class YouTubePlayerClient(YouTubeDataClient):
url = entity_escape(unquote(self._process_url_params(
subtitle['url'],
stream_proxy=True,
headers=headers,
referrer=None,
visitor_data=None,
)))
if not url:
continue