@@ -1665,37 +1665,29 @@ def _decrypt_nsig(self, n, video_id, player_url):
1665
1665
1666
1666
def _extract_n_function_name (self , jscode ):
1667
1667
func_name , idx = self ._search_regex (
1668
+ # (y=NuD(),Mw(k),q=k.Z[y]||null)&&(q=narray[idx](q),k.set(y,q),k.V||NuD(''))}};
1668
1669
# (R="nn"[+J.Z],mW(J),N=J.K[R]||null)&&(N=narray[idx](N),J.set(R,N))}};
1669
- # new: (b=String.fromCharCode(110),c=a.get(b))&&c=nfunc [idx](c)
1670
- # or: (b="nn"[+a.D],c=a.get(b))&&(c=nfunc [idx](c)
1671
- # or: (PL(a),b=a.j.n||null)&&(b=nfunc [idx](b)
1670
+ # or: (b=String.fromCharCode(110),c=a.get(b))&&c=narray [idx](c)
1671
+ # or: (b="nn"[+a.D],c=a.get(b))&&(c=narray [idx](c)
1672
+ # or: (PL(a),b=a.j.n||null)&&(b=narray [idx](b)
1672
1673
# or: (b="nn"[+a.D],vL(a),c=a.j[b]||null)&&(c=narray[idx](c),a.set(b,c),narray.length||nfunc("")
1673
- # old: (b=a.get("n"))&&(b=nfunc [idx](b)(?P<c>[a-z])\s*=\s*[a-z]\s*
1674
+ # old: (b=a.get("n"))&&(b=narray [idx](b)(?P<c>[a-z])\s*=\s*[a-z]\s*
1674
1675
# older: (b=a.get("n"))&&(b=nfunc(b)
1675
1676
r'''(?x)
1676
- \((?:[\w$()\s]+,)*?\s* # (
1677
- (?P<b>[a-zA-Z])\s*=\s* # b=, R=
1678
- (?:
1679
- (?: # expect ,c=a.get(b) (etc)
1680
- String\s*\.\s*fromCharCode\s*\(\s*110\s*\)|
1681
- "n+"\[\s*\+?s*[\w$.]+\s*]
1682
- )\s*(?:,[\w$()\s]+(?=,))*|
1683
- (?P<old>[\w$]+) # a (old[er])
1684
- )\s*
1685
- (?(old)
1686
- # b.get("n")
1687
- (?:\.\s*[\w$]+\s*|\[\s*[\w$]+\s*]\s*)*?
1688
- (?:\.\s*n|\[\s*"n"\s*]|\.\s*get\s*\(\s*"n"\s*\))
1689
- | # ,c=a.get(b)
1690
- ,\s*(?P<c>[a-zA-Z])\s*=\s*[a-zA-Z]\s*
1691
- (?:\.\s*[\w$]+\s*|\[\s*[\w$]+\s*]\s*)*?
1692
- (?:\[\s*(?P=b)\s*]|\.\s*get\s*\(\s*(?P=b)\s*\))
1693
- )
1694
- # interstitial junk
1695
- \s*(?:\|\|\s*null\s*)?(?:\)\s*)?&&\s*(?:\(\s*)?
1696
- (?(c)(?P=c)|(?P=b))\s*=\s* # [c|b]=
1697
- # nfunc|nfunc[idx]
1698
- (?P<nfunc>[a-zA-Z_$][\w$]*)(?:\s*\[(?P<idx>\d+)\])?\s*\(\s*[\w$]+\s*\)
1677
+ # (expr, ...,
1678
+ \((?:(?:\s*[\w$]+\s*=)?(?:[\w$"+\.\s(\[]+(?:[)\]]\s*)?),)*
1679
+ # b=...
1680
+ (?P<b>[\w$]+)\s*=\s*(?!(?P=b)[^\w$])[\w$]+\s*(?:(?:
1681
+ \.\s*[\w$]+ |
1682
+ \[\s*[\w$]+\s*\] |
1683
+ \.\s*get\s*\(\s*[\w$"]+\s*\)
1684
+ )\s*){,2}(?:\s*\|\|\s*null(?=\s*\)))?\s*
1685
+ \)\s*&&\s*\( # ...)&&(
1686
+ # b = nfunc, b = narray[idx]
1687
+ (?P=b)\s*=\s*(?P<nfunc>[\w$]+)\s*
1688
+ (?:\[\s*(?P<idx>[\w$]+)\s*\]\s*)?
1689
+ # (...)
1690
+ \(\s*[\w$]+\s*\)
1699
1691
''' , jscode , 'Initial JS player n function name' , group = ('nfunc' , 'idx' ),
1700
1692
default = (None , None ))
1701
1693
# thx bashonly: yt-dlp/yt-dlp/pull/10611
0 commit comments