diff options
| -rw-r--r-- | assets/2026-02-02-yt-dlp-remote-components-fix.txt | 49 | ||||
| -rw-r--r-- | dotfiles/common/.config/yt-dlp/config | 3 |
2 files changed, 52 insertions, 0 deletions
diff --git a/assets/2026-02-02-yt-dlp-remote-components-fix.txt b/assets/2026-02-02-yt-dlp-remote-components-fix.txt new file mode 100644 index 0000000..dbc887b --- /dev/null +++ b/assets/2026-02-02-yt-dlp-remote-components-fix.txt @@ -0,0 +1,49 @@ +yt-dlp YouTube Download Fix +============================ + +Date: 2026-02-02 + +PROBLEM +------- +YouTube video downloads are failing or showing warnings like: + + WARNING: [youtube] [jsc] Remote components challenge solver script (deno) + and NPM package (deno) were skipped. + + WARNING: [youtube] Signature solving failed: Some formats may be missing. + + WARNING: [youtube] n challenge solving failed: Some formats may be missing. + +CAUSE +----- +YouTube now uses JavaScript-based challenges to protect video stream URLs. +yt-dlp version 2026.01.31 can solve these challenges using deno (which is +installed), but by default it won't download the required solver scripts +for security reasons. + +FIX +--- +Add this line to ~/.config/yt-dlp/config: + + --remote-components ejs:github + +This tells yt-dlp to download the official challenge solver scripts from +the yt-dlp/ejs GitHub repository. + +The config file is symlinked to: + ~/code/archsetup/dotfiles/common/.config/yt-dlp/config + +VERIFICATION +------------ +After adding the flag, test with: + + yt-dlp --simulate "https://www.youtube.com/watch?v=dQw4w9WgXcQ" + +You should see: + [youtube] [jsc:deno] Downloading challenge solver lib script from https://... + +instead of the warnings. + +REFERENCE +--------- +https://github.com/yt-dlp/yt-dlp/wiki/EJS diff --git a/dotfiles/common/.config/yt-dlp/config b/dotfiles/common/.config/yt-dlp/config index 6b99261..2e024cd 100644 --- a/dotfiles/common/.config/yt-dlp/config +++ b/dotfiles/common/.config/yt-dlp/config @@ -18,3 +18,6 @@ # Output template: ~/videos/channel-title.ext -o ~/videos/%(channel)s-%(title)s.%(ext)s + +# Download YouTube JS challenge solver from official yt-dlp/ejs repo +--remote-components ejs:github |
