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
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
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]\)',

This comment has been minimized.

Copy link
@dirkf

dirkf Feb 1, 2022

Contributor

...(?:\[(?P<idx>\d+)\])?... ?

This comment has been minimized.

Copy link
@pukkandan

pukkandan Feb 1, 2022

Author Member

Yes, my bad. It doesnt need to be captured (doesnt actually matter since we use named groups, but is against code style)

This comment has been minimized.

Copy link
@dirkf

dirkf Feb 1, 2022

Contributor

Just what I thought.

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.