Skip to content

Commit

Permalink
[youtube] Fix n-sig for player e06dea74
Browse files Browse the repository at this point in the history
  • Loading branch information
pukkandan committed Feb 1, 2022
1 parent 6a0546e commit 48416bc
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 3 deletions.
4 changes: 4 additions & 0 deletions test/test_youtube_signature.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,10 @@
'https://www.youtube.com/s/player/8040e515/player_ias.vflset/en_US/base.js',
'wvOFaY-yjgDuIEg5', 'HkfBFDHmgw4rsw',
),
(
'https://www.youtube.com/s/player/e06dea74/player_ias.vflset/en_US/base.js',
'AiuodmaDDYw8d3y4bf', 'ankd8eza2T6Qmw',
),
]


Expand Down
12 changes: 9 additions & 3 deletions yt_dlp/extractor/youtube.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
int_or_none,
is_html,
join_nonempty,
js_to_json,
mimetype2ext,
network_exceptions,
NO_DEFAULT,
Expand Down Expand Up @@ -2420,9 +2421,14 @@ def _decrypt_nsig(self, s, video_id, player_url):
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)
Expand Down

0 comments on commit 48416bc

Please sign in to comment.