From a30d3503c4bc8a45d1dd657da941dfd3b3c3a2e7 Mon Sep 17 00:00:00 2001 From: MoojMidge <56883549+MoojMidge@users.noreply.github.com> Date: Thu, 8 Jan 2026 14:16:02 +0900 Subject: [PATCH] Pass additional headers to all player request and manifest urls by default --- .../youtube/client/player_client.py | 37 ++++++++++--------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/resources/lib/youtube_plugin/youtube/client/player_client.py b/resources/lib/youtube_plugin/youtube/client/player_client.py index 6b7d3fde..c744448d 100644 --- a/resources/lib/youtube_plugin/youtube/client/player_client.py +++ b/resources/lib/youtube_plugin/youtube/client/player_client.py @@ -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