2
0
Эх сурвалжийг харах

[YouTube] Revert forcing player JS by default

* still leaving the parameters in place

thx bashonly for confirming this suggestion
dirkf 1 долоо хоног өмнө
parent
commit
d0283f5385

+ 17 - 16
youtube_dl/extractor/youtube.py

@@ -1699,16 +1699,17 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
         self._player_cache = {}
 
     def _get_player_js_version(self):
-        player_js_version = self.get_param('youtube_player_js_version') or '20348@0004de42'
-        sts_hash = self._search_regex(
-            ('^actual$(^)?(^)?', r'^([0-9]{5,})@([0-9a-f]{8,})$'),
-            player_js_version, 'player_js_version', group=(1, 2), default=None)
-        if sts_hash:
-            return sts_hash
-        self.report_warning(
-            'Invalid player JS version "{0}" specified. '
-            'It should be "{1}" or in the format of {2}'.format(
-                player_js_version, 'actual', 'SignatureTimeStamp@Hash'), only_once=True)
+        player_js_version = self.get_param('youtube_player_js_version')
+        if player_js_version:
+            sts_hash = self._search_regex(
+                ('^actual$(^)?(^)?', r'^([0-9]{5,})@([0-9a-f]{8,})$'),
+                player_js_version, 'player_js_version', group=(1, 2), default=None)
+            if sts_hash:
+                return sts_hash
+            self.report_warning(
+                'Invalid player JS version "{0}" specified. '
+                'It should be "{1}" or in the format of {2}'.format(
+                    player_js_version, 'actual', 'SignatureTimeStamp@Hash'), only_once=True)
         return None, None
 
     # *ytcfgs, webpage=None
@@ -1723,18 +1724,18 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
                 ytcfgs = ytcfgs + ({'PLAYER_JS_URL': player_url},)
         player_url = traverse_obj(
             ytcfgs, (Ellipsis, 'PLAYER_JS_URL'), (Ellipsis, 'WEB_PLAYER_CONTEXT_CONFIGS', Ellipsis, 'jsUrl'),
-            get_all=False, expected_type=lambda u: urljoin('https://www.youtube.com', u))
-
-        player_id_override = self._get_player_js_version()[1]
+            get_all=False, expected_type=self._yt_urljoin)
 
-        requested_js_variant = self.get_param('youtube_player_js_variant') or 'main'
+        requested_js_variant = self.get_param('youtube_player_js_variant')
         variant_js = next(
             (v for k, v in self._PLAYER_JS_VARIANT_MAP if k == requested_js_variant),
             None)
         if variant_js:
+            player_id_override = self._get_player_js_version()[1]
             player_id = player_id_override or self._extract_player_info(player_url)
             original_url = player_url
-            player_url = '/s/player/{0}/{1}'.format(player_id, variant_js)
+            player_url = self._yt_urljoin(
+                '/s/player/{0}/{1}'.format(player_id, variant_js))
             if original_url != player_url:
                 self.write_debug(
                     'Forcing "{0}" player JS variant for player {1}\n'
@@ -1748,7 +1749,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
                     requested_js_variant, ','.join(k for k, _ in self._PLAYER_JS_VARIANT_MAP)),
                 only_once=True)
 
-        return urljoin('https://www.youtube.com', player_url)
+        return player_url
 
     def _download_player_url(self, video_id, fatal=False):
         res = self._download_webpage(

+ 2 - 2
youtube_dl/options.py

@@ -421,12 +421,12 @@ def parseOpts(overrideArguments=None):
         action='store', dest='youtube_player_js_variant',
         help='For YouTube, the player javascript variant to use for n/sig deciphering; `actual` to follow the site; default `%default`.',
         choices=('actual', 'main', 'tcc', 'tce', 'es5', 'es6', 'tv', 'tv_es6', 'phone', 'tablet'),
-        default='main', metavar='VARIANT')
+        default='actual', metavar='VARIANT')
     video_format.add_option(
         '--youtube-player-js-version',
         action='store', dest='youtube_player_js_version',
         help='For YouTube, the player javascript version to use for n/sig deciphering, specified as `signature_timestamp@hash`, or `actual` to follow the site; default `%default`',
-        default='20348@0004de42', metavar='STS@HASH')
+        default='actual', metavar='STS@HASH')
     video_format.add_option(
         '--merge-output-format',
         action='store', dest='merge_output_format', metavar='FORMAT', default=None,