Skip to content

Add Deno JavaScript runtime support for yt-dlp YouTube extraction#168

Merged
firsttris merged 1 commit intofirsttris:masterfrom
glogiotatidis:deno-runtime-support
Mar 20, 2026
Merged

Add Deno JavaScript runtime support for yt-dlp YouTube extraction#168
firsttris merged 1 commit intofirsttris:masterfrom
glogiotatidis:deno-runtime-support

Conversation

@glogiotatidis
Copy link
Contributor

yt-dlp requires a JS runtime (Deno) to solve YouTube's bot challenges. This adds deno_manager.py to handle locating and downloading the Deno binary, and wires it into the yt-dlp options in service.py.

Two settings are exposed in the addon configuration:

  • Enable Deno (deno_enabled, default: on) — controls whether Deno is used at all. Disable this to run yt-dlp without any JS runtime.

  • Auto-download Deno (deno_autodownload, default: on, advanced) — when enabled, automatically downloads the Deno binary from GitHub Releases if not already present, and updates it whenever DENO_VERSION in deno_manager.py changes (i.e. on addon updates). When disabled, only an existing installation is used.

Deno is downloaded to:
special://profile/addon_data/plugin.video.sendtokodi/deno/

Also fixes a silent failure mode where createListItemFromVideo raising an exception (e.g. no supported streams found) left setResolvedUrl uncalled, causing Kodi to silently do nothing instead of showing an error.

Tested on Raspberry Pi 4 running LibreELEC.

yt-dlp requires a JS runtime (Deno) to solve YouTube's bot challenges.
This adds deno_manager.py to handle locating and downloading the Deno
binary, and wires it into the yt-dlp options in service.py.

Two settings are exposed in the addon configuration:

  - Enable Deno (deno_enabled, default: on) — controls whether Deno is
    used at all. Disable this to run yt-dlp without any JS runtime.

  - Auto-download Deno (deno_autodownload, default: on, advanced) —
    when enabled, automatically downloads the Deno binary from GitHub
    Releases if not already present, and updates it whenever DENO_VERSION
    in deno_manager.py changes (i.e. on addon updates). When disabled,
    only an existing installation is used.

Deno is downloaded to:
  special://profile/addon_data/plugin.video.sendtokodi/deno/

Also fixes a silent failure mode where createListItemFromVideo raising
an exception (e.g. no supported streams found) left setResolvedUrl
uncalled, causing Kodi to silently do nothing instead of showing an error.

Tested on Raspberry Pi 4 running LibreELEC.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@glogiotatidis glogiotatidis mentioned this pull request Mar 18, 2026
@firsttris
Copy link
Owner

thx

@firsttris firsttris merged commit 7fbe346 into firsttris:master Mar 20, 2026
@firsttris
Copy link
Owner

worked for me on linux as well

@glogiotatidis
Copy link
Contributor Author

@firsttris can you please check?

@firsttris
Copy link
Owner

@glogiotatidis i checked, worked in my machine (bazzite)

@glogiotatidis
Copy link
Contributor Author

🎉

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants