]> jfr.im git - yt-dlp.git/commitdiff
[extractor/youtube] Workaround 403 for android formats
authorpukkandan <redacted>
Wed, 21 Jun 2023 18:45:22 +0000 (00:15 +0530)
committerpukkandan <redacted>
Wed, 21 Jun 2023 18:45:22 +0000 (00:15 +0530)
Ref: https://github.com/TeamNewPipe/NewPipe/issues/9038#issuecomment-1289756816

yt_dlp/extractor/youtube.py

index 11e47904a57c77b065b229f9e60e8bdc60581a67..a77a626ac5e78aa183bb4ec150fa2632038631bc 100644 (file)
@@ -3599,7 +3599,7 @@ def _is_agegated(player_response):
     def _is_unplayable(player_response):
         return traverse_obj(player_response, ('playabilityStatus', 'status')) == 'UNPLAYABLE'
 
-    _STORY_PLAYER_PARAMS = '8AEB'
+    _PLAYER_PARAMS = 'CgIQBg=='
 
     def _extract_player_response(self, client, video_id, master_ytcfg, player_ytcfg, player_url, initial_pr, smuggled_data):
 
@@ -3613,7 +3613,7 @@ def _extract_player_response(self, client, video_id, master_ytcfg, player_ytcfg,
             'videoId': video_id,
         }
         if smuggled_data.get('is_story') or _split_innertube_client(client)[0] == 'android':
-            yt_query['params'] = self._STORY_PLAYER_PARAMS
+            yt_query['params'] = self._PLAYER_PARAMS
 
         yt_query.update(self._generate_player_context(sts))
         return self._extract_response(
@@ -4011,8 +4011,8 @@ def _download_player_responses(self, url, smuggled_data, video_id, webpage_url):
         webpage = None
         if 'webpage' not in self._configuration_arg('player_skip'):
             query = {'bpctr': '9999999999', 'has_verified': '1'}
-            if smuggled_data.get('is_story'):
-                query['pp'] = self._STORY_PLAYER_PARAMS
+            if smuggled_data.get('is_story'):  # XXX: Deprecated
+                query['pp'] = self._PLAYER_PARAMS
             webpage = self._download_webpage(
                 webpage_url, video_id, fatal=False, query=query)