For the complete documentation index, see llms.txt. This page is also available as Markdown.

yt-dlp

Search YouTube and resolve audio stream URLs via yt-dlp.

yt-dlp API for Plugins

The yt-dlp API gives plugins access to the yt-dlp command-line tool for searching YouTube and resolving direct audio stream URLs.

Unless you want your plugin to integrate with Youtube, you probably won't need this API at all.


Availability

The yt-dlp host is only configured when Nuclear detects a working yt-dlp binary on the system. The available getter tells you whether you can use the API:

import type { NuclearPluginAPI } from '@nuclearplayer/plugin-sdk';

export default {
  async onEnable(api: NuclearPluginAPI) {
    if (!api.Ytdlp.available) {
      api.Logger.warn('yt-dlp is not installed, skipping YouTube features');
      return;
    }

    // Safe to call search() and getStream() here
  },
};

If you call search() or getStream() without a configured host, they throw Error('YtdlpAPI: No host configured').


Usage


Data types

YtdlpSearchResult

Returned by search(). Represents a YouTube video matching the query.

Field
Type
Description

id

string

YouTube video ID

title

string

Video title

duration

number | null

Duration in seconds, or null if unknown

thumbnail

string | null

Thumbnail URL, or null if unavailable

YtdlpStreamInfo

Returned by getStream(). Contains the resolved audio stream URL.

Field
Type
Description

stream_url

string

Direct audio stream URL

duration

number | null

Duration in seconds

title

string | null

Video title

These types mirror the Rust types in packages/player/src-tauri/src/ytdlp.rs.


Reference


Stream expiry

Audio stream URLs from YouTube are ephemeral. They expire after a few hours. Don't store them for later use. Resolve a fresh URL each time you need to play a track.

This API is primarily used by streaming providers. Most plugins won't need it.

Last updated