yt-dlp: [youtube] nsig extraction failed: You may experience throttling for some formats

DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE

  • I understand that I will be blocked if I remove or skip any mandatory* field

Checklist

  • I’m reporting a bug unrelated to a specific site
  • I’ve verified that I’m running yt-dlp version 2022.08.08 (update instructions) or later (specify commit)
  • I’ve checked that all provided URLs are playable in a browser with the same IP and same login details
  • I’ve checked that all URLs and arguments with special characters are properly quoted or escaped
  • I’ve searched the bugtracker for similar issues including closed ones. DO NOT post duplicates
  • I’ve read the guidelines for opening an issue

Provide a description that is worded well enough to be understood

I assume that this is a new player as I could not find a reference to it in the repo. Receive WARNING: [youtube] nsig extraction failed: You may experience throttling for some formats for all actions against the affected video.

Provide verbose output that clearly demonstrates the problem

  • Run your yt-dlp command with -vU flag added (yt-dlp -vU <your command line>)
  • Copy the WHOLE output (starting with [debug] Command-line config) and insert it below

Complete Verbose Output

I meant to include this properly but the entire js player is output to the log, so Github tells me "There was an error creating your issue: body is too long (maximum is 65536 characters)."

Please forgive me, here is a pastebin link instead: https://pastebin.com/62j1x2yd

About this issue

  • Original URL
  • State: closed
  • Created 2 years ago
  • Reactions: 10
  • Comments: 145 (46 by maintainers)

Commits related to this issue

Most upvoted comments

I’ll make a proper release when I can. Meanwhile, here’s a build: https://github.com/pukkandan/yt-dlp-dev/releases/tag/2022.08.13.235132

Do test it out and let me know (with log) if there are any signatures that still fail

There seems to be a new player 5a3b6271 and it looks like PhantomJS did it’s job (?):


[debug] Saving youtube-nsig.5a3b6271 to cache
WARNING: [youtube] isC8DbsvS8A: Native nsig extraction failed: Trying with PhantomJS
         n = B2j7f_UPT4rfje85Lu_e ; player = https://www.youtube.com/s/player/5a3b6271/player_ias.vflset/en_US/base.js
[debug] [youtube] Signature function returned an exception; please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U
[youtube] isC8DbsvS8A: Executing signature code
[debug] [youtube] PhantomJS command line: phantomjs --ssl-protocol=any /tmp/tmpu202x950
[debug] [youtube] Decrypted nsig B2j7f_UPT4rfje85Lu_e => m5DmNymaGQ5RdQ

Tested with video isC8DbsvS8A.

TL;DR There is no impact on metadata extraction, and high quality unthrottled formats are still available in most cases.

YouTube has changed the n-param js function to be more complex than our js interpreter can handle (the infamous throttling parameter).

This issue only applies to web client formats, where the formats will be throttled and de-prioritized. There isn’t much to worry about since yt-dlp prefers android client formats over web client by default. Android formats don’t suffer from this and has most if not all the high quality formats web has.

I believe @pukkandan is attempting to write a fix for this. We’ll also need to fix the printing the entire js file to console too… 😉

Related: https://github.com/LuanRT/YouTube.js/issues/134, https://github.com/TeamNewPipe/NewPipe/issues/8760, https://github.com/ytdl-org/youtube-dl/issues/31164, https://github.com/TeamNewPipe/NewPipeExtractor/issues/902

… Probably it’s this regex /,][}",],()}([)/

Yes.

--- old/yt_dlp/jsinterp.py
+++ new/yt_dlp/jsinterp.py
@@ -245,11 +245,12 @@ def _separate(expr, delim=',', max_split=None):
                 counters[_MATCHING_PARENS[char]] += 1
             elif not in_quote and char in counters:
                 counters[char] -= 1
-            elif not escaping and char in _QUOTES and in_quote in (char, None):
-                if in_quote or after_op or char != '/':
-                    in_quote = None if in_quote and not in_regex_char_group else char
-            elif in_quote == '/' and char in '[]':
-                in_regex_char_group = char == '['
+            elif not escaping:
+                if char in _QUOTES and in_quote in (char, None):
+                    if in_quote or after_op or char != '/':
+                        in_quote = None if in_quote and not in_regex_char_group else char
+                elif in_quote == '/' and char in '[]':
+                    in_regex_char_group = char == '['
             escaping = not escaping and in_quote and char == '\\'
             after_op = not in_quote and char in OP_CHARS or (char.isspace() and after_op)

Can I kindly ask whether this “WIP” is public?

You could, but it is<strike>n’t yet</strike> superseded by https://github.com/ytdl-org/youtube-dl/commit/55c823634db890a328ffc23588fcd6f35d9b3ddf.

@pukkandan YouTube added its new player 113ca41c that throttled some or all of the video’s formats:

[debug] Command-line config: ['fEaMDCbFi5I', '-v', '-F']
[debug] Encodings: locale cp1252, fs utf-8, pref cp1252, out utf-8 (No VT), error utf-8 (No VT), screen utf-8 (No VT)
[debug] yt-dlp version 2022.08.19 [48c88e0] (win32_exe)
[debug] Python 3.8.10 (CPython 64bit) - Windows-7-6.1.7601-SP1
[debug] Checking exe version: ffmpeg -bsfs
[debug] Checking exe version: ffprobe -bsfs
[debug] exe versions: ffmpeg 2022-08-08-git-56973eb687-full_build-www.gyan.dev (setts), ffprobe 2022-08-08-git-56973eb687-full_build-www.gyan.dev
[debug] Optional libraries: Cryptodome-3.15.0, brotli-1.0.9, certifi-2022.06.15, mutagen-1.45.1, sqlite3-2.6.0, websockets-10.3
[debug] Proxy map: {}
[debug] [youtube] Extracting URL: fEaMDCbFi5I
[youtube] fEaMDCbFi5I: Downloading webpage
[youtube] fEaMDCbFi5I: Downloading android player API JSON
[youtube] fEaMDCbFi5I: Downloading tv embedded player API JSON
[youtube] fEaMDCbFi5I: Downloading web embedded client config
[youtube] fEaMDCbFi5I: Downloading player 113ca41c
[youtube] fEaMDCbFi5I: Downloading web embedded player API JSON
[debug] Loading youtube-nsig.113ca41c from cache
WARNING: [youtube] fEaMDCbFi5I: nsig extraction failed: You may experience throttling for some formats
         Install PhantomJS to workaround the issue
         n = -WdECUs3ddLY-j ; player = https://www.youtube.com/s/player/113ca41c/player_ias.vflset/en_US/base.js
[debug] [youtube] No terminating paren } in: {e=void0===e?"":e;f=void0===f?!1:f;if(a)if(c&...ack;d.level=b[c].level;g.eu(d)}Zw().set("errors",{; please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U
[debug] Loading youtube-nsig.113ca41c from cache
WARNING: [youtube] fEaMDCbFi5I: nsig extraction failed: You may experience throttling for some formats
         Install PhantomJS to workaround the issue
         n = P6rCI7J33oLpzG ; player = https://www.youtube.com/s/player/113ca41c/player_ias.vflset/en_US/base.js
[debug] Sort order given by extractor: quality, res, fps, hdr:12, source, vcodec:vp9.2, channels, acodec, lang, proto
[debug] Formats sorted by: hasvid, ie_pref, quality, res, fps, hdr:12(7), source, vcodec:vp9.2(10), channels, acodec, lang, proto, filesize, fs_approx, tbr, vbr, abr, asr, vext, aext, hasaud, id
[info] Available formats for fEaMDCbFi5I:
ID  EXT   RESOLUTION FPS CH |   FILESIZE    TBR PROTO | VCODEC           VBR ACODEC      ABR ASR MORE INFO
-----------------------------------------------------------------------------------------------------------------------------
sb2 mhtml 48x27        0    |                   mhtml | images                                   storyboard
sb1 mhtml 85x45        0    |                   mhtml | images                                   storyboard
sb0 mhtml 170x90       0    |                   mhtml | images                                   storyboard
249 webm  audio only      2 |    4.21MiB    53k https | audio only           opus        53k 48k low, THROTTLED, webm_dash
250 webm  audio only      2 |    5.60MiB    70k https | audio only           opus        70k 48k low, THROTTLED, webm_dash
140 m4a   audio only      2 |   10.32MiB   129k https | audio only           mp4a.40.2  129k 44k medium, THROTTLED, m4a_dash
251 webm  audio only      2 |   10.71MiB   134k https | audio only           opus       134k 48k medium, THROTTLED, webm_dash
394 mp4   256x136     24    |    4.70MiB    59k https | av01.0.00M.08    59k video only          144p, THROTTLED, mp4_dash
160 mp4   256x136     24    |    4.78MiB    60k https | avc1.4d400c      60k video only          144p, THROTTLED, mp4_dash
278 webm  256x136     24    |    5.30MiB    67k https | vp9              67k video only          144p, THROTTLED, webm_dash
395 mp4   426x224     24    |    8.53MiB   107k https | av01.0.00M.08   107k video only          240p, THROTTLED, mp4_dash
133 mp4   426x224     24    |    9.88MiB   124k https | avc1.4d400d     124k video only          240p, THROTTLED, mp4_dash
242 webm  426x224     24    |    9.64MiB   121k https | vp9             121k video only          240p, THROTTLED, webm_dash
396 mp4   640x338     24    |   17.04MiB   214k https | av01.0.01M.08   214k video only          360p, THROTTLED, mp4_dash
134 mp4   640x338     24    |   20.11MiB   252k https | avc1.4d401e     252k video only          360p, THROTTLED, mp4_dash
18  mp4   640x338     24  2 |   42.82MiB   537k https | avc1.42001E     537k mp4a.40.2    0k 44k 360p, THROTTLED
243 webm  640x338     24    |   21.83MiB   274k https | vp9             274k video only          360p, THROTTLED, webm_dash
397 mp4   854x450     24    |   30.69MiB   385k https | av01.0.04M.08   385k video only          480p, THROTTLED, mp4_dash
135 mp4   854x450     24    |   33.63MiB   422k https | avc1.4d401e     422k video only          480p, THROTTLED, mp4_dash
244 webm  854x450     24    |   33.10MiB   415k https | vp9             415k video only          480p, THROTTLED, webm_dash
398 mp4   1280x676    24    |   61.69MiB   774k https | av01.0.05M.08   774k video only          720p, THROTTLED, mp4_dash
136 mp4   1280x676    24    |   55.46MiB   696k https | avc1.4d401f     696k video only          720p, THROTTLED, mp4_dash
22  mp4   1280x676    24  2 | ~ 67.35MiB   825k https | avc1.64001F     825k mp4a.40.2    0k 44k 720p, THROTTLED
247 webm  1280x676    24    |   66.82MiB   838k https | vp9             838k video only          720p, THROTTLED, webm_dash
399 mp4   1920x1012   24    |  109.73MiB  1377k https | av01.0.08M.08  1377k video only          1080p, THROTTLED, mp4_dash
137 mp4   1920x1012   24    |  180.49MiB  2264k https | avc1.640028    2264k video only          1080p, THROTTLED, mp4_dash
248 webm  1920x1012   24    |  114.22MiB  1433k https | vp9            1433k video only          1080p, THROTTLED, webm_dash
400 mp4   2560x1350   24    |  373.71MiB  4688k https | av01.0.12M.08  4688k video only          1440p, THROTTLED, mp4_dash
271 webm  2560x1350   24    |  424.68MiB  5327k https | vp9            5327k video only          1440p, THROTTLED, webm_dash
401 mp4   3840x2026   24    |  746.29MiB  9362k https | av01.0.12M.08  9362k video only          2160p, THROTTLED, mp4_dash
313 webm  3840x2026   24    |  977.30MiB 12260k https | vp9           12260k video only          2160p, THROTTLED, webm_dash

FWIW, at least the example given by @gamer191 downloads at full speed now without warning. 🙂 (yt-dlp built with the latest commit) Yesterday it was ~600kb/sec wit aria2…

yt-dlp --ignore-config -v 7XL7yNuIsVs
[debug] Command-line config: ['--ignore-config', '-v', '7XL7yNuIsVs']
[debug] Encodings: locale UTF-8, fs utf-8, pref UTF-8, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version 2022.08.14 [8f53dc44a] (zip)
[debug] Python 3.8.10 (CPython 64bit) - Linux-5.4.0-124-generic-x86_64-with-glibc2.29 (glibc 2.31)
[debug] Checking exe version: ffmpeg -bsfs
[debug] Checking exe version: ffprobe -bsfs
[debug] exe versions: ffmpeg N-107417-g940169b8aa-Nico-20220718 (fdk,setts), ffprobe N-107417-g940169b8aa-Nico-20220718, phantomjs 2.1.1
[debug] Optional libraries: Cryptodome-3.12.0, brotli-1.0.9, certifi-2019.11.28, mutagen-1.45.1, secretstorage-2.3.1, sqlite3-2.6.0, websockets-10.1, xattr-0.9.6
[debug] Proxy map: {}
[debug] [youtube] Extracting URL: 7XL7yNuIsVs
[youtube] 7XL7yNuIsVs: Downloading webpage
[youtube] 7XL7yNuIsVs: Downloading android player API JSON
[youtube] 7XL7yNuIsVs: Downloading tv embedded player API JSON
[youtube] 7XL7yNuIsVs: Downloading web embedded client config
[youtube] 7XL7yNuIsVs: Downloading player 4c3f79c5
[youtube] 7XL7yNuIsVs: Downloading web embedded player API JSON
[debug] Saving youtube-nsig.4c3f79c5 to cache
[debug] [youtube] Decrypted nsig eF9dLOX5sJgibw-0Iy => bo7Eb7--E1Co_g
[debug] [youtube] Decrypted nsig de2dGw2TX_SUEv9uJ3 => VwRSIeMOR0x3iA
[debug] Sort order given by extractor: quality, res, fps, hdr:12, source, vcodec:vp9.2, channels, acodec, lang, proto
[debug] Formats sorted by: hasvid, ie_pref, quality, res, fps, hdr:12(7), source, vcodec:vp9.2(10), channels, acodec, lang, proto, filesize, fs_approx, tbr, vbr, abr, asr, vext, aext, hasaud, id
[debug] Default format spec: bestvideo*+bestaudio/best
[info] 7XL7yNuIsVs: Downloading 1 format(s): 248+251
[debug] Invoking http downloader on "https://rr5---sn-5hne6nsd.googlevideo.com/videoplayback?expire=1660473438&ei=_nv4YovuEZWn1gLEjbO4Ag&ip=217.121.193.63&id=o-ABY8QbrPB7lzdxFZkGAG8ZtPzQo8nECheJuZV-zGP9dF&itag=248&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C278%2C394%2C395%2C396%2C397%2C398%2C399&source=youtube&requiressl=yes&mh=MK&mm=31%2C29&mn=sn-5hne6nsd%2Csn-5hnekn7z&ms=au%2Crdu&mv=m&mvi=5&pl=18&initcwndbps=1737500&vprv=1&mime=video%2Fwebm&ns=29OZM4EpQzpZZMtEReZQIIkH&gir=yes&clen=240485751&dur=2442.481&lmt=1624836011543700&mt=1660451569&fvip=1&keepalive=yes&fexp=24001373%2C24007246&c=TVHTML5_SIMPLY_EMBEDDED_PLAYER&rbqsm=fr&txp=5535434&n=VwRSIeMOR0x3iA&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&sig=AOq0QJ8wRQIhAIq2vpleLRcXXUlLKHVwy0Z8-J12JKbr0yrCP_bT7R2qAiA8AIMEu_1_8mdLaCS1UXOBqBc8gBO69EtzDzHTVmGe5g%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRgIhANNUKsZKmcW6EOg-wkD6ydHjoIFxRJTlS6gbSpIiXbkhAiEAtw6-q9ze8lnrKIOL_mUCNXnQyGWfaEv8mkD0bXxhCfI%3D"
[download] Destination: The Iran-Iraq War: The Original Gulf War | Documentary [7XL7yNuIsVs].f248.webm
[download]  34.0% of 229.35MiB at   12.35MiB/s ETA 00:12^C
ERROR: Interrupted by user


This signature function is way more complicated than anything we have previously dealt with.

WIP branch if anyone wants to help out: https://github.com/yt-dlp/yt-dlp/compare/master...pukkandan:yt-dlp-dev:features/jsinterp

We’ll also need to fix the printing the entire js file to console too… 😉

Ive trimmed it in the above branch

A similar fix works for yt-dl. But looking forward to the version with something like let a=100; a/=/[0-9]+/.exec('divide by 20 today')[0];

Aaand… A new one again:

[debug] [youtube] Extracting URL: qqnWmz-qG5w
[youtube] qqnWmz-qG5w: Downloading webpage
[youtube] qqnWmz-qG5w: Downloading android player API JSON
[youtube] qqnWmz-qG5w: Downloading player c16db54a
[debug] Saving youtube-nsig.c16db54a to cache
[debug] [youtube] Decrypted nsig a53lHY2kmsVGGS4 => uWkqf6sQQGw32Q

At least it’s decrypted fine now. 🙂

The reason for PhantomJS doesn’t finish is simple: the passed code is bogus

image

Bonus: here’s the code https://gist.github.com/7cd88010f68419df69bd0778a0fc52e1

@pukkandan YouTube added its new player 113ca41c that throttled some or all of the video’s formats:

With PhantomJS throttled as well:

yt-dlp -v --ignore-config -F fEaMDCbFi5I
[debug] Command-line config: ['-v', '--ignore-config', '-F', 'fEaMDCbFi5I']
[debug] Encodings: locale UTF-8, fs utf-8, pref UTF-8, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version 2022.08.29 [224b5a35f] (zip)
[debug] Python 3.8.10 (CPython 64bit) - Linux-5.4.0-125-generic-x86_64-with-glibc2.29 (glibc 2.31)
[debug] Checking exe version: ffmpeg -bsfs
[debug] Checking exe version: ffprobe -bsfs
[debug] exe versions: ffmpeg N-107787-gc469c3c3b1-Nico-20220816 (fdk,setts), ffprobe N-107787-gc469c3c3b1-Nico-20220816, phantomjs 2.1.1, rtmpdump 2.4
[debug] Optional libraries: Cryptodome-3.12.0, brotli-1.0.9, certifi-2019.11.28, mutagen-1.45.1, secretstorage-2.3.1, sqlite3-2.6.0, websockets-10.1, xattr-0.9.6
[debug] Proxy map: {}
[debug] Loaded 1663 extractors
[debug] [youtube] Extracting URL: fEaMDCbFi5I
[youtube] fEaMDCbFi5I: Downloading webpage
[youtube] fEaMDCbFi5I: Downloading android player API JSON
[youtube] fEaMDCbFi5I: Downloading tv embedded player API JSON
[youtube] fEaMDCbFi5I: Downloading web embedded client config
[youtube] fEaMDCbFi5I: Downloading player 113ca41c
[youtube] fEaMDCbFi5I: Downloading web embedded player API JSON
[debug] Saving youtube-nsig.113ca41c to cache
WARNING: [youtube] fEaMDCbFi5I: Native nsig extraction failed: Trying with PhantomJS
         n = cgYl-tlYkhjT7A ; player = https://www.youtube.com/s/player/113ca41c/player_ias.vflset/en_US/base.js
[debug] [youtube] No terminating paren } in: {e=void 0===e?"":e;f=void 0===f?!1:f;if(a)if(c&...ack;d.level=b[c].level;g.eu(d)}Zw().set("errors",{; please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U
[youtube] fEaMDCbFi5I: Executing signature code
[debug] [youtube] PhantomJS command line: phantomjs --ssl-protocol=any /tmp/tmp7wha79s0
WARNING: [youtube] fEaMDCbFi5I: nsig extraction failed: You may experience throttling for some formats
         n = cgYl-tlYkhjT7A ; player = https://www.youtube.com/s/player/113ca41c/player_ias.vflset/en_US/base.js
[debug] [youtube] Executing signature code failed: Unable to run PhantomJS binary (caused by TimeoutExpired(['phantomjs', '--ssl-protocol=any', '/tmp/tmp7wha79s0'], 5.0)); please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U
[debug] Loading youtube-nsig.113ca41c from cache
WARNING: [youtube] fEaMDCbFi5I: Native nsig extraction failed: Trying with PhantomJS
         n = f3qEwxZvzbTtvy ; player = https://www.youtube.com/s/player/113ca41c/player_ias.vflset/en_US/base.js
[debug] [youtube] No terminating paren } in: {e=void 0===e?"":e;f=void 0===f?!1:f;if(a)if(c&...ack;d.level=b[c].level;g.eu(d)}Zw().set("errors",{; please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U
[youtube] fEaMDCbFi5I: Executing signature code
[debug] [youtube] PhantomJS command line: phantomjs --ssl-protocol=any /tmp/tmpos6jgy5j
WARNING: [youtube] fEaMDCbFi5I: nsig extraction failed: You may experience throttling for some formats
         n = f3qEwxZvzbTtvy ; player = https://www.youtube.com/s/player/113ca41c/player_ias.vflset/en_US/base.js
[debug] [youtube] Executing signature code failed: Unable to run PhantomJS binary (caused by TimeoutExpired(['phantomjs', '--ssl-protocol=any', '/tmp/tmpos6jgy5j'], 5.0)); please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U
[debug] Sort order given by extractor: quality, res, fps, hdr:12, source, vcodec:vp9.2, channels, acodec, lang, proto
[debug] Formats sorted by: hasvid, ie_pref, quality, res, fps, hdr:12(7), source, vcodec:vp9.2(10), channels, acodec, lang, proto, filesize, fs_approx, tbr, vbr, abr, asr, vext, aext, hasaud, id
[info] Available formats for fEaMDCbFi5I:
ID  EXT   RESOLUTION FPS CH │   FILESIZE    TBR PROTO │ VCODEC           VBR ACODEC      ABR ASR MORE INFO
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
sb2 mhtml 48x27        0    │                   mhtml │ images                                   storyboard
sb1 mhtml 85x45        0    │                   mhtml │ images                                   storyboard
sb0 mhtml 170x90       0    │                   mhtml │ images                                   storyboard
249 webm  audio only      2 │    4.21MiB    53k https │ audio only           opus        53k 48k low, THROTTLED, webm_dash
250 webm  audio only      2 │    5.60MiB    70k https │ audio only           opus        70k 48k low, THROTTLED, webm_dash
140 m4a   audio only      2 │   10.32MiB   129k https │ audio only           mp4a.40.2  129k 44k medium, THROTTLED, m4a_dash
251 webm  audio only      2 │   10.71MiB   134k https │ audio only           opus       134k 48k medium, THROTTLED, webm_dash
394 mp4   256x136     24    │    4.70MiB    59k https │ av01.0.00M.08    59k video only          144p, THROTTLED, mp4_dash
160 mp4   256x136     24    │    4.78MiB    60k https │ avc1.4d400c      60k video only          144p, THROTTLED, mp4_dash
278 webm  256x136     24    │    5.30MiB    67k https │ vp9              67k video only          144p, THROTTLED, webm_dash
395 mp4   426x224     24    │    8.53MiB   107k https │ av01.0.00M.08   107k video only          240p, THROTTLED, mp4_dash
133 mp4   426x224     24    │    9.88MiB   124k https │ avc1.4d400d     124k video only          240p, THROTTLED, mp4_dash
242 webm  426x224     24    │    9.64MiB   121k https │ vp9             121k video only          240p, THROTTLED, webm_dash
396 mp4   640x338     24    │   17.04MiB   214k https │ av01.0.01M.08   214k video only          360p, THROTTLED, mp4_dash
134 mp4   640x338     24    │   20.11MiB   252k https │ avc1.4d401e     252k video only          360p, THROTTLED, mp4_dash
18  mp4   640x338     24  2 │   42.82MiB   537k https │ avc1.42001E     537k mp4a.40.2    0k 44k 360p, THROTTLED
243 webm  640x338     24    │   21.83MiB   274k https │ vp9             274k video only          360p, THROTTLED, webm_dash
397 mp4   854x450     24    │   30.69MiB   385k https │ av01.0.04M.08   385k video only          480p, THROTTLED, mp4_dash
135 mp4   854x450     24    │   33.63MiB   422k https │ avc1.4d401e     422k video only          480p, THROTTLED, mp4_dash
244 webm  854x450     24    │   33.10MiB   415k https │ vp9             415k video only          480p, THROTTLED, webm_dash
398 mp4   1280x676    24    │   61.69MiB   774k https │ av01.0.05M.08   774k video only          720p, THROTTLED, mp4_dash
136 mp4   1280x676    24    │   55.46MiB   696k https │ avc1.4d401f     696k video only          720p, THROTTLED, mp4_dash
22  mp4   1280x676    24  2 │ ~ 67.35MiB   825k https │ avc1.64001F     825k mp4a.40.2    0k 44k 720p, THROTTLED
247 webm  1280x676    24    │   66.82MiB   838k https │ vp9             838k video only          720p, THROTTLED, webm_dash
399 mp4   1920x1012   24    │  109.73MiB  1377k https │ av01.0.08M.08  1377k video only          1080p, THROTTLED, mp4_dash
137 mp4   1920x1012   24    │  180.49MiB  2264k https │ avc1.640028    2264k video only          1080p, THROTTLED, mp4_dash
248 webm  1920x1012   24    │  114.22MiB  1433k https │ vp9            1433k video only          1080p, THROTTLED, webm_dash
400 mp4   2560x1350   24    │  373.71MiB  4688k https │ av01.0.12M.08  4688k video only          1440p, THROTTLED, mp4_dash
271 webm  2560x1350   24    │  424.68MiB  5327k https │ vp9            5327k video only          1440p, THROTTLED, webm_dash
401 mp4   3840x2026   24    │  746.29MiB  9362k https │ av01.0.12M.08  9362k video only          2160p, THROTTLED, mp4_dash
313 webm  3840x2026   24    │  977.30MiB 12260k https │ vp9           12260k video only          2160p, THROTTLED, webm_dash

Player 1f7d5369 contains this element of a JS list:

  /,,[/,913,/](,)}/,

So regex. Quite unpleasant.

yt-dlp’s breakage is not (just) due to quoting issue. Newpipe uses a full JS interpretter but we use an inhouse approximation of one. So fixing the full issue is more tedious for us and will take time. You can see my WIP branch above (and contributions to it are welcome)

@TheBlode What’s the urgency? Despite the warning, everything currently works as expected due to our fallbacks (No longer the case)

don’t give them ideas 😅

Google have started serving today new ytplayer a7eb1f5d; seems compatible with latest jsinterp.py 👍 :

[debug] Command-line config: ['--ffmpeg-location', '..', '--downloader-args', 'ffmpeg:-v 8 -stats', '-v', '-F', 'p7FCgw_GlWc', '--ie', 'youtube']
[debug] Encodings: locale cp1253, fs utf-8, pref cp1253, out utf-8 (No VT), error utf-8 (No VT), screen utf-8 (No VT)
[debug] ytdl-patched/yt-dlp version 2022.09.07 [47a60be] (win32_exe)
[debug] ** This build is unofficial daily builds, provided for ease of use.
[debug] ** Please do not ask for any support.
[debug] Python 3.7.9 (CPython 32bit) - Windows-Vista-6.0.6003-SP2
[debug] Checking exe version: "..\ffmpeg" -bsfs
[debug] Checking exe version: "..\ffprobe" -bsfs
[debug] exe versions: ffmpeg 4.4.1 (setts), ffprobe 4.4.1, phantomjs 2.1.1
[debug] Optional libraries: Cryptodome-3.15.0, brotli-1.0.9, certifi-2022.06.15, mutagen-1.45.1, sqlite3-2.6.0, websockets-10.3
[debug] Proxy map: {}
[debug] Loaded 1 extractors
[debug] [youtube] Extracting URL: p7FCgw_GlWc
[youtube] p7FCgw_GlWc: Downloading webpage
[youtube] p7FCgw_GlWc: Downloading android player API JSON
[youtube] p7FCgw_GlWc: Downloading tv embedded player API JSON
[youtube] p7FCgw_GlWc: Downloading web embedded client config
[youtube] p7FCgw_GlWc: Downloading player a7eb1f5d
[youtube] p7FCgw_GlWc: Downloading web embedded player API JSON
[debug] [youtube] Extracting signature function js_a7eb1f5d_108
[debug] Saving youtube-sigfuncs.js_a7eb1f5d_108 to cache
[debug] Saving youtube-nsig.a7eb1f5d to cache
[debug] [youtube] Decrypted nsig bBZpz3iXQpDkDGd03cx => Pf7xY1281FHQOQ
[debug] [youtube] Extracting signature function js_a7eb1f5d_104
[debug] Saving youtube-sigfuncs.js_a7eb1f5d_104 to cache
[debug] Loading youtube-nsig.a7eb1f5d from cache
[debug] [youtube] Decrypted nsig S-ET4eukq2z1mAPVG1j => D8RkWUrCr3cs8Q
[debug] Sort order given by extractor: quality, res, fps, hdr:12, source, vcodec
:vp9.2, channels, acodec, lang, proto
[debug] Formats sorted by: hasvid, ie_pref, quality, res, fps, hdr:12(7), source, vcodec:vp9.2(10), channels, acodec, lang, proto, filesize, fs_approx, tbr, vbr, abr, asr, vext, aext, hasaud, id
[info] Available formats for p7FCgw_GlWc:
(redacted for brevity)

The issue is operator associativity. This expression

new Date("Wednesday 31 December 1969 20:03:25 EDT")/1E3%37+Math.pow(8,2)- -28

should evaluate as ((205000/1E3)%37)+(64+28) == 112 but instead we’re calculating (205000/(1E3%37))+(64+28) == 205092. Operators of the same precedence need to be split at the same time rather than just taking the leftmost split. Then we could have a list of expressions that can be reduced pairwise from left to right, or right-to-left, as with eg **: 4**3**2 == 4**9.

The previous line in my log also indicates that I use the bundled version (linux_exe a.k.a. yt-dlp_linux), and I can’t compile it either because of the python version discrepancy.

In that case, you could probably update to:

https://github.com/ytdl-patched/yt-dlp/releases/tag/2022.08.31.810

but Google 😡 may have already spoiled it for you by releasing ytplayer c57c113c <strike>(which hasn’t yet arrived in my part of the woods)</strike> …

I have added fallback to phantomjs. I still intend to keep fixing new players, so report if you find any that’s broken. But it will no longer be treated as high priority

PS: I’ll also make another release asap

God it feels like YouTube is watching this repo as we speak.

What’s the urgency? Despite the warning, everything currently works as expected due to our fallbacks

Some (but not all) age-gated content is being completely throttled (tested on master, to avoid an extremely long verbose log):

yt-dlp 7XL7yNuIsVs --ignore-config -F --verbose
[debug] Command-line config: ['7XL7yNuIsVs', '--ignore-config', '-F', '--verbose']
[debug] Encodings: locale cp1252, fs utf-8, pref cp1252, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version 2022.08.08 [3157158f7] (source)
[debug] Lazy loading extractors is disabled
[debug] Plugins: ['SamplePluginIE', 'SamplePluginPP']
[debug] Git HEAD: cea4b857f
[debug] Python 3.10.5 (CPython 64bit) - Windows-10-10.0.19043-SP0
[debug] Checking exe version: ffmpeg -bsfs
[debug] Checking exe version: ffprobe -bsfs
[debug] exe versions: none
[debug] Optional libraries: certifi-2022.06.15, sqlite3-2.6.0
[debug] Proxy map: {}
[debug] [youtube] Extracting URL: 7XL7yNuIsVs
[youtube] 7XL7yNuIsVs: Downloading webpage
[youtube] 7XL7yNuIsVs: Downloading android player API JSON
[youtube] 7XL7yNuIsVs: Downloading tv embedded player API JSON
[youtube] 7XL7yNuIsVs: Downloading web embedded client config
[youtube] 7XL7yNuIsVs: Downloading player 4c3f79c5
[youtube] 7XL7yNuIsVs: Downloading web embedded player API JSON
WARNING: [youtube] nsig extraction failed: You may experience throttling for some formats
n = BSo30-u3BZ5vzJGc5D ; player = https://www.youtube.com/s/player/4c3f79c5/player_ias.vflset/en_US/base.js
[debug] [youtube] 7XL7yNuIsVs: Traceback (most recent call last):
  File "C:\GitHub\yt-dlp-OG\yt_dlp\extractor\youtube.py", line 2622, in _decrypt_nsig
    self._player_cache[player_id] = self._extract_n_function(video_id, player_url)
  File "C:\GitHub\yt-dlp-OG\yt_dlp\extractor\youtube.py", line 2650, in _extract_n_function
    func_code = jsi.extract_function_code(funcname)
  File "C:\GitHub\yt-dlp-OG\yt_dlp\jsinterp.py", line 474, in extract_function_code
    code, _ = self._separate_at_paren(func_m.group('code'), '}')  # refine the match
  File "C:\GitHub\yt-dlp-OG\yt_dlp\jsinterp.py", line 101, in _separate_at_paren
    raise cls.Exception(f'No terminating paren {delim}', expr)
yt_dlp.jsinterp.JSInterpreter.Exception: No terminating paren } in: {var b=a.split(""),c=[1,-1491143228,function(d,...enhanced_except_j5YB8On-_w8_"+a}return b.join("")}; please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U
 (caused by Exception('No terminating paren } in: {var b=a.split(""),c=[1,-1491143228,function(d,...enhanced_except_j5YB8On-_w8_"+a}return b.join("")}; please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U')); please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U
WARNING: [youtube] nsig extraction failed: You may experience throttling for some formats
n = 8wlagkTO5_85ypHM2m ; player = https://www.youtube.com/s/player/4c3f79c5/player_ias.vflset/en_US/base.js
[debug] Sort order given by extractor: quality, res, fps, hdr:12, source, vcodec:vp9.2, channels, acodec, lang, proto
[debug] Formats sorted by: hasvid, ie_pref, quality, res, fps, hdr:12(7), source, vcodec:vp9.2(10), channels, acodec, lang, proto, filesize, fs_approx, tbr, vbr, abr, asr, vext, aext, hasaud, id
[info] Available formats for 7XL7yNuIsVs:
ID  EXT   RESOLUTION FPS CH │   FILESIZE   TBR PROTO │ VCODEC          VBR ACODEC      ABR ASR MORE INFO
───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
sb2 mhtml 48x27        0    │                  mhtml │ images                                  storyboard
sb1 mhtml 80x45        0    │                  mhtml │ images                                  storyboard
sb0 mhtml 160x90       0    │                  mhtml │ images                                  storyboard
249 webm  audio only      2 │   16.69MiB   57k https │ audio only          opus        57k 48k low, THROTTLED, webm_dash
250 webm  audio only      2 │   22.49MiB   77k https │ audio only          opus        77k 48k low, THROTTLED, webm_dash
140 m4a   audio only      2 │   37.70MiB  129k https │ audio only          mp4a.40.2  129k 44k medium, THROTTLED, m4a_dash
251 webm  audio only      2 │   43.40MiB  149k https │ audio only          opus       149k 48k medium, THROTTLED, webm_dash
394 mp4   256x144     24    │   15.92MiB   55k https │ av01.0.00M.08   55k video only          144p, THROTTLED, mp4_dash
160 mp4   256x144     24    │   10.78MiB   37k https │ avc1.4d400c     37k video only          144p, THROTTLED, mp4_dash
278 webm  256x144     24    │   17.05MiB   59k https │ vp9             59k video only          144p, THROTTLED, webm_dash
395 mp4   426x240     24    │   20.21MiB   69k https │ av01.0.00M.08   69k video only          240p, THROTTLED, mp4_dash
133 mp4   426x240     24    │   16.44MiB   56k https │ avc1.4d4015     56k video only          240p, THROTTLED, mp4_dash
242 webm  426x240     24    │   21.40MiB   74k https │ vp9             74k video only          240p, THROTTLED, webm_dash
396 mp4   640x360     24    │   36.07MiB  124k https │ av01.0.01M.08  124k video only          360p, THROTTLED, mp4_dash
134 mp4   640x360     24    │   27.48MiB   94k https │ avc1.4d401e     94k video only          360p, THROTTLED, mp4_dash
18  mp4   640x360     24  2 │  137.25MiB  471k https │ avc1.42001E    471k mp4a.40.2    0k 44k 360p, THROTTLED
243 webm  640x360     24    │   35.74MiB  123k https │ vp9            123k video only          360p, THROTTLED, webm_dash
397 mp4   854x480     24    │   59.71MiB  205k https │ av01.0.04M.08  205k video only          480p, THROTTLED, mp4_dash
135 mp4   854x480     24    │   38.77MiB  133k https │ avc1.4d401e    133k video only          480p, THROTTLED, mp4_dash
244 webm  854x480     24    │   52.30MiB  180k https │ vp9            180k video only          480p, THROTTLED, webm_dash
398 mp4   1280x720    24    │  108.56MiB  373k https │ av01.0.05M.08  373k video only          720p, THROTTLED, mp4_dash
136 mp4   1280x720    24    │   69.31MiB  238k https │ avc1.4d401f    238k video only          720p, THROTTLED, mp4_dash
22  mp4   1280x720    24  2 │ ~109.42MiB  367k https │ avc1.64001F    367k mp4a.40.2    0k 44k 720p, THROTTLED
247 webm  1280x720    24    │   82.59MiB  284k https │ vp9            284k video only          720p, THROTTLED, webm_dash
399 mp4   1920x1080   24    │  197.77MiB  679k https │ av01.0.08M.08  679k video only          1080p, THROTTLED, mp4_dash
137 mp4   1920x1080   24    │  312.27MiB 1072k https │ avc1.640028   1072k video only          1080p, THROTTLED, mp4_dash
248 webm  1920x1080   24    │  229.35MiB  788k https │ vp9            788k video only          1080p, THROTTLED, webm_dash

Sure, here’s a couple from my logs:

youtu.be/aPiHhJjN3hI
WARNING: [youtube] nsig extraction failed: You may experience throttling for some formats
n = TDCstCG66tEAO5pR9o ; player = https://www.youtube.com/s/player/4c3f79c5/player_ias.vflset/en_US/base.js

youtu.be/kutfBbTMidM
WARNING: [youtube] nsig extraction failed: You may experience throttling for some formats
n = n9lJz3gxwRv5REBJer ; player = https://www.youtube.com/s/player/4c3f79c5/player_ias.vflset/en_US/base.js

Not sure if this is expected, but the n value is different every time I rerun yt-dlp on the same video.

Can confirm on my side too, seems to be happening intermittently with most videos not being affected yet.

324f67b9 is not the only new player, I’ve noticed 4c3f79c5 too.

Completely unrelated to this issue. Use -N/aria2c to speed up fragmented downloads

Works again after commit https://github.com/yt-dlp/yt-dlp/commit/0468a3b3253957bfbeb98b4a7c71542ff80e9e06 😀️

yt-dlp -vF "p7FCgw_GlWc"
[debug] Command-line config: ['-vF', 'p7FCgw_GlWc']
[debug] User config "/home/nico/.config/yt-dlp/config": ['--rm-cache-dir', '-o', '/dev/shm/test-dlp/%(title)s.%(ext)s', '-f', 'bestvideo[height<=720][ext=mp4][vcodec!*=av01]+bestaudio[ext=m4a]/best[ext=mp4]/best', '--no-mtime', '--add-metadata', '--convert-thumbnails', 'jpg', '--embed-thumbnail', '--ppa', 'ThumbnailsConvertor:-q:v 1', '--ppa', 'ffmpeg:-metadata synopsis=""', '--force-ipv4', '--sponsorblock-remove', 'all', '--console-title', '--downloader', 'aria2c', '--downloader-args', 'aria2c:--http-accept-gzip=true -x 10 -s 10 -j 10 -k 1M --log-level=info --file-allocation=none']
[debug] Encodings: locale UTF-8, fs utf-8, pref UTF-8, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version 2022.10.11 [36069409e] (zip)
[debug] Python 3.8.10 (CPython 64bit) - Linux-5.4.0-126-generic-x86_64-with-glibc2.29 (glibc 2.31)
[debug] Checking exe version: ffmpeg -bsfs
[debug] Checking exe version: ffprobe -bsfs
[debug] exe versions: ffmpeg N-107787-gc469c3c3b1-Nico-20220816 (fdk,setts), ffprobe N-107787-gc469c3c3b1-Nico-20220816, phantomjs 2.1.1, rtmpdump 2.4
[debug] Optional libraries: Cryptodome-3.15.0, brotli-1.0.9, certifi-2022.09.14, mutagen-1.45.1, secretstorage-2.3.1, sqlite3-2.6.0, websockets-10.3, xattr-0.9.6
[debug] Proxy map: {}
[debug] Loaded 1696 extractors
Removing cache dir /home/nico/.cache/yt-dlp ...
[debug] [youtube] Extracting URL: p7FCgw_GlWc
[youtube] p7FCgw_GlWc: Downloading webpage
[youtube] p7FCgw_GlWc: Downloading android player API JSON
[youtube] p7FCgw_GlWc: Downloading tv embedded player API JSON
[youtube] p7FCgw_GlWc: Downloading web embedded client config
[youtube] p7FCgw_GlWc: Downloading player 7a062b77
[youtube] p7FCgw_GlWc: Downloading web embedded player API JSON
[debug] [youtube] Extracting signature function js_7a062b77_103
[debug] Saving youtube-sigfuncs.js_7a062b77_103 to cache
[debug] Saving youtube-nsig.7a062b77 to cache
[debug] [youtube] Decrypted nsig Ae8Wd3I7BLyOSVaI => 1ASpG8KIrUa39Q
[debug] [youtube] Extracting signature function js_7a062b77_107
[debug] Saving youtube-sigfuncs.js_7a062b77_107 to cache
[debug] Loading youtube-nsig.7a062b77 from cache
[debug] [youtube] Decrypted nsig WTyqYZdoBjFZunMH => SdmLe0tzRrX1Wg
[debug] Sort order given by extractor: quality, res, fps, hdr:12, source, vcodec:vp9.2, channels, acodec, lang, proto
[debug] Formats sorted by: hasvid, ie_pref, quality, res, fps, hdr:12(7), source, vcodec:vp9.2(10), channels, acodec, lang, proto, filesize, fs_approx, tbr, vbr, abr, asr, vext, aext, hasaud, id
[SponsorBlock] Fetching SponsorBlock segments
[debug] SponsorBlock query: https://sponsor.ajay.app/api/skipSegments/dd49?service=YouTube&categories=%5B%22intro%22%2C+%22outro%22%2C+%22filler%22%2C+%22interaction%22%2C+%22music_offtopic%22%2C+%22selfpromo%22%2C+%22sponsor%22%2C+%22preview%22%5D&actionTypes=%5B%22skip%22%2C+%22poi%22%5D
[SponsorBlock] Found 3 segments in the SponsorBlock database
[info] Available formats for p7FCgw_GlWc:
<---snip--->

… Thus, in the course of ca. 24h we’ve had 3 different ytplayers:

a7eb1f5d => f96f6702 => 6a14c793

What next? Hourly updates?

If they keep using a combination of 8 letters and numbers, there are (26+10)⁸= 2.821109907×10¹² nsig’s, if I’m correct …

So, they can update them every 10 minutes if they want. And when they’ve used them all, they just add one more to it.

But jokes aside, is it really necessary to keep _NSIG_TESTS that are no longer used in test_youtube_signature.py?

The phantomjs is working nicely for me, is it possible to suppress the WARNING in the stdout if the native nsig extraction fails but I have phantomjs?

We’ll have to use some full-fledged JS engine. PhantomJS support is already added. Other alternatives can be discussed in https://github.com/yt-dlp/yt-dlp/issues/1354.

Another option is to write one from scratch (https://github.com/yt-dlp/yt-dlp/issues/923), but I doubt this is feasible

Regarding the issue I posted https://github.com/yt-dlp/yt-dlp/issues/4635#issuecomment-1233585136 (phantomjs.exe is present and picked up, but is not tried for n-sig decryption - warned I should install it (as if it’s not) by jsinterp.py), I did some further troubleshooting, which resulted in me being at a complete loss…

It’s a mistake in the error message. PhantomJS will not actually help for this particular error

I can’t tell by reading the code whether it applies to the daily builds I’m using; when I first tried v2022.08.31.810

it does apply to 2022.08.31.810. Perhaps it’s time for another “invalidate old cache” commit

Due to different version numbers, the cache invalidation maynot always work for the unofficial daily builds (till actual release)

… Probably it’s this regex /,][}",],()}([)/

Yes.

--- old/yt_dlp/jsinterp.py
+++ new/yt_dlp/jsinterp.py
@@ -245,11 +245,12 @@ def _separate(expr, delim=',', max_split=None):
                 counters[_MATCHING_PARENS[char]] += 1
             elif not in_quote and char in counters:
                 counters[char] -= 1
-            elif not escaping and char in _QUOTES and in_quote in (char, None):
-                if in_quote or after_op or char != '/':
-                    in_quote = None if in_quote and not in_regex_char_group else char
-            elif in_quote == '/' and char in '[]':
-                in_regex_char_group = char == '['
+            elif not escaping:
+                if char in _QUOTES and in_quote in (char, None):
+                    if in_quote or after_op or char != '/':
+                        in_quote = None if in_quote and not in_regex_char_group else char
+                elif in_quote == '/' and char in '[]':
+                    in_regex_char_group = char == '['
             escaping = not escaping and in_quote and char == '\\'
             after_op = not in_quote and char in OP_CHARS or (char.isspace() and after_op)

Can I kindly ask whether this “WIP” is public?

You could, but it isn’t yet.

Thanks! That did the trick. 👍️

[debug] [youtube] Extracting URL: Je23iHKKT3o
[youtube] Je23iHKKT3o: Downloading webpage
[youtube] Je23iHKKT3o: Downloading android player API JSON
[youtube] Je23iHKKT3o: Downloading player c57c113c
[debug] Saving youtube-nsig.c57c113c to cache
[debug] [youtube] Decrypted nsig M92UUMHa8PdvPd3wyM => 3hPqLJsiNZx7yA

this behaviour is exclusive to latest ytplayer c57c113c

I have the same issue on the same player too, here are my logs if it’s at all helpful (removed some repetition from the download archive argument):

[debug] Command-line config: ['-vU', '--download-archive', './downloaded.txt', '--live-from-start', '--no-post-overwrites', '-o', '%(uploader)s/%(title)s [%(id)s].%(ext)s', '--embed-metadata', '--embed-thumbnail', '--embed-subs', '--sub-langs', 'all,-live_chat', '--write-thumbnail', '-o', 'thumbnail:%(uploader)s/%(title)s [%(id)s].%(ext)s', '--embed-info-json', '--write-subs', '--write-info-json', '--sponsorblock-mark', 'all', '--socket-timeout', '5', 'https://www.youtube.com/c/Pyrocynical']
[debug] Encodings: locale UTF-8, fs utf-8, pref UTF-8, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version 2022.08.19.2 [48c88e088]
[debug] Lazy loading extractors is disabled
[debug] Python 3.10.6 (CPython 64bit) - Linux-5.19.5-arch1-1-x86_64-with-glibc2.36 (glibc 2.36)
[debug] Checking exe version: ffmpeg -bsfs
[debug] Checking exe version: ffprobe -bsfs
[debug] exe versions: ffmpeg 5.1 (setts), ffprobe 5.1, phantomjs 2.1.1
[debug] Optional libraries: certifi-2022.06.15, sqlite3-2.6.0
[debug] Proxy map: {}
[debug] Loaded 1666 extractors
[debug] Loading archive file './downloaded.txt'
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp/releases/latest
Latest version: 2022.08.19, Current version: 2022.08.19.2
yt-dlp is up to date (2022.08.19.2)
[debug] [youtube:tab] Extracting URL: https://www.youtube.com/c/Pyrocynical
[youtube:tab] Pyrocynical: Downloading webpage
[youtube:tab] A channel/user page was given. All the channel's videos will be downloaded. To download only the videos in the home page, add a "/featured" to the URL
[debug] [youtube:tab] Final URL: https://www.youtube.com/c/Pyrocynical/videos
[download] Downloading playlist: Pyrocynical - Videos
[youtube:tab] UCN5xN8gIljvWYnsj06V8WbQ page 1: Downloading API JSON
[youtube:tab] UCN5xN8gIljvWYnsj06V8WbQ page 2: Downloading API JSON
[youtube:tab] UCN5xN8gIljvWYnsj06V8WbQ page 3: Downloading API JSON
[youtube:tab] UCN5xN8gIljvWYnsj06V8WbQ page 4: Downloading API JSON
[youtube:tab] UCN5xN8gIljvWYnsj06V8WbQ page 5: Downloading API JSON
[youtube:tab] UCN5xN8gIljvWYnsj06V8WbQ page 6: Downloading API JSON
[youtube:tab] UCN5xN8gIljvWYnsj06V8WbQ page 7: Downloading API JSON
[youtube:tab] UCN5xN8gIljvWYnsj06V8WbQ page 8: Downloading API JSON
[youtube:tab] UCN5xN8gIljvWYnsj06V8WbQ page 9: Downloading API JSON
[youtube:tab] UCN5xN8gIljvWYnsj06V8WbQ page 10: Downloading API JSON
[youtube:tab] UCN5xN8gIljvWYnsj06V8WbQ page 11: Downloading API JSON
[youtube:tab] UCN5xN8gIljvWYnsj06V8WbQ page 12: Downloading API JSON
[youtube:tab] UCN5xN8gIljvWYnsj06V8WbQ page 13: Downloading API JSON
[youtube:tab] UCN5xN8gIljvWYnsj06V8WbQ page 14: Downloading API JSON
[youtube:tab] UCN5xN8gIljvWYnsj06V8WbQ page 15: Downloading API JSON
[youtube:tab] UCN5xN8gIljvWYnsj06V8WbQ page 16: Downloading API JSON
[youtube:tab] UCN5xN8gIljvWYnsj06V8WbQ page 17: Downloading API JSON
[youtube:tab] UCN5xN8gIljvWYnsj06V8WbQ page 18: Downloading API JSON
[youtube:tab] UCN5xN8gIljvWYnsj06V8WbQ page 19: Downloading API JSON
[youtube:tab] UCN5xN8gIljvWYnsj06V8WbQ page 20: Downloading API JSON
[youtube:tab] UCN5xN8gIljvWYnsj06V8WbQ page 21: Downloading API JSON
[info] Writing playlist metadata as JSON to: Pyrocynical/Pyrocynical - Videos [UCN5xN8gIljvWYnsj06V8WbQ].info.json
Deleting existing file Pyrocynical/Pyrocynical - Videos [UCN5xN8gIljvWYnsj06V8WbQ].jpg
[info] Downloading playlist thumbnail avatar_uncropped ...
[info] Writing playlist thumbnail avatar_uncropped to: Pyrocynical/Pyrocynical - Videos [UCN5xN8gIljvWYnsj06V8WbQ].jpg
[youtube:tab] Playlist Pyrocynical - Videos: Downloading 655 videos of 655
[download] Downloading video 205 of 655
[debug] [youtube] Extracting URL: https://www.youtube.com/watch?v=Je23iHKKT3o
[youtube] Je23iHKKT3o: Downloading webpage
[youtube] Je23iHKKT3o: Downloading android player API JSON
[youtube] Je23iHKKT3o: Downloading player c57c113c
WARNING: [youtube] Je23iHKKT3o: nsig extraction failed: You may experience throttling for some formats
         Install PhantomJS to workaround the issue. Please download it from https://phantomjs.org/download.html
         n = lIdu2tb-7E24qy894I ; player = https://www.youtube.com/s/player/c57c113c/player_ias.vflset/en_US/base.js

Depending on your computer’s power, it may take awhile to execute. I have an old PC I use as a download server and it takes a bit (~5 minutes) with an Intel i5 650 & 3gb of RAM.

that’s a problem, because https://github.com/yt-dlp/yt-dlp/commit/992dc6b4863d0e60f2a1ce3933f67814d8a17f8d implements a timeout for PhantomJS (I am not sure how long the timeout is set for though, because I am not sure what unit the 5000 is)

Thanks. Is there anything I can do on client side to make it fail fast instead of just hanging? This bug is a show-stopper for me streaming videos with mpv, cause it doesn’t terminate, and as such the frontend (SMPlayer) doesn’t do anything just waits for mpv to do something.

use master or wait for the next release

You are not crazy, I feel like YouTube is cracking down on our projects (Newpipe, invidious, youtube-dl and more).

for sure, but it certainly is interesting that they are throttling youtube-dl and yt-dlp, instead of outright blocking them

PLease, update to that (master) and make sure you also perform --rm-cache-dir to regain unthrottled YT downloads…

I believe that was fixed by https://github.com/yt-dlp/yt-dlp/commit/5e01315aa1ad0c56be33cb5b6a4d079068ee7145, unless youtube’s newest player also requires clearing your cache (and killing three birds with one stone would be quite an impressive achievement, I must say)

Sadly I can’t do that, since Ubuntu 18.04’s apt doesn’t work with python versions above 3.6, and yt-dlp doesn’t work with 3.6 anymore. I’m not gonna go into specifics because I’ve already said it in the appropriate ticket and it’d be completely off topic here.

if you would like to self compile (personally I’d just use the link that @Vangelis66 sent), you just have to fork this repo and then run the build Github action, and then Github will compile the master branch on their servers and add it to your repo (in the releases section)

Is it possible to replace phantomjs with casperjs? (https://github.com/casperjs/casperjs)

https://github.com/yt-dlp/yt-dlp/issues/1354

Well, player c57c113c did arrive over here… 😡 I’m using yt-dlp daily build 2022.08.31.810, which was compiled from yt-dlp@https://github.com/yt-dlp/yt-dlp/commit/bfbecd1174a9e2ee08117352c26e664d36f1cc17 ; as already reported, the native JSInterp will barf on that new player 😭 … But I have PhantomJS already installed and, in fact, yt-dlp correctly picks it up, yet it doesn’t fallback to it for n-sig decryption (at the same time it advises to install PhantomJS - it’s already installed):

yt-dlp -v -F o8Y_uR6ZDxo --ie youtube => 

[debug] Command-line config: ['--ffmpeg-location', '..', '--downloader-args', 'ffmpeg:-v 8 -stats', '-v', '-F', 'o8Y_uR6ZDxo', '--ie', 'youtube']
[debug] Encodings: locale cp1253, fs utf-8, pref cp1253, out utf-8 (No VT), error utf-8 (No VT), screen utf-8 (No VT)
[debug] ytdl-patched/yt-dlp version 2022.08.31.810 [4247958] (win32_exe)
[debug] ** This build is unofficial daily builds, provided for ease of use.
[debug] ** Please do not ask for any support.
[debug] Python 3.7.9 (CPython 32bit) - Windows-Vista-6.0.6003-SP2
[debug] Checking exe version: "..\ffmpeg" -bsfs
[debug] Checking exe version: "..\ffprobe" -bsfs
[debug] exe versions: ffmpeg 4.4.1 (setts), ffprobe 4.4.1, phantomjs 2.1.1
[debug] Optional libraries: Cryptodome-3.15.0, brotli-1.0.9, certifi-2022.06.15, mutagen-1.45.1, sqlite3-2.6.0, websockets-10.3
[debug] Proxy map: {}
[debug] Loaded 1 extractors
[debug] [youtube] Extracting URL: o8Y_uR6ZDxo
[youtube] o8Y_uR6ZDxo: Downloading webpage
[youtube] o8Y_uR6ZDxo: Downloading android player API JSON
[debug] [youtube] Extracting signature function js_c57c113c_109
[youtube] o8Y_uR6ZDxo: Downloading player c57c113c
[debug] Saving youtube-sigfuncs.js_c57c113c_109 to cache
WARNING: [youtube] o8Y_uR6ZDxo: nsig extraction failed: You may experience throttling for some formats
         Install PhantomJS to workaround the issue. Please download it from https://phantomjs.org/download.html
         n = rQrpmKD2XjSSwEl6Lk ; player = https://www.youtube.com/s/player/c57c113c/player_ias.vflset/en_US/base.js
[debug] [youtube] No terminating paren } in: {var b=a.split(""),c=[function(){for(var d=64,e...lick=function(){this.G.Pa("onExpandMiniplayer")};}; 
please report this issue on https://github.com/ytdl-patched/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U
[debug] Sort order given by extractor: quality, res, fps, hdr:12, source, vcodec:vp9.2, channels, acodec, lang, proto
[debug] Formats sorted by: hasvid, ie_pref, quality, res, fps, hdr:12(7), source, vcodec:vp9.2(10), channels, acodec, lang, proto, filesize, fs_approx, tbr, vbr, abr, asr, vext, aext, hasaud, id
[info] Available formats for o8Y_uR6ZDxo:
ID  EXT   RESOLUTION FPS CH |   FILESIZE   TBR PROTO | VCODEC          VBR ACODEC      ABR ASR MORE INFO
-------------------------------------------------------------------------------------------------------------------------
sb2 mhtml 48x27        0    |                  mhtml | images               storyboard
sb1 mhtml 80x45        1    |                  mhtml | images               storyboard
sb0 mhtml 160x90       1    |                  mhtml | images               storyboard
599 m4a   audio only      2 |  944.46KiB   31k https | audio only          mp4a.40.5   31k 22k ultralow, m4a_dash
600 webm  audio only      2 |    1.05MiB   35k https | audio only          opus       35k 48k ultralow, webm_dash
139 m4a   audio only      2 |    1.46MiB   49k https | audio only          mp4a.40.5   49k 22k low, m4a_dash
249 webm  audio only      2 |    1.54MiB   52k https | audio only          opus       52k 48k low, webm_dash
250 webm  audio only      2 |    2.05MiB   68k https | audio only          opus       68k 48k low, webm_dash
140 m4a   audio only      2 |    3.88MiB  129k https | audio only          mp4a.40.2  129k 44k medium, m4a_dash
251 webm  audio only      2 |    4.03MiB  135k https | audio only          opus      135k 48k medium, webm_dash
17  3gp   176x144      8  1 |    2.37MiB   79k https | mp4v.20.3       79k mp4a.40.2    0k 22k 144p
597 mp4   256x144     15    |  991.70KiB   32k https | avc1.4d400b     32k video only          144p, mp4_dash
598 webm  256x144     15    |  853.64KiB   28k https | vp9             28k video only          144p, webm_dash
394 mp4   256x144     30    |    2.06MiB   69k https | av01.0.00M.08   69k video only          144p, mp4_dash
160 mp4   256x144     30    |    1.27MiB   42k https | avc1.4d400c     42k video only          144p, mp4_dash
278 webm  256x144     30    |    2.74MiB   91k https | vp9             91k video only          144p, webm_dash
395 mp4   426x240     30    |    2.72MiB   91k https | av01.0.00M.08   91k video only          240p, mp4_dash
133 mp4   426x240     30    |    1.82MiB   61k https | avc1.4d4015     61k video only          240p, mp4_dash
242 webm  426x240     30    |    2.96MiB   99k https | vp9             99k video only          240p, webm_dash
396 mp4   640x360     30    |    5.21MiB  174k https | av01.0.01M.08  174k video only          360p, mp4_dash
134 mp4   640x360     30    |    3.49MiB  116k https | avc1.4d401e    116k video only          360p, mp4_dash
18  mp4   640x360     30  2 |   13.15MiB  439k https | avc1.42001E    439k mp4a.40.2    0k 44k 360p
243 webm  640x360     30    |    4.85MiB  162k https | vp9            162k video only          360p, webm_dash
397 mp4   854x480     30    |    9.80MiB  327k https | av01.0.04M.08  327k video only          480p, mp4_dash
135 mp4   854x480     30    |    5.66MiB  189k https | avc1.4d401f    189k video only          480p, mp4_dash
244 webm  854x480     30    |    7.22MiB  241k https | vp9            241k video only          480p, webm_dash
136 mp4   1280x720    30    |   27.82MiB  930k https | avc1.4d401f    930k video only          720p, THROTTLED, mp4_dash
247 webm  1280x720    30    |   28.00MiB  936k https | vp9            936k video only          720p, THROTTLED, webm_dash
22  mp4   1280x720    30  2 | ~ 32.44MiB 1059k https | avc1.64001F   1059k mp4a.40.2    0k 44k 720p
398 mp4   1280x720    60    |   36.02MiB 1204k https | av01.0.08M.08 1204k video only          720p60, mp4_dash
298 mp4   1280x720    60    |   13.67MiB  457k https | avc1.4d4020    457k video only          720p60, mp4_dash
302 webm  1280x720    60    |   20.55MiB  687k https | vp9            687k video only          720p60, webm_dash
399 mp4   1920x1080   60    |   69.95MiB 2338k https | av01.0.09M.08 2338k video only          1080p60, mp4_dash
299 mp4   1920x1080   60    |   65.73MiB 2197k https | avc1.64002a   2197k video only          1080p60, mp4_dash
303 webm  1920x1080   60    |   81.06MiB 2709k https | vp9           2709k video only          1080p60, webm_dash

NB the contradiction:

...
[debug] exe versions: ffmpeg 4.4.1 (setts), ffprobe 4.4.1, phantomjs 2.1.1
...
         Install PhantomJS to workaround the issue. Please download it from https://phantomjs.org/download.html

What is actually going on here?

@pukkandan YouTube added its new player 113ca41c that throttled some or all of the video’s formats:

To complement this report:

I’ve gotten this new player too when downloading https://www.youtube.com/watch?v=rPxa8Q0bIOE on current release version. I have phantomjs installed for nsig extraction, but that method also fails with this new player, hanging somewhere during the execution, similarly to what happens in https://github.com/yt-dlp/yt-dlp/issues/4716. Clearing cache doesn’t help either.

Got a new player: 1f7d5369

[debug] Command-line config: ['--verbose', '--download-archive', './downloaded.txt', '--no-post-overwrites', '-o', '%(uploader)s/%(title)s [%(id)s].%(ext)s', '--embed-metadata', '--embed-thumbnail', '--embed-subs', '--sub-langs', 'all,-live_chat', '--write-thumbnail', '-o', 'thumbnail:%(uploader)s/%(title)s [%(id)s].%(ext)s', '--embed-info-json', 'https://www.youtube.com/user/commentiquette']
[debug] Encodings: locale UTF-8, fs utf-8, pref UTF-8, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version 2022.08.14 [55937202b] (zip)
[debug] Lazy loading extractors is disabled
[debug] Python 3.10.6 (CPython 64bit) - Linux-5.19.1-arch2-1-x86_64-with-glibc2.36 (glibc 2.36)
[debug] Checking exe version: ffmpeg -bsfs
[debug] Checking exe version: ffprobe -bsfs
[debug] exe versions: ffmpeg 5.0.1 (setts), ffprobe 5.0.1, rtmpdump 2.4
[debug] Optional libraries: Cryptodome-3.14.1, certifi-2022.06.15, mutagen-1.45.1, secretstorage-3.3.2, sqlite3-2.6.0
[debug] Proxy map: {}
[debug] Loading archive file './downloaded.txt'
[debug] [youtube:tab] Extracting URL: https://www.youtube.com/user/commentiquette
[youtube:tab] commentiquette: Downloading webpage
[youtube:tab] A channel/user page was given. All the channel's videos will be downloaded. To download only the videos in the home page, add a "/featured" to the URL
[debug] [youtube:tab] Final URL: https://www.youtube.com/user/commentiquette/videos
[download] Downloading playlist: Internet Comment Etiquette with Erik - Videos
[youtube:tab] UCyWDmyZRjrGHeKF-ofFsT5Q page 1: Downloading API JSON
[youtube:tab] UCyWDmyZRjrGHeKF-ofFsT5Q page 2: Downloading API JSON
[youtube:tab] UCyWDmyZRjrGHeKF-ofFsT5Q page 3: Downloading API JSON
[youtube:tab] UCyWDmyZRjrGHeKF-ofFsT5Q page 4: Downloading API JSON
[youtube:tab] UCyWDmyZRjrGHeKF-ofFsT5Q page 5: Downloading API JSON
[youtube:tab] UCyWDmyZRjrGHeKF-ofFsT5Q page 6: Downloading API JSON
[youtube:tab] UCyWDmyZRjrGHeKF-ofFsT5Q page 7: Downloading API JSON
Deleting existing file Internet Comment Etiquette with Erik/Internet Comment Etiquette with Erik - Videos [UCyWDmyZRjrGHeKF-ofFsT5Q].jpg
[info] Downloading playlist thumbnail avatar_uncropped ...
[info] Writing playlist thumbnail avatar_uncropped to: Internet Comment Etiquette with Erik/Internet Comment Etiquette with Erik - Videos [UCyWDmyZRjrGHeKF-ofFsT5Q].jpg
[youtube:tab] Playlist Internet Comment Etiquette with Erik - Videos: Downloading 214 videos of 214
[download] You're Filled with Microplastics has already been recorded in the archive
[download] Woke Buzz Lightyear has already been recorded in the archive
[download] How to Kink Shame has already been recorded in the archive
[download] Internet Comment Etiquette: "Learning to Fight" Part Three has already been recorded in the archive
[download] "Fightin' Soy Boy Theme" by Hot Dad has already been recorded in the archive
[download] Internet Comment Etiquette: "Learning to Fight" Part Two has already been recorded in the archive
[download] Internet Comment Etiquette: "4/21 Special" has already been recorded in the archive
[download] Announcing Internet Comment Etiquette NFTS has already been recorded in the archive
[download] Internet Comment Etiquette: "Learning to Fight" (Part One) has already been recorded in the archive
[download] Nobbleberry: Miami (Announcement) has already been recorded in the archive
[download] Internet Comment Etiquette: "Sovern Citizens" has already been recorded in the archive
[download] Responding to Sargon of Akkad has already been recorded in the archive
[download] Internet Comment Etiquette: "Woke Lord of the Rings" has already been recorded in the archive
[download] Downloading video 14 of 214
[debug] [youtube] Extracting URL: https://www.youtube.com/watch?v=fEaMDCbFi5I
[youtube] fEaMDCbFi5I: Downloading webpage
[youtube] fEaMDCbFi5I: Downloading android player API JSON
[youtube] fEaMDCbFi5I: Downloading tv embedded player API JSON
[youtube] fEaMDCbFi5I: Downloading web embedded client config
[youtube] fEaMDCbFi5I: Downloading player 1f7d5369
[youtube] fEaMDCbFi5I: Downloading web embedded player API JSON
[debug] Loading youtube-nsig.1f7d5369 from cache
WARNING: [youtube] nsig extraction failed: You may experience throttling for some formats
n = batNX7sYqIJdkJ ; player = https://www.youtube.com/s/player/1f7d5369/player_ias.vflset/en_US/base.js
[debug] [youtube] fEaMDCbFi5I: Traceback (most recent call last):
  File "/run/media/a/Elements/autoarchive/./yt-dlp/yt_dlp/extractor/youtube.py", line 2624, in _decrypt_nsig
    self._player_cache[sig_id] = func(s)
  File "/run/media/a/Elements/autoarchive/./yt-dlp/yt_dlp/extractor/youtube.py", line 2657, in <lambda>
    return lambda s: func([s])
  File "/run/media/a/Elements/autoarchive/./yt-dlp/yt_dlp/jsinterp.py", line 639, in resf
    ret, should_abort = self.interpret_statement(code.replace('\n', ''), var_stack, allow_recursion - 1)
  File "/run/media/a/Elements/autoarchive/./yt-dlp/yt_dlp/jsinterp.py", line 106, in interpret_statement
    ret, should_ret = f(self, stmt, local_vars, allow_recursion, *args, **kwargs)
  File "/run/media/a/Elements/autoarchive/./yt-dlp/yt_dlp/jsinterp.py", line 344, in interpret_statement
    ret, should_abort = self.interpret_statement(sub_expr, local_vars, allow_recursion)
  File "/run/media/a/Elements/autoarchive/./yt-dlp/yt_dlp/jsinterp.py", line 106, in interpret_statement
    ret, should_ret = f(self, stmt, local_vars, allow_recursion, *args, **kwargs)
  File "/run/media/a/Elements/autoarchive/./yt-dlp/yt_dlp/jsinterp.py", line 382, in interpret_statement
    local_vars[m.group('out')] = self._operator(
  File "/run/media/a/Elements/autoarchive/./yt-dlp/yt_dlp/jsinterp.py", line 175, in _operator
    right_val = self.interpret_expression(right_expr, local_vars, allow_recursion)
  File "/run/media/a/Elements/autoarchive/./yt-dlp/yt_dlp/jsinterp.py", line 564, in interpret_expression
    ret, should_return = self.interpret_statement(expr, local_vars, allow_recursion)
  File "/run/media/a/Elements/autoarchive/./yt-dlp/yt_dlp/jsinterp.py", line 106, in interpret_statement
    ret, should_ret = f(self, stmt, local_vars, allow_recursion, *args, **kwargs)
  File "/run/media/a/Elements/autoarchive/./yt-dlp/yt_dlp/jsinterp.py", line 260, in interpret_statement
    inner, outer = self._separate_at_paren(expr, ']')
  File "/run/media/a/Elements/autoarchive/./yt-dlp/yt_dlp/jsinterp.py", line 165, in _separate_at_paren
    raise cls.Exception(f'No terminating paren {delim}', expr)
yt_dlp.jsinterp.JSInterpreter.Exception: No terminating paren ] in: [1637657201,-990522961,-903445535,-193926786,-4...0,c[64])(c[87],c[20]),9)||(0,c[64])(c[35],c[73]))}; please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U
 (caused by Exception('No terminating paren ] in: [1637657201,-990522961,-903445535,-193926786,-4...0,c[64])(c[87],c[20]),9)||(0,c[64])(c[35],c[73]))}; please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U')); please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U
WARNING: [youtube] nsig extraction failed: You may experience throttling for some formats
n = M1yvG36d8MzXp9 ; player = https://www.youtube.com/s/player/1f7d5369/player_ias.vflset/en_US/base.js

I downloaded master version (11-11-2022). No more “sig error” but slow / throttled download remained. Yes these videos are quite old i think. Try to download these videos it takes almost forever to download 100mb in a fast internet line (50mbs)!

Linux with bullseye 11.


yt-dlp -vU  https://www.youtube.com/@axiotheatronneamakri9716/videos
[debug] Command-line config: ['-vU', 'https://www.youtube.com/@axiotheatronneamakri9716/videos']
[debug] Encodings: locale UTF-8, fs utf-8, pref UTF-8, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version 2022.11.11 [8b644025b] (zip)
[debug] Python 3.9.4 (CPython x86_64 64bit) - Linux-5.11.0-18-generic-x86_64-with-glibc2.33 (OpenSSL 1.1.1n  15 Mar 2022, glibc 2.33)
[debug] exe versions: ffmpeg 4.3.5-0, ffprobe 4.3.5-0
[debug] Optional libraries: Cryptodome-3.16.0, brotli-1.0.9, certifi-2022.12.07, mutagen-1.46.0, secretstorage-3.3.1, sqlite3-2.6.0, websockets-10.4
[debug] Proxy map: {}
[debug] Loaded 1740 extractors
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp/releases/latest
Latest version: 2022.11.11, Current version: 2022.11.11
yt-dlp is up to date (2022.11.11)
[youtube:tab] Extracting URL: https://www.youtube.com/@axiotheatronneamakri9716/videos
[youtube:tab] @axiotheatronneamakri9716/videos: Downloading webpage
[debug] [youtube:tab] Selected tab: 'videos' (videos), Requested tab: 'videos'
[download] Downloading playlist: Axiotheatron Nea Makri - Videos
[youtube:tab] UCIc2p0iDTN7N8UjMiGdRGDg page 1: Downloading API JSON
[youtube:tab] UCIc2p0iDTN7N8UjMiGdRGDg page 2: Downloading API JSON
[youtube:tab] UCIc2p0iDTN7N8UjMiGdRGDg page 3: Downloading API JSON
[youtube:tab] Playlist Axiotheatron Nea Makri - Videos: Downloading 92 items of 92
[download] Downloading item 1 of 92
[youtube] Extracting URL: https://www.youtube.com/watch?v=z9yRpdDIJ00
[youtube] z9yRpdDIJ00: Downloading webpage
[youtube] z9yRpdDIJ00: Downloading android player API JSON
[youtube] z9yRpdDIJ00: Downloading MPD manifest
[youtube] z9yRpdDIJ00: Downloading MPD manifest
[debug] Sort order given by extractor: quality, res, fps, hdr:12, source, vcodec:vp9.2, channels, acodec, lang, proto
[debug] Formats sorted by: hasvid, ie_pref, quality, res, fps, hdr:12(7), source, vcodec:vp9.2(10), channels, acodec, lang, proto, filesize, fs_approx, tbr, vbr, abr, asr, vext, aext, hasaud, id
[debug] Default format spec: bestvideo*+bestaudio/best
[info] z9yRpdDIJ00: Downloading 1 format(s): 247+251
[debug] Invoking dashsegments downloader on "https://manifest.googlevideo.com/api/manifest/dash/expire/1672201053/ei/_W6rY9uqLcGD1gKevorIBA/ip/2a02%3A85f%3Af053%3A4700%3Ad24c%3Ab420%3A9031%3Ab81a/id/cfdc91a5d0c8274d/source/youtube/requiressl/yes/playback_host/rr1---sn-ixaa5n-5ui6.googlevideo.com/mh/9w/mm/31%2C29/mn/sn-ixaa5n-5ui6%2Csn-nv47zne7/ms/au%2Crdu/mv/m/mvi/1/pcm2cms/yes/pl/43/hfr/all/as/fmp4_audio_clear%2Cwebm_audio_clear%2Cwebm2_audio_clear%2Cfmp4_sd_hd_clear%2Cwebm2_sd_hd_clear/initcwndbps/697500/vprv/1/mt/1672178966/fvip/2/keepalive/yes/fexp/24001373%2C24007246/itag/0/sparams/expire%2Cei%2Cip%2Cid%2Csource%2Crequiressl%2Chfr%2Cas%2Cvprv%2Citag/sig/AOq0QJ8wRQIhAPSBR1SYsAJeaB5OEuPrYk-gDLUr4BWWpsFDowZ9OZlBAiBVhQ8HqDjWZfACalL5TF5y7IbTBP3JLrwu71YX1DDUAw%3D%3D/lsparams/playback_host%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpcm2cms%2Cpl%2Cinitcwndbps/lsig/AG3C_xAwRQIhAO_NJkpcw7TCzFu4UVj50rqw5fSS_TDdQPJ-mboAmbB3AiAmIoX_I-eltYY6UIjU7Gn0CA4Xjogr9V4uQWF2cf0GeA%3D%3D"
[dashsegments] Total fragments: 57
[download] Destination: Λυσιστράτη του Αριστοφάνη 10⧸7⧸2022 1ο φεστιβάλ ερασιτεχνικού θεάτρου Δήμου Βριλησσίων  (μέρος 2ον) [z9yRpdDIJ00].f247.webm
[download]   3.5% of ~  17.98MiB at    2.03MiB/s ETA 00:10 (frag 2/57)

… Yes, in the first hours (UTC) of Oct 11th, Google shipped YT-player 7a062b77 that broke the native yt-signature decryptor; posting a more detailed log:

yt-dlp -vF "p7FCgw_GlWc" --ie youtube => 

[debug] Command-line config: ['--ffmpeg-location', '..', '--downloader-args', 'ffmpeg:-v 8 -stats', '-v', '-F', 'p7FCgw_GlWc', '--ie', 'youtube']
[debug] Encodings: locale cp1253, fs utf-8, pref cp1253, out utf-8 (No VT), error utf-8 (No VT), screen utf-8 (No VT)
[debug] ytdl-patched/yt-dlp version 2022.10.10 [cf18f2c] (win32_exe)
[debug] Python 3.7.9 (CPython 32bit) - Windows-Vista-6.0.6003-SP2
[debug] Checking exe version: "..\ffmpeg" -bsfs
[debug] Checking exe version: "..\ffprobe" -bsfs
[debug] exe versions: ffmpeg 5.0 (fdk,setts), ffprobe 5.0, phantomjs 2.1.1, rtmpdump 2.4
[debug] Optional libraries: Cryptodome-3.15.0, brotli-1.0.9, certifi-2022.09.24, mutagen-1.46.0, sqlite3-2.6.0, websockets-10.3
[debug] Proxy map: {}
[debug] Loaded 1 extractors
[debug] [youtube] Extracting URL: p7FCgw_GlWc
[youtube] p7FCgw_GlWc: Downloading webpage
[youtube] p7FCgw_GlWc: Downloading android player API JSON
[youtube] p7FCgw_GlWc: Downloading tv embedded player API JSON
[youtube] p7FCgw_GlWc: Downloading web embedded client config
[youtube] p7FCgw_GlWc: Downloading player 7a062b77
[youtube] p7FCgw_GlWc: Downloading web embedded player API JSON
[debug] [youtube] Extracting signature function js_7a062b77_103
[debug] Saving youtube-sigfuncs.js_7a062b77_103 to cache
[debug] Saving youtube-nsig.7a062b77 to cache
WARNING: [youtube] p7FCgw_GlWc: Native nsig extraction failed: Trying with PhantomJS
         n = G7WZS5oCn4kwKSo- ; player = https://www.youtube.com/s/player/7a062b77/player_ias.vflset/en_US/base.js
[debug] [youtube] No terminating paren ] in: [/[),\\],,/,-179969746,230642284,105421641,3077..."enhanced_except_y5YBtOn-_w8_"+a}return b.join(""); please report this issue on  https://github.com/ytdl-patched/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U
[youtube] p7FCgw_GlWc: Executing signature code
[debug] [youtube] PhantomJS command line: phantomjs "--ssl-protocol=any" "C:\Users\<redacted>\AppData\Local\Temp\tmpr4hdwiz3"
[debug] [youtube] Decrypted nsig G7WZS5oCn4kwKSo- => JtBvCXnpdKlhHg
[debug] [youtube] Extracting signature function js_7a062b77_107
[debug] Saving youtube-sigfuncs.js_7a062b77_107 to cache
[debug] Loading youtube-nsig.7a062b77 from cache
WARNING: [youtube] p7FCgw_GlWc: Native nsig extraction failed: Trying with PhantomJS
         n = knGug-5CUN63nODN ; player = https://www.youtube.com/s/player/7a062b77/player_ias.vflset/en_US/base.js
[debug] [youtube] No terminating paren ] in: [/[),\\],,/,-179969746,230642284,105421641,3077..."enhanced_except_y5YBtOn-_w8_"+a}return b.join(""); please report this issue on  https://github.com/ytdl-patched/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U
[youtube] p7FCgw_GlWc: Executing signature code
[debug] [youtube] PhantomJS command line: phantomjs "--ssl-protocol=any" "C:\Users\<redacted>\AppData\Local\Temp\tmp_zigpash"
[debug] [youtube] Decrypted nsig knGug-5CUN63nODN => 0JB9RoNFZhKdDw
[debug] Sort order given by extractor: quality, res, fps, hdr:12, source, vcodec:vp9.2, channels, acodec, lang, proto
[debug] Formats sorted by: hasvid, ie_pref, quality, res, fps, hdr:12(7), source, vcodec:vp9.2(10), channels, acodec, lang, proto, filesize, fs_approx, tbr, vbr, abr, asr, vext, aext, hasaud, id
[info] Available formats for p7FCgw_GlWc:
(redacted for brevity)

Fortunately, the fallback to PhantomJS did work this time 👍 ; as it stands, youtube-dl is currently also broken, with no similar fallback 😢 …

YT’s player has been giving me a lot of problems (lagging, freezing) lately so hopefully they are testing fixes to those problems. Ironically enough just yesterday I had a video I could not play in Firefox and I downloaded it with yt-dlp instead, worked just fine, no throttling issue. So if YT is trying to break downloaders it’s having the opposite effect they intended.

Haha. Perhaps some sadist is making these as their 20% time project 🤣

… That sadist is reading this issue thread 😜 … Google have already moved to ytplayer 6a14c793:

yt-dlp -v -F p7FCgw_GlWc --ie youtube

[debug] Command-line config: ['--ffmpeg-location', '..', '--downloader-args', 'ffmpeg:-v 8 -stats', '-v', '-F', 'p7FCgw_GlWc', '--ie', 'youtube']
[debug] Encodings: locale cp1253, fs utf-8, pref cp1253, out utf-8 (No VT), error utf-8 (No VT), screen utf-8 (No VT)
[debug] ytdl-patched/yt-dlp version 2022.09.08.1919 [8e56814] (win32_exe)
[debug] ** This build is unofficial daily builds, provided for ease of use.
[debug] ** Please do not ask for any support.
[debug] Python 3.7.9 (CPython 32bit) - Windows-Vista-6.0.6003-SP2
[debug] Checking exe version: "..\ffmpeg" -bsfs
[debug] Checking exe version: "..\ffprobe" -bsfs
[debug] exe versions: ffmpeg 4.4.1 (setts), ffprobe 4.4.1, phantomjs 2.1.1
[debug] Optional libraries: Cryptodome-3.15.0, brotli-1.0.9, certifi-2022.06.15, mutagen-1.45.1, sqlite3-2.6.0, websockets-10.3
[debug] Proxy map: {}
[debug] Loaded 1 extractors
[debug] [youtube] Extracting URL: p7FCgw_GlWc
[youtube] p7FCgw_GlWc: Downloading webpage
[youtube] p7FCgw_GlWc: Downloading android player API JSON
[youtube] p7FCgw_GlWc: Downloading tv embedded player API JSON
[youtube] p7FCgw_GlWc: Downloading web embedded client config
[youtube] p7FCgw_GlWc: Downloading player 6a14c793
[youtube] p7FCgw_GlWc: Downloading web embedded player API JSON
[debug] [youtube] Extracting signature function js_6a14c793_107
[debug] Saving youtube-sigfuncs.js_6a14c793_107 to cache
[debug] Saving youtube-nsig.6a14c793 to cache
[debug] [youtube] Decrypted nsig ZsC-Daf9pG_VYUJ2fP8Ff => Zy1n5sf4fPXjQw
[debug] Loading youtube-nsig.6a14c793 from cache
[debug] [youtube] Decrypted nsig qRQem-WQFJS21h2YOYoBt => L04LaJMRNMQhZg
[debug] [youtube] Extracting signature function js_6a14c793_103
[debug] Saving youtube-sigfuncs.js_6a14c793_103 to cache
[debug] Sort order given by extractor: quality, res, fps, hdr:12, source, vcodec:vp9.2, channels, acodec, lang, proto
[debug] Formats sorted by: hasvid, ie_pref, quality, res, fps, hdr:12(7), source, vcodec:vp9.2(10), channels, acodec, lang, proto, filesize, fs_approx, tbr, vbr, abr, asr, vext, aext, hasaud, id
[info] Available formats for p7FCgw_GlWc:
(redacted for brevity)

… Thus, in the course of ca. 24h we’ve had 3 different ytplayers:

a7eb1f5d => f96f6702 => 6a14c793

What next? Hourly updates?

but #4635 (comment) seems to be a false alarm

Actually, I can reproduce it on the latest version of yt-dlp. Ignore the PhantomJS timeout, it’s because my computer is slow as…

yt-dlp EV2vJ11eiHA --simulate --verbose
[debug] Command-line config: ['EV2vJ11eiHA', '--simulate', '--verbose']
[debug] User config "C:\Users\jaybu\AppData\Roaming\yt-dlp\config.txt": ['--ffmpeg-location', 'C:\\Users\\jaybu\\ffmpeg\\bin', '-P', 'C:\\Users\\jaybu\\youtube.dl', '--update', '--audio-quality', '0', '--write-subs', '--write-auto-subs', '--embed-subs', '--compat-options', 'no-keep-subs,no-live-chat']
[debug] Encodings: locale cp1252, fs utf-8, pref cp1252, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version 2022.09.01 [5d7c7d6] (win32_exe)
[debug] Compatibility options: no-live-chat, no-keep-subs
[debug] Python 3.8.10 (CPython 64bit) - Windows-10-10.0.19043-SP0
[debug] Checking exe version: "C:\Users\jaybu\ffmpeg\bin\ffmpeg" -bsfs
[debug] Checking exe version: "C:\Users\jaybu\ffmpeg\bin\ffprobe" -bsfs
[debug] exe versions: ffmpeg N-106498-g854615adf2-20220405 (setts), ffprobe N-106498-g854615adf2-20220405, phantomjs 2.1.1
[debug] Optional libraries: Cryptodome-3.15.0, brotli-1.0.9, certifi-2022.06.15, mutagen-1.45.1, sqlite3-2.6.0, websockets-10.3
[debug] Proxy map: {}
[debug] Loaded 1670 extractors
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp/releases/latest
Latest version: 2022.09.01, Current version: 2022.09.01
yt-dlp is up to date (2022.09.01)
[debug] [youtube] Extracting URL: EV2vJ11eiHA
[youtube] EV2vJ11eiHA: Downloading webpage
[youtube] EV2vJ11eiHA: Downloading android player API JSON
[youtube] EV2vJ11eiHA: Downloading player f96f6702
[debug] Saving youtube-nsig.f96f6702 to cache
WARNING: [youtube] EV2vJ11eiHA: Native nsig extraction failed: Trying with PhantomJS
         n = vAH-dLdRga7kz7VIvSVur ; player = https://www.youtube.com/s/player/f96f6702/player_ias.vflset/en_US/base.js
[debug] [youtube] Signature function returned an exception; please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U
[youtube] EV2vJ11eiHA: Executing signature code
[debug] [youtube] PhantomJS command line: phantomjs "--ssl-protocol=any" "C:\Users\jaybu\AppData\Local\Temp\tmpwo_ubeia"
WARNING: [youtube] EV2vJ11eiHA: nsig extraction failed: You may experience throttling for some formats
         n = vAH-dLdRga7kz7VIvSVur ; player = https://www.youtube.com/s/player/f96f6702/player_ias.vflset/en_US/base.js
[debug] [youtube] Executing signature code failed: Unable to run PhantomJS binary (caused by TimeoutExpired(['phantomjs', '--ssl-protocol=any', 'C:\\Users\\jaybu\\AppData\\Local\\Temp\\tmpwo_ubeia'], 0.01599999999962165)); please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U
[debug] Sort order given by extractor: quality, res, fps, hdr:12, source, vcodec:vp9.2, channels, acodec, lang, proto
[debug] Formats sorted by: hasvid, ie_pref, quality, res, fps, hdr:12(7), source, vcodec:vp9.2(10), channels, acodec, lang, proto, filesize, fs_approx, tbr, vbr, abr, asr, vext, aext, hasaud, id
[info] EV2vJ11eiHA: Downloading subtitles: en
[debug] Default format spec: bestvideo*+bestaudio/best
[info] EV2vJ11eiHA: Downloading 1 format(s): 303+251

However, I can’t reproduce it on master

[debug] Command-line config: ['EV2vJ11eiHA', '--simulate', '--verbose']
[debug] User config "C:\Users\jaybu\AppData\Roaming\yt-dlp\config.txt": ['--ffmpeg-location', 'C:\\Users\\jaybu\\ffmpeg\\bin', '-P', 'C:\\Users\\jaybu\\youtube.dl', '--update', '--audio-quality', '0', '--write-subs', '--write-auto-subs', '--embed-subs', '--compat-options', 'no-keep-subs,no-live-chat']
[debug] Encodings: locale cp1252, fs utf-8, pref cp1252, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version 2022.09.01 [5d7c7d656] (source)
[debug] Lazy loading extractors is disabled
[debug] Plugins: ['SamplePluginIE', 'SamplePluginPP']
[debug] Compatibility options: no-live-chat, no-keep-subs
[debug] Git HEAD: ae1035646
[debug] Python 3.10.6 (CPython 64bit) - Windows-10-10.0.19043-SP0
[debug] Checking exe version: "C:\Users\jaybu\ffmpeg\bin\ffmpeg" -bsfs
[debug] Checking exe version: "C:\Users\jaybu\ffmpeg\bin\ffprobe" -bsfs
[debug] exe versions: ffmpeg N-106498-g854615adf2-20220405 (setts), ffprobe N-106498-g854615adf2-20220405, phantomjs 2.1.1
[debug] Optional libraries: certifi-2022.06.15, sqlite3-2.6.0
[debug] Proxy map: {}
[debug] Loaded 1671 extractors
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp/releases/latest
Latest version: 2022.09.01, Current version: 2022.09.01
yt-dlp is up to date (2022.09.01)
[debug] [youtube] Extracting URL: EV2vJ11eiHA
[youtube] EV2vJ11eiHA: Downloading webpage
[youtube] EV2vJ11eiHA: Downloading android player API JSON
[youtube] EV2vJ11eiHA: Downloading player f96f6702
[debug] Saving youtube-nsig.f96f6702 to cache
[debug] [youtube] Decrypted nsig u3jgdGIX6mtL5g5jY4mb0 => CqVTvNPgzU6eVQ
[debug] Sort order given by extractor: quality, res, fps, hdr:12, source, vcodec:vp9.2, channels, acodec, lang, proto
[debug] Formats sorted by: hasvid, ie_pref, quality, res, fps, hdr:12(7), source, vcodec:vp9.2(10), channels, acodec, lang, proto, filesize, fs_approx, tbr, vbr, abr, asr, vext, aext, hasaud, id
[info] EV2vJ11eiHA: Downloading subtitles: en
[debug] Default format spec: bestvideo*+bestaudio/best
[info] EV2vJ11eiHA: Downloading 1 format(s): 303+251

And when I ran a git bisect, with https://github.com/yt-dlp/yt-dlp/commit/b76e9cedb33d23f21060281596f7443750f67758 and https://github.com/yt-dlp/yt-dlp/commit/ae1035646a6be09c2aed3e22eb8910f341ddacfe as the starting commits, I got https://github.com/yt-dlp/yt-dlp/commit/1a7c9fad9f89b8994911c7d83f012da5f1aef445 as the first working commit. Obviously I’m human, and I could have made a mistake while doing the bisect (such as if I forgot to clear my cache one time), but I’d say that all evidence points to that commit having fixed this player

There is some future-proofing in yt-dl’s version that may not be in yt-dlp

Please explain (I do not condone the person in the GIF’s views)

Anyhow, ytdl-org/youtube-dl#31173 (comment) applies

Haha. Perhaps some sadist is making these as their 20% time project🤣

There is some future-proofing in yt-dl’s version that may not be in yt-dlp, but https://github.com/yt-dlp/yt-dlp/issues/4635#issuecomment-1240203772 seems to be a false alarm.

The WARNING may be justified because running PhantomJS can be a lot slower than JSInterp.

Anyhow, https://github.com/ytdl-org/youtube-dl/issues/31173#issuecomment-1218088872 applies.

@jshir and if the version you are running is 2022.09.01, can you please re-attempt to download one of the videos that causes the warning, with --verbose at the end of your command (eg: yt-dlp URL --verbose), and send a log of the output?

So does yt-dlp’s master (see @nicolaasjan’s log). So either @jshir is using an outdated version of yt-dlp, or https://github.com/yt-dlp/yt-dlp/commit/1a7c9fad9f89b8994911c7d83f012da5f1aef445 and https://github.com/ytdl-org/youtube-dl/commit/7009bb9f3182449ae8cc05cc28b768b63030a485 fixed it (in which case Google really hasn’t been paying attention🤣)

@jshir can you please run yt-dlp --version and send the output

For whatever reason, yt-dl 7009bb9f3182449ae8cc05cc28b768b63030a485 (latest master) seems to handle f96f6702 fine.

I see it often with f96f6702 for example with video EV2vJ11eiHA

You are the first person to report that player. As such, can you please post a verbose log of it, so that the native js interpreter can be fixed?

I’m not the one you asked this question, but here is one (PhantomJS is not used):

yt-dlp -v --ignore-config -F https://www.youtube.com/watch?v=kl7EyqjkE0g
[debug] Command-line config: ['-v', '--ignore-config', '-F', 'https://www.youtube.com/watch?v=kl7EyqjkE0g']
[debug] Encodings: locale UTF-8, fs utf-8, pref UTF-8, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version 2022.09.08 [1015ceeea] (zip)
[debug] Python 3.8.10 (CPython 64bit) - Linux-5.4.0-125-generic-x86_64-with-glibc2.29 (glibc 2.31)
[debug] Checking exe version: ffmpeg -bsfs
[debug] Checking exe version: ffprobe -bsfs
[debug] exe versions: ffmpeg N-107787-gc469c3c3b1-Nico-20220816 (fdk,setts), ffprobe N-107787-gc469c3c3b1-Nico-20220816, phantomjs 2.1.1, rtmpdump 2.4
[debug] Optional libraries: Cryptodome-3.12.0, brotli-1.0.9, certifi-2019.11.28, mutagen-1.45.1, secretstorage-2.3.1, sqlite3-2.6.0, websockets-10.1, xattr-0.9.6
[debug] Proxy map: {}
[debug] Loaded 1670 extractors
[debug] [youtube] Extracting URL: https://www.youtube.com/watch?v=kl7EyqjkE0g
[youtube] kl7EyqjkE0g: Downloading webpage
[youtube] kl7EyqjkE0g: Downloading android player API JSON
[youtube] kl7EyqjkE0g: Downloading player f96f6702
[debug] Saving youtube-nsig.f96f6702 to cache
[debug] [youtube] Decrypted nsig lxGWeXgrBuLFRJ4QmUkuX => yPdkplOU2nia0g
[debug] Sort order given by extractor: quality, res, fps, hdr:12, source, vcodec:vp9.2, channels, acodec, lang, proto
[debug] Formats sorted by: hasvid, ie_pref, quality, res, fps, hdr:12(7), source, vcodec:vp9.2(10), channels, acodec, lang, proto, filesize, fs_approx, tbr, vbr, abr, asr, vext, aext, hasaud, id
[info] Available formats for kl7EyqjkE0g:
ID  EXT   RESOLUTION FPS CH │   FILESIZE    TBR PROTO │ VCODEC           VBR ACODEC      ABR ASR MORE INFO
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
sb2 mhtml 48x27        0    │                   mhtml │ images                                   storyboard
sb1 mhtml 80x45        0    │                   mhtml │ images                                   storyboard
sb0 mhtml 160x90       0    │                   mhtml │ images                                   storyboard
599 m4a   audio only      2 │    2.24MiB    31k https │ audio only           mp4a.40.5   31k 22k ultralow, m4a_dash
600 webm  audio only      2 │    2.52MiB    35k https │ audio only           opus        35k 48k ultralow, webm_dash
139 m4a   audio only      2 │    3.55MiB    49k https │ audio only           mp4a.40.5   49k 22k low, m4a_dash
249 webm  audio only      2 │    3.71MiB    51k https │ audio only           opus        51k 48k low, webm_dash
250 webm  audio only      2 │    5.20MiB    72k https │ audio only           opus        72k 48k low, webm_dash
140 m4a   audio only      2 │    9.41MiB   129k https │ audio only           mp4a.40.2  129k 44k medium, m4a_dash
251 webm  audio only      2 │   10.19MiB   140k https │ audio only           opus       140k 48k medium, webm_dash
17  3gp   176x144      7  1 │    5.39MiB    74k https │ mp4v.20.3        74k mp4a.40.2    0k 22k 144p
597 mp4   256x144     15    │    2.33MiB    32k https │ avc1.4d400b      32k video only          144p, mp4_dash
598 webm  256x144     15    │    1.78MiB    24k https │ vp9              24k video only          144p, webm_dash
394 mp4   256x144     30    │    4.32MiB    59k https │ av01.0.00M.08    59k video only          144p, mp4_dash
160 mp4   256x144     30    │    3.46MiB    48k https │ avc1.4d400c      48k video only          144p, mp4_dash
278 webm  256x144     30    │    5.01MiB    69k https │ vp9              69k video only          144p, webm_dash
395 mp4   426x240     30    │    6.64MiB    91k https │ av01.0.00M.08    91k video only          240p, mp4_dash
133 mp4   426x240     30    │    7.53MiB   104k https │ avc1.4d4015     104k video only          240p, mp4_dash
242 webm  426x240     30    │    7.72MiB   106k https │ vp9             106k video only          240p, webm_dash
396 mp4   640x360     30    │   13.19MiB   181k https │ av01.0.01M.08   181k video only          360p, mp4_dash
134 mp4   640x360     30    │   15.78MiB   217k https │ avc1.4d401e     217k video only          360p, mp4_dash
18  mp4   640x360     30  2 │   39.61MiB   545k https │ avc1.42001E     545k mp4a.40.2    0k 44k 360p
243 webm  640x360     30    │   17.74MiB   244k https │ vp9             244k video only          360p, webm_dash
397 mp4   854x480     30    │   23.01MiB   317k https │ av01.0.04M.08   317k video only          480p, mp4_dash
135 mp4   854x480     30    │   25.63MiB   353k https │ avc1.4d401f     353k video only          480p, mp4_dash
244 webm  854x480     30    │   26.73MiB   368k https │ vp9             368k video only          480p, webm_dash
22  mp4   1280x720    30  2 │ ~ 85.18MiB  1144k https │ avc1.64001F    1144k mp4a.40.2    0k 44k 720p
136 mp4   1280x720    30    │   73.80MiB  1015k https │ avc1.4d401f    1015k video only          720p, mp4_dash
247 webm  1280x720    30    │   50.49MiB   695k https │ vp9             695k video only          720p, webm_dash
398 mp4   1280x720    60    │   68.21MiB   938k https │ av01.0.08M.08   938k video only          720p60, mp4_dash
298 mp4   1280x720    60    │  133.54MiB  1837k https │ avc1.4d4020    1837k video only          720p60, mp4_dash
302 webm  1280x720    60    │   81.39MiB  1120k https │ vp9            1120k video only          720p60, webm_dash
399 mp4   1920x1080   60    │  123.25MiB  1695k https │ av01.0.09M.08  1695k video only          1080p60, mp4_dash
299 mp4   1920x1080   60    │  216.66MiB  2980k https │ avc1.64002a    2980k video only          1080p60, mp4_dash
303 webm  1920x1080   60    │  155.03MiB  2133k https │ vp9            2133k video only          1080p60, webm_dash
400 mp4   2560x1440   60    │  371.57MiB  5111k https │ av01.0.12M.08  5111k video only          1440p60, mp4_dash
308 webm  2560x1440   60    │  458.94MiB  6313k https │ vp9            6313k video only          1440p60, webm_dash
401 mp4   3840x2160   60    │  758.45MiB 10433k https │ av01.0.13M.08 10433k video only          2160p60, mp4_dash
315 webm  3840x2160   60    │    1.25GiB 17660k https │ vp9           17660k video only          2160p60, webm_dash

I see it often with f96f6702 for example with video EV2vJ11eiHA

You are the first person to report that player. As such, can you please post a verbose log of it, so that the native js interpreter can be fixed?

I was gently suggesting that we don’t need a warning like this in the product

Sorry, I have autism, so I sometimes take things too literally. Anyway, I’m not a maintainer, so it’s not my decision, but I strongly doubt that the warning will be removed. What would be the point of the native js interpreter if no one cared whether it worked or not?

The phantomjs is working nicely for me

@jshir Out of interest, which player is falling back to PhantomJS? Is it 5a3b6271? If not, or if you don’t know, can you please post a verbose log?

is it possible to suppress the WARNING

you could use --no-warnings (although I wouldn’t recommend it). I’m not sure if there’s a way to only ignore specific warnings

blocking

*throttling-you can still download videos if the nsig extraction fails, but they will download at about 50kb/s

Sometimes you may also get a 403 if nsig fails

blocking

*throttling-you can still download videos if the nsig extraction fails, but they will download at about 50kb/s

It seems that YouTube is blocking downloads, so they are changing every few days a new player.

Due to different version numbers, the cache invalidation maynot always work for the unofficial daily builds (till actual release)

good point, I forgot about that

The yt-dlp’s fallback method depends on the jsinterp’s lexer/parser. Therefore, it may not function as a fallback. This PR uses methods that do not(JS injection).

// webdriver branch(use chromedriver)'s recent results.
c81bbb4a, 009f1d77, 0c356943, dc0c6770, c2199353, 113ca41c, c57c113c => workaround worked

I would suggest doing that at yt-dlp as well. Also, phantomjs should not be used… However, current injecting methods are easily counteracted, so it may be necessary to consider better methods.

Bonus: here’s the code https://gist.github.com/7cd88010f68419df69bd0778a0fc52e1

The challenge finishes in line 25, but that parsing issue is fixed, as noted above.

As to the latest player, the challenge is in lines 1279-1304, but neither the yt-dlp master nor my yt-dl WIP that handles 113ca41c extract the challenge code properly. Probably it’s this regex /,][}",],()}(\[)/.

but my prompt for you to update was solely based on what you posted yourself

The previous line in my log also indicates that I use the bundled version (linux_exe a.k.a. yt-dlp_linux), and I can’t compile it either because of the python version discrepancy.

New player: c57c113c https://www.youtube.com/s/player/c57c113c/player_ias.vflset/en_US/base.js `

File “/usr/local/lib/python3.9/site-packages/yt_dlp/jsinterp.py”, line 794, in call_function return self.extract_function(funcname)(args) File “/usr/local/lib/python3.9/site-packages/yt_dlp/jsinterp.py”, line 777, in extract_function return self.extract_function_from_code(*self.extract_function_code(funcname)) File “/usr/local/lib/python3.9/site-packages/yt_dlp/jsinterp.py”, line 771, in extract_function_code code, _ = self._separate_at_paren(func_m.group(‘code’), ‘}’) File “/usr/local/lib/python3.9/site-packages/yt_dlp/jsinterp.py”, line 273, in _separate_at_paren raise cls.Exception(f’No terminating paren {delim}', expr) yt_dlp.jsinterp.JSInterpreter.Exception: No terminating paren } in: {var b=a.split(“”),c=[function(){for(var d=64,e…lick=function(){this.G.Pa(“onExpandMiniplayer”)};};

`

I didn’t see anyone else experience phantomjs to hang completely.

It happens to me, even on a 4 year old Ryzen CPU so you are not alone.

@Vangelis66

I didn’t mean to post a duplicate, I scrolled through the comments but I didn’t see anyone else experience phantomjs to hang completely.

You are not crazy, I feel like YouTube is cracking down on our projects (Newpipe, invidious, youtube-dl and more).

In that case, I’ll do my part in trying to convince more and more people to mirror their stuff on alt tech video sites.

PLease, update to that (master) and make sure you also perform --rm-cache-dir to regain unthrottled YT downloads…

Sadly I can’t do that, since Ubuntu 18.04’s apt doesn’t work with python versions above 3.6, and yt-dlp doesn’t work with 3.6 anymore. I’m not gonna go into specifics because I’ve already said it in the appropriate ticket and it’d be completely off topic here.

@Vangelis66 No need to point to my supposed duplicates. I’ve been punished already by the hidden status. 😀️

PS https://github.com/yt-dlp/yt-dlp/issues/4635#issuecomment-1231126941 was not marked as duplicate.

in my case, phantomjs just hangs.

@csehszlovakze

With respect, there’s no need in posting yet another duplicate 😉 : https://github.com/yt-dlp/yt-dlp/issues/4635#issuecomment-1231126941 https://github.com/yt-dlp/yt-dlp/issues/4635#issuecomment-1231135121

i.e. your case is not unique!

If I’m allowed a personal comment here, with the introduction of ytplayer 113ca41c Google managed (albeit briefly) to kill “two birds with one stone” 😠 ; invalidating PhantomJS too (fallback mechanism to jsinterp.py) doesn’t look like a coincidence here; if it was indeed intentional, they directly targeted https://github.com/yt-dlp/yt-dlp/commit/25836db6bea78501c514bfbe5840f305b33afdcd 😡 … All the more consolidates the suspicions of another dev:

You are not crazy, I feel like YouTube is cracking down on our projects (Newpipe, invidious, youtube-dl and more).

The ytplayer 113ca41c related breakage has already been dealt with in yt-dlp’s master branch: https://github.com/yt-dlp/yt-dlp/commit/c4b2df872d0ab49da939bf8bda001fa4e2d2ea06 https://github.com/yt-dlp/yt-dlp/commit/d81ba7d491bf2c89246d8817438db48a5a4e4ae9

PLease, update to that (master) and make sure you also perform --rm-cache-dir to regain unthrottled YT downloads…

here’s another one, but in my case, phantomjs just hangs.

$ yt-dlp -vUF --rm-cache https://www.youtube.com/watch?v=pCPDWQ5yGFQ
[debug] Command-line config: ['-vUF', '--rm-cache', 'https://www.youtube.com/watch?v=pCPDWQ5yGFQ']
[debug] Encodings: locale UTF-8, fs utf-8, pref UTF-8, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version 2022.08.19 [48c88e0] (linux_exe)
[debug] Python 3.10.5 (CPython 64bit) - Linux-4.15.0-144-generic-x86_64-with-glibc2.27 (glibc 2.27)
[debug] Checking exe version: ffmpeg -bsfs
[debug] Checking exe version: ffprobe -bsfs
[debug] exe versions: ffmpeg 3.4.11, ffprobe 3.4.11, phantomjs 2.1.1, rtmpdump 2.4
[debug] Optional libraries: Cryptodome-3.15.0, brotli-1.0.9, certifi-2022.06.15, mutagen-1.45.1, secretstorage-3.3.3, sqlite3-2.6.0, websockets-10.3
[debug] Proxy map: {}
Removing cache dir /home/csehszlovakze/.cache/yt-dlp ...
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp/releases/latest
Latest version: 2022.08.19, Current version: 2022.08.19
yt-dlp is up to date (2022.08.19)
[debug] [youtube] Extracting URL: https://www.youtube.com/watch?v=pCPDWQ5yGFQ
[youtube] pCPDWQ5yGFQ: Downloading webpage
[youtube] pCPDWQ5yGFQ: Downloading android player API JSON
[youtube] pCPDWQ5yGFQ: Downloading player 113ca41c
[debug] Saving youtube-nsig.113ca41c to cache
WARNING: [youtube] pCPDWQ5yGFQ: Native nsig extraction failed: Trying with PhantomJS
         n = SQ9WOYsBfDbdNe ; player = https://www.youtube.com/s/player/113ca41c/player_ias.vflset/en_US/base.js
[debug] [youtube] No terminating paren } in: {e=void 0===e?"":e;f=void 0===f?!1:f;if(a)if(c&...ack;d.level=b[c].level;g.eu(d)}Zw().set("errors",{; please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U
[youtube] pCPDWQ5yGFQ: Executing signature code
[debug] [youtube] PhantomJS command line: phantomjs --ssl-protocol=any /tmp/tmp_94ui1dt

after about 10 minutes I gave up:

^C
ERROR: Interrupted by user

Two issues (tested in yt-dl, though):

  • jsinterp.py:246 causes the failing parenthesis match (a newline in the expression where only an actual space was handled):
-            after_op = not in_quote and char in OP_CHARS or (char == ' ' and after_op)
+            after_op = not in_quote and (char in OP_CHARS or (char.isspace() and after_op))
  • the name NaN has to be added to the global namespace with value float('nan').

Then:

$ python -m youtube_dl -v -F 'https://youtu.be/o8Y_uR6ZDxo'
[debug] System config: [u'--prefer-ffmpeg']
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: [u'-v', u'-F', u'https://youtu.be/o8Y_uR6ZDxo']
[debug] Encodings: locale UTF-8, fs UTF-8, out UTF-8, pref UTF-8
[debug] youtube-dl version 2021.12.17
[debug] Git HEAD: 4050e10a4
[debug] Python version 2.7.17 (CPython) - Linux-4.4.0-210-generic-i686-with-Ubuntu-16.04-xenial
[debug] exe versions: avconv 4.3, avprobe 4.3, ffmpeg 4.3, ffprobe 4.3
[debug] Proxy map: {}
[youtube] o8Y_uR6ZDxo: Downloading webpage
[debug] [youtube] Decrypted nsig 2nUWgUtVl1TBZ4 => zunJyIoor0YeVQ
[debug] [youtube] Decrypted nsig jvpV5rtZW_j3Q7 => oBq_CjSFz0ybfg
[info] Available formats for o8Y_uR6ZDxo:
format code  extension  resolution note
249          webm       audio only tiny   51k , webm_dash container, opus @ 51k (48000Hz), 1.54MiB
250          webm       audio only tiny   68k , webm_dash container, opus @ 68k (48000Hz), 2.05MiB
140          m4a        audio only tiny  129k , m4a_dash container, mp4a.40.2@129k (44100Hz), 3.88MiB
251          webm       audio only tiny  134k , webm_dash container, opus @134k (48000Hz), 4.03MiB
160          mp4        256x144    144p   42k , mp4_dash container, avc1.4d400c@  42k, 30fps, video only, 1.27MiB
394          mp4        256x144    144p   68k , mp4_dash container, av01.0.00M.08@  68k, 30fps, video only, 2.06MiB
278          webm       256x144    144p   91k , webm_dash container, vp9@  91k, 30fps, video only, 2.74MiB
133          mp4        426x240    240p   60k , mp4_dash container, avc1.4d4015@  60k, 30fps, video only, 1.82MiB
395          mp4        426x240    240p   90k , mp4_dash container, av01.0.00M.08@  90k, 30fps, video only, 2.72MiB
242          webm       426x240    240p   98k , webm_dash container, vp9@  98k, 30fps, video only, 2.96MiB
134          mp4        640x360    360p  116k , mp4_dash container, avc1.4d401e@ 116k, 30fps, video only, 3.49MiB
243          webm       640x360    360p  162k , webm_dash container, vp9@ 162k, 30fps, video only, 4.85MiB
396          mp4        640x360    360p  174k , mp4_dash container, av01.0.01M.08@ 174k, 30fps, video only, 5.21MiB
135          mp4        854x480    480p  189k , mp4_dash container, avc1.4d401f@ 189k, 30fps, video only, 5.66MiB
244          webm       854x480    480p  241k , webm_dash container, vp9@ 241k, 30fps, video only, 7.22MiB
397          mp4        854x480    480p  327k , mp4_dash container, av01.0.04M.08@ 327k, 30fps, video only, 9.80MiB
298          mp4        1280x720   720p60  456k , mp4_dash container, avc1.4d4020@ 456k, 60fps, video only, 13.67MiB
302          webm       1280x720   720p60  686k , webm_dash container, vp9@ 686k, 60fps, video only, 20.55MiB
136          mp4        1280x720   720p  929k , mp4_dash container, avc1.4d401f@ 929k, 30fps, video only, 27.82MiB
247          webm       1280x720   720p  935k , webm_dash container, vp9@ 935k, 30fps, video only, 28.00MiB
398          mp4        1280x720   720p60 1203k , mp4_dash container, av01.0.08M.08@1203k, 60fps, video only, 36.02MiB
299          mp4        1920x1080  1080p60 2196k , mp4_dash container, avc1.64002a@2196k, 60fps, video only, 65.73MiB
399          mp4        1920x1080  1080p60 2337k , mp4_dash container, av01.0.09M.08@2337k, 60fps, video only, 69.95MiB
303          webm       1920x1080  1080p60 2709k , webm_dash container, vp9@2709k, 60fps, video only, 81.06MiB
18           mp4        640x360    360p  439k , avc1.42001E, 30fps, mp4a.40.2 (44100Hz), 13.15MiB (best)
$

At least, I hope those values give unthrottled links.

there are more in my log, should i post them all?

Well, I think that’d be not necessary… Your posted log excerpts are ALL about youtube’s new player, dc0c6770, and @kynndev was the first to post about it… The devs are already aware and have pushed a fix in the yt-dlp master branch 👍 … The fallback to using PhantomJS worked nicely in my case (before the fix arrived…).

WARNING: [youtube] 7XL7yNuIsVs: nsig extraction failed: You may experience throttling for some formats Install PhantomJS to workaround the issue n = 5EHDMgYLV6HPGk_Mu-kk ; player = https://www.youtube.com/s/player/dc0c6770/player_ias.vflset/en_US/base.js

Player 009f1d77 doesn’t exercise the regex and exception stuff just added. It has this interesting string '][;;],' as well as Date() and Math.pow() expressions.

Google have now already rolled out 😠 new player 009f1d77, but the latest release 2022.08.19 has no trouble decrypting the nsig (I’ve used the same video below for testing as @nicolaasjan previously in this thread):

yt-dlp --ignore-config -v -F fEaMDCbFi5I

[debug] Command-line config: ['--ffmpeg-location', '..', '--downloader-args', 'ffmpeg:-v 8 -stats', '--ignore-config', '-v', '-F', 'fEaMDCbFi5I']
[debug] Encodings: locale cp1253, fs utf-8, pref cp1253, out utf-8 (No VT), error utf-8 (No VT), screen utf-8 (No VT)
[debug] yt-dlp version 2022.08.19 [48c88e0] (win32_exe)
[debug] Python 3.7.9 (CPython 32bit) - Windows-Vista-6.0.6003-SP2
[debug] Checking exe version: "..\ffmpeg" -bsfs
[debug] Checking exe version: "..\ffprobe" -bsfs
[debug] exe versions: ffmpeg 4.4.1 (setts), ffprobe 4.4.1
[debug] Optional libraries: Cryptodome-3.15.0, brotli-1.0.9, certifi-2022.06.15, mutagen-1.45.1, sqlite3-2.6.0, websockets-10.3
[debug] Proxy map: {}
[debug] [youtube] Extracting URL: fEaMDCbFi5I
[youtube] fEaMDCbFi5I: Downloading webpage
[youtube] fEaMDCbFi5I: Downloading android player API JSON
[youtube] fEaMDCbFi5I: Downloading tv embedded player API JSON
[youtube] fEaMDCbFi5I: Downloading web embedded client config
[youtube] fEaMDCbFi5I: Downloading player 009f1d77
[youtube] fEaMDCbFi5I: Downloading web embedded player API JSON
[debug] Saving youtube-nsig.009f1d77 to cache
[debug] [youtube] Decrypted nsig S32DSLpdEQ9u7VZrzT => ncctDaHTGLnPyA
[debug] Loading youtube-nsig.009f1d77 from cache
[debug] [youtube] Decrypted nsig Xd0yq6O9S6HGHVtbZS => PCqQb5dDxlio6A
[debug] Sort order given by extractor: quality, res, fps, hdr:12, source, vcodec:vp9.2, channels, acodec, lang, proto
[debug] Formats sorted by: hasvid, ie_pref, quality, res, fps, hdr:12(7), source, vcodec:vp9.2(10), channels, acodec, lang, proto, filesize, fs_approx, tbr, vbr, abr, asr, vext, aext, hasaud, id
[info] Available formats for fEaMDCbFi5I:
(removed for brevity)

… and:

yt-dlp --ignore-config -v -F w1C0fObjruo

[debug] Command-line config: ['--ffmpeg-location', '..', '--downloader-args', 'ffmpeg:-v 8 -stats', '--ignore-config', '-v', '-F', 'w1C0fObjruo']
[debug] Encodings: locale cp1253, fs utf-8, pref cp1253, out utf-8 (No VT), error utf-8 (No VT), screen utf-8 (No VT)
[debug] yt-dlp version 2022.08.19 [48c88e0] (win32_exe)
[debug] Python 3.7.9 (CPython 32bit) - Windows-Vista-6.0.6003-SP2
[debug] Checking exe version: "..\ffmpeg" -bsfs
[debug] Checking exe version: "..\ffprobe" -bsfs
[debug] exe versions: ffmpeg 4.4.1 (setts), ffprobe 4.4.1
[debug] Optional libraries: Cryptodome-3.15.0, brotli-1.0.9, certifi-2022.06.15, mutagen-1.45.1, sqlite3-2.6.0, websockets-10.3
[debug] Proxy map: {}
[debug] [youtube] Extracting URL: w1C0fObjruo
[youtube] w1C0fObjruo: Downloading webpage
[youtube] w1C0fObjruo: Downloading android player API JSON
[debug] [youtube] Extracting signature function js_009f1d77_106
[youtube] w1C0fObjruo: Downloading player 009f1d77
[debug] Saving youtube-sigfuncs.js_009f1d77_106 to cache
[debug] Loading youtube-nsig.009f1d77 from cache
[debug] [youtube] Decrypted nsig X1gb05ZQBEqeAuvlTv => kw9PNKYxOPRNaQ
[debug] Sort order given by extractor: quality, res, fps, hdr:12, source, vcodec:vp9.2, channels, acodec, lang, proto
[debug] Formats sorted by: hasvid, ie_pref, quality, res, fps, hdr:12(7), source, vcodec:vp9.2(10), channels, acodec, lang, proto, filesize, fs_approx, tbr, vbr, abr, asr, vext, aext, hasaud, id
[info] Available formats for w1C0fObjruo:
(removed for brevity)

All in all, an exquisite job! Well done, pukkandan and company! 🥇

“extractors where javascript needs to be run” includes youtube

BTW, is there some way to declare a “custom” phantomjs.exe path to yt-dlp, or is it exclusively picked up by yt-dlp_x86.exe when placed adjacent to it?

PS: I would also extend that same question to include the rest of the Windows binaries used as dependencies (i.e.AtomicParsley.exe, RTMPdump.exe) - baring FFmpeg.exe and FFprobe.exe, for which there is --ffmpeg-location already), but I sense this is material for a New Issue

It’s only taken from PATH. Same for the other executables (except ffmpeg ofc). You can open a new issue if you want the option to set their location

I have added fallback to phantomjs

Many thanks! 👍 FWIW, the linked Windows binary is 32-bit and has Vista SP2 (32-bit) as minimum OS requirement, so the same as yt-dlp_x86.exe 👍 (I’m just stating this, because I’ve seen some WinXP-compatible “adaptations” 😉 of yt-dlp floating elsewhere 😄 …).

BTW, is there some way to declare a “custom” phantomjs.exe path to yt-dlp, or is it exclusively picked up by yt-dlp_x86.exe when placed adjacent to it?

PS: I would also extend that same question to include the rest of the Windows binaries used as dependencies (i.e.AtomicParsley.exe, RTMPdump.exe) - baring FFmpeg.exe and FFprobe.exe, for which there is --ffmpeg-location already), but I sense this is material for a New Issue

When encountering the error, yt-dlp could have saved wrong function in cache. So clear the cache when trying new version

Some ID are not working as expected right now with the master loaded half an hour ago.

Did you delete yt-dlp’s cache first?

I tried with w1C0fObjruo, and it worked.

[debug] [youtube] Extracting URL: w1C0fObjruo
[youtube] w1C0fObjruo: Downloading webpage
[youtube] w1C0fObjruo: Downloading android player API JSON
[debug] [youtube] Extracting signature function js_1f7d5369_108
[youtube] w1C0fObjruo: Downloading player 1f7d5369
[debug] Saving youtube-sigfuncs.js_1f7d5369_108 to cache
[debug] Saving youtube-nsig.1f7d5369 to cache
[debug] [youtube] Decrypted nsig EsPN1Ry9FRHQIt => kyIoi6FY7_5Btg

Thanks! 🙂 That fixed things for now.

Had to delete the cache (~/.cache/yt-dlp/youtube-nsig) first though.

The function also throws and catches errors now

Got a new player: 1f7d5369

Got something similar with using latest master build (3ce2933) on video fEaMDCbFi5I from that playlist (download at ~48KiB/s…):

yt-dlp --ignore-config -v https://www.youtube.com/watch?v=fEaMDCbFi5I
[debug] Command-line config: ['--ignore-config', '-v', 'https://www.youtube.com/watch?v=fEaMDCbFi5I']
[debug] Encodings: locale UTF-8, fs utf-8, pref UTF-8, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version 2022.08.17 [3ce293369] (zip)
[debug] Python 3.8.10 (CPython 64bit) - Linux-5.4.0-124-generic-x86_64-with-glibc2.29 (glibc 2.31)
[debug] Checking exe version: ffmpeg -bsfs
[debug] Checking exe version: ffprobe -bsfs
[debug] exe versions: ffmpeg N-107787-gc469c3c3b1-Nico-20220816 (fdk,setts), ffprobe N-107787-gc469c3c3b1-Nico-20220816, phantomjs 2.1.1
[debug] Optional libraries: Cryptodome-3.12.0, brotli-1.0.9, certifi-2019.11.28, mutagen-1.45.1, secretstorage-2.3.1, sqlite3-2.6.0, websockets-10.1, xattr-0.9.6
[debug] Proxy map: {}
[debug] [youtube] Extracting URL: https://www.youtube.com/watch?v=fEaMDCbFi5I
[youtube] fEaMDCbFi5I: Downloading webpage
[youtube] fEaMDCbFi5I: Downloading android player API JSON
[youtube] fEaMDCbFi5I: Downloading tv embedded player API JSON
[youtube] fEaMDCbFi5I: Downloading web embedded client config
[youtube] fEaMDCbFi5I: Downloading player 1f7d5369
[youtube] fEaMDCbFi5I: Downloading web embedded player API JSON
[debug] Saving youtube-nsig.1f7d5369 to cache
WARNING: [youtube] nsig extraction failed: You may experience throttling for some formats
n = RKKz1Lp0KaDPOJ ; player = https://www.youtube.com/s/player/1f7d5369/player_ias.vflset/en_US/base.js
[debug] [youtube] fEaMDCbFi5I: Traceback (most recent call last):
  File "/usr/local/bin/dlp/yt_dlp/extractor/youtube.py", line 2624, in _decrypt_nsig
    self._player_cache[sig_id] = func(s)
  File "/usr/local/bin/dlp/yt_dlp/extractor/youtube.py", line 2657, in <lambda>
    return lambda s: func([s])
  File "/usr/local/bin/dlp/yt_dlp/jsinterp.py", line 639, in resf
    ret, should_abort = self.interpret_statement(code.replace('\n', ''), var_stack, allow_recursion - 1)
  File "/usr/local/bin/dlp/yt_dlp/jsinterp.py", line 106, in interpret_statement
    ret, should_ret = f(self, stmt, local_vars, allow_recursion, *args, **kwargs)
  File "/usr/local/bin/dlp/yt_dlp/jsinterp.py", line 344, in interpret_statement
    ret, should_abort = self.interpret_statement(sub_expr, local_vars, allow_recursion)
  File "/usr/local/bin/dlp/yt_dlp/jsinterp.py", line 106, in interpret_statement
    ret, should_ret = f(self, stmt, local_vars, allow_recursion, *args, **kwargs)
  File "/usr/local/bin/dlp/yt_dlp/jsinterp.py", line 382, in interpret_statement
    local_vars[m.group('out')] = self._operator(
  File "/usr/local/bin/dlp/yt_dlp/jsinterp.py", line 175, in _operator
    right_val = self.interpret_expression(right_expr, local_vars, allow_recursion)
  File "/usr/local/bin/dlp/yt_dlp/jsinterp.py", line 564, in interpret_expression
    ret, should_return = self.interpret_statement(expr, local_vars, allow_recursion)
  File "/usr/local/bin/dlp/yt_dlp/jsinterp.py", line 106, in interpret_statement
    ret, should_ret = f(self, stmt, local_vars, allow_recursion, *args, **kwargs)
  File "/usr/local/bin/dlp/yt_dlp/jsinterp.py", line 260, in interpret_statement
    inner, outer = self._separate_at_paren(expr, ']')
  File "/usr/local/bin/dlp/yt_dlp/jsinterp.py", line 165, in _separate_at_paren
    raise cls.Exception(f'No terminating paren {delim}', expr)
yt_dlp.jsinterp.JSInterpreter.Exception: No terminating paren ] in: [1637657201,-990522961,-903445535,-193926786,-4...0,c[64])(c[87],c[20]),9)||(0,c[64])(c[35],c[73]))}; please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U
 (caused by Exception('No terminating paren ] in: [1637657201,-990522961,-903445535,-193926786,-4...0,c[64])(c[87],c[20]),9)||(0,c[64])(c[35],c[73]))}; please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U')); please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U
WARNING: [youtube] nsig extraction failed: You may experience throttling for some formats
n = Ijns43UjybdrU9 ; player = https://www.youtube.com/s/player/1f7d5369/player_ias.vflset/en_US/base.js
[debug] Sort order given by extractor: quality, res, fps, hdr:12, source, vcodec:vp9.2, channels, acodec, lang, proto
[debug] Formats sorted by: hasvid, ie_pref, quality, res, fps, hdr:12(7), source, vcodec:vp9.2(10), channels, acodec, lang, proto, filesize, fs_approx, tbr, vbr, abr, asr, vext, aext, hasaud, id
[debug] Default format spec: bestvideo*+bestaudio/best
[info] fEaMDCbFi5I: Downloading 1 format(s): 313+251
[debug] Invoking http downloader on "https://rr2---sn-5hnekn7l.googlevideo.com/videoplayback?expire=1660820636&ei=PMj9YqaUH9SDgAe7tbugCw&ip=<redacted>&id=o-AH5TVUokCBbdcRkAF8VhTVETHJG_niFSsBybiY_k7ouW&itag=313&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C244%2C247%2C248%2C271%2C278%2C313%2C394%2C395%2C396%2C397%2C398%2C399%2C400%2C401&source=youtube&requiressl=yes&mh=YK&mm=31%2C26&mn=sn-5hnekn7l%2Csn-4g5lznes&ms=au%2Conr&mv=m&mvi=2&pl=18&pcm2=yes&initcwndbps=1891250&vprv=1&mime=video%2Fwebm&ns=XFehlyLN-fduT6GZvajZ79kH&gir=yes&clen=1024776725&dur=668.708&lmt=1646189489960985&mt=1660798640&fvip=4&keepalive=yes&fexp=24001373%2C24007246&c=TVHTML5_SIMPLY_EMBEDDED_PLAYER&rbqsm=fr&txp=5532434&n=Ijns43UjybdrU9&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cpcm2%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&sig=AOq0QJ8wRAIgZQrxpWvED4I-ynOB5g0xyMFYcffpIE_acw02bHVf6Y4CIH82woPeWAHE1_j6yCZe0ZO9t9i88as42xT3oeQWKqZd&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRAIgas5ePCcxYvEvCowwhsNQoBVOcU2Xej8C5npZ3ymDvHECICdvECmkpR0nyfdbeWsJZNryIb8MMxY8NjtcrQRJrwS9"
[download] Destination: VR News Roundup with Erik (I FOUND THE ELDEN RING) [fEaMDCbFi5I].f313.webm
[download]   0.1% of 977.30MiB at   47.63KiB/s ETA 05:49:41^C
ERROR: Interrupted by user

@Faultiness If you need it asap then build it from master, README should have instructions for that.

Or use https://github.com/ytdl-patched/yt-dlp

@DavidH-2022 Wait for the next update

@dirkf wrote:

New player c81bbb4a, but (satisfyingly) doesn’t break yt-dl master, which understands ===.

Turns out the satisfaction only applies in Py2.7, though I haven’t managed to work out why the operator fixes from 6d3e742 aren’t needed there. Anyhow, the version mentioned in #yt-dl/31173, which is the same problem resulting from player c81bbb4a as reported above, incorporates the same functionality.

Is a backport of 6d3e742 required for yt-dl or not?

So yes.

Ideally, there would be an extra line in the debug output, like this that is shown when running with python -m yt_dlp:

[debug] Git HEAD: 6d3e7424b

New player c81bbb4a, but (satisfyingly) doesn’t break yt-dl master, which understands ===.