aboutsummaryrefslogtreecommitdiffstats
path: root/yt_dlp/extractor
diff options
context:
space:
mode:
authorpukkandan <pukkandan.ytdlp@gmail.com>2022-02-01 08:10:19 +0530
committerpukkandan <pukkandan.ytdlp@gmail.com>2022-02-01 08:10:41 +0530
commit48416bc4a8f1d5ff07d5977659cb8ece7640dcd8 (patch)
treea2a31c9fe9b631a132fa652edec2ee450315c0fe /yt_dlp/extractor
parent6a0546e313fbd7f731c6c99e23d2f2be4b0cf588 (diff)
downloadhypervideo-pre-48416bc4a8f1d5ff07d5977659cb8ece7640dcd8.tar.lz
hypervideo-pre-48416bc4a8f1d5ff07d5977659cb8ece7640dcd8.tar.xz
hypervideo-pre-48416bc4a8f1d5ff07d5977659cb8ece7640dcd8.zip
[youtube] Fix n-sig for player e06dea74
Diffstat (limited to 'yt_dlp/extractor')
-rw-r--r--yt_dlp/extractor/youtube.py12
1 files changed, 9 insertions, 3 deletions
diff --git a/yt_dlp/extractor/youtube.py b/yt_dlp/extractor/youtube.py
index 98f02331c..1600b6515 100644
--- a/yt_dlp/extractor/youtube.py
+++ b/yt_dlp/extractor/youtube.py
@@ -42,6 +42,7 @@ from ..utils import (
int_or_none,
is_html,
join_nonempty,
+ js_to_json,
mimetype2ext,
network_exceptions,
NO_DEFAULT,
@@ -2420,9 +2421,14 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
raise ExtractorError(traceback.format_exc(), cause=e, video_id=video_id)
def _extract_n_function_name(self, jscode):
- return self._search_regex(
- (r'\.get\("n"\)\)&&\(b=(?P<nfunc>[a-zA-Z0-9$]{3})\([a-zA-Z0-9]\)',),
- jscode, 'Initial JS player n function name', group='nfunc')
+ nfunc, idx = self._search_regex(
+ r'\.get\("n"\)\)&&\(b=(?P<nfunc>[a-zA-Z0-9$]{3})(\[(?P<idx>\d+)\])?\([a-zA-Z0-9]\)',
+ jscode, 'Initial JS player n function name', group=('nfunc', 'idx'))
+ if not idx:
+ return nfunc
+ return json.loads(js_to_json(self._search_regex(
+ rf'var {nfunc}\s*=\s*(\[.+?\]);', jscode,
+ f'Initial JS player n function list ({nfunc}.{idx})')))[int(idx)]
def _extract_n_function(self, video_id, player_url):
player_id = self._extract_player_info(player_url)