Bug 2405578 - yt-dlp soon to require javascript runtime and yt-dlp-ejs to run Javascript challenges (JSC)
Summary: yt-dlp soon to require javascript runtime and yt-dlp-ejs to run Javascript ch...
Keywords:
Status: NEW
Alias: None
Product: Fedora
Classification: Fedora
Component: yt-dlp
Version: rawhide
Hardware: All
OS: Linux
unspecified
unspecified
Target Milestone: ---
Assignee: Maxwell G
QA Contact:
URL:
Whiteboard:
: 2440553 (view as bug list)
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2025-10-22 01:26 UTC by R Haley
Modified: 2026-02-19 11:56 UTC (History)
10 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed:
Type: Bug
Embargoed:


Attachments (Terms of Use)

Description R Haley 2025-10-22 01:26:48 UTC
Description of problem:

In order to adapt to recent YouTube changes that are causing (most) downloads to fail with 403 errors, yt-dlp is adding a dependency on the Deno javascript interpreter. This is not currently packaged in Fedora and its suggested install method is a curl | sh, which... eww.

See:

https://github.com/yt-dlp/yt-dlp/issues/14404
https://github.com/yt-dlp/yt-dlp/issues/14680#issuecomment-3425624789

Comment 1 nucleo 2025-11-13 14:11:20 UTC
Found in Copr
https://copr.fedorainfracloud.org/coprs/samoht0/staticbuilds/

Comment 2 nucleo 2025-11-13 14:54:45 UTC
yt-dlp-ejs can be built with packaged nodejs-npm and yt-dlp can run with --js-runtimes node

Comment 3 nucleo 2025-11-13 20:28:55 UTC
yt-dlp-ejs can be built without installing any javascript interpreter and with included prebuilt yt.solver.lib.min.js yt.solver.core.min.js

https://copr.fedorainfracloud.org/coprs/nucleo/yt-dlp-ejs/build/9796045/

Comment 4 Maxwell G 2025-11-17 14:16:30 UTC
> This is not currently packaged in Fedora and its suggested install method is a curl | sh, which... eww.

It is also possible to download the binaries built in Github Actions from the project's releases or to use cargo binstall or to build from source (https://github.com/denoland/deno/blob/main/.github/CONTRIBUTING.md#building-from-source). Deno will likely not be easy to package properly but folks familiar with rust packaging are welcome to try.

As for yt-dlp-ejs, if someone wants to package it in a Guidelines-compliant way (i.e., not just copying pre-built Javascript blobs, unless that's _really_ the only way), I can probably co-maintain the package. If we do have python3-yt-dlp-ejs packaged, I'd be willing to consider https://src.fedoraproject.org/rpms/yt-dlp/pull-request/30 which enables yt-dlp to use node by default. However, I'm not sure if that's a decision we want to make for users, since the whole point of defaulting to deno and requiring manual opt-in for other runtimes is to avoid running the javascript challenges without sandboxing.

Comment 5 solomoncyj 2025-11-29 09:23:16 UTC
We can pull a page out of waydroids page as they
do not refill their can urls and users have to
Copy them when setting up waydroid. Can can chose
not to set end up and just pull in does (node)
and leave the configuration to the end users,
But unlike waydroid, the need to look up documentation 
is less subtle as instead of presenting a blank form
whose answers can be easily found, yt-dlp starts without 
errors and blows up when end isn’t configured and a yt vid
is downloaded, and troubleshooting may be a bit harder due to the
Need to hunt down documentation and choosing between 3 possible
Options (ejs:npm, ejs:GitHub or pip install yt-dip-ejs with
The first 1 only working on a subset of js runtimes, and the need
to actively check for updates if pip install is used). This may 
Confuse new users or people who aren’t tech literate, and official
docs recommend using deno, which maybe counterintuitive to node
Since official docs want a deno elf in the same folder/added to PATH
Where else node can be globally installed via dnf and allows automatic 
updates

Comment 6 solomoncyj 2025-11-29 09:24:16 UTC
*waydroid do not prefill their urls

Comment 7 alexisguerreroabg 2026-01-29 18:42:16 UTC Comment hidden (obsolete)
Comment 8 Maxwell G 2026-02-18 22:26:53 UTC
*** Bug 2440553 has been marked as a duplicate of this bug. ***

Comment 9 Dominik 'Rathann' Mierzejewski 2026-02-19 11:56:33 UTC
IMO things should "just work" without user having to install some additional software from outside Fedora.

From upstream docs, I understand yt-dlp can use NodeJS as the JS engine, so why not try using the packaged nodejs?

In parallel, I'm working on enabling the "impersonation" feature (https://github.com/yt-dlp/yt-dlp#impersonation).

I have curl_cffi packaged locally, but curl-impersonate is a bit more difficult due to it being a patched curl fork.


Note You need to log in before you can comment on or make changes to this bug.