8000
Skip to content

sa23up/yt-dlp-GUI

Repository files navigation

yt-dlp Studio

简体中文

Desktop workbench for yt-dlp built with Tauri 2, React, TypeScript, and Rust.

yt-dlp Studio is designed as a desktop-first operator console rather than a thin wrapper around a terminal command. It provides a guided download flow, queue and history pages, dependency repair, authentication helpers, and release packaging through GitHub Actions.

Highlights

  • New-download workbench with simple and expert modes
  • Queue and history pages with shared visual and interaction semantics
  • YouTube media inspection with separate video and audio format selection
  • Command preview generation with masking for sensitive arguments
  • Authentication center for browser-cookie and cookies.txt sources
  • Dependency detection and repair flow for yt-dlp and ffmpeg
  • Settings for language, default output directory, and binary path overrides
  • Chinese and English UI
  • Tauri packaging for Windows and Linux

Current Scope

  • Desktop targets: Windows and Linux
  • YouTube format parsing is currently implemented for YouTube URLs
  • General download queueing still supports regular yt-dlp URL input with preset modes
  • Runtime still depends on yt-dlp and, for some workflows, ffmpeg
  • The app can guide or perform dependency installation depending on platform

Dependency Strategy

The app resolves runtime tools in this order:

  1. User-configured binary override from Settings
  2. App-managed tool directory
  3. System PATH

Current install behavior:

  • Windows: managed in-app install for yt-dlp and ffmpeg
  • Linux: in-app install guidance and one-click package-manager execution when a supported package manager and pkexec are available
  • Supported Linux package managers: apt, dnf, pacman

Authentication Model

The authentication center currently supports:

  • Browser cookie source
  • cookies.txt file source

By default, the app stores auth source references, not copied cookie contents:

  • Browser source stores browser/profile identifiers
  • cookies.txt source stores the file path

Privacy and Local Data

The application stores local state in the system app data directory through SQLite and platform app-data paths.

Typical local data includes:

  • Settings
  • Job queue and history records
  • Job logs
  • Auth source metadata
  • Managed tool binaries installed by the app

Sensitive command preview values such as passwords and auth headers are redacted before persistence where supported by the code path.

Do not commit local runtime artifacts such as:

  • src-tauri/target/
  • dist/
  • node_modules/
  • *.db, *.sqlite, *.sqlite3
  • .env, .env.*
  • cookies.txt
  • *.log

Tech Stack

  • Tauri 2
  • React 19
  • TypeScript
  • Vite 7
  • Rust
  • rusqlite
  • Vitest + Testing Library
  • GitHub Actions

Development Requirements

  • Node.js 22.12+
  • pnpm 10+
  • Rust stable toolchain

Recommended local Node version:

  • 22.22.2 (.nvmrc is included)

Linux build prerequisites used by CI:

sudo apt-get update
sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf

Getting Started

Install dependencies:

pnpm install

Run frontend dev server:

pnpm dev

Run the Tauri desktop app in development:

pnpm tauri dev

Verification

Frontend tests:

pnpm exec vitest run

Rust tests:

cargo test --manifest-path src-tauri/Cargo.toml

Production web build:

pnpm build

Local Tauri package build:

pnpm tauri build

Release and Packaging

This repository is set up to use GitHub Actions as the formal packaging and release path.

Preview workflow:

Release workflow:

  • File: .github/workflows/release.yml
  • Trigger: tags matching v* or manual workflow_dispatch
  • Output: GitHub Release with packaged Windows and Linux artifacts

Local pnpm tauri build remains useful for smoke testing and verifying installer output before pushing.

Repository Layout

.
├── .github/workflows/     CI, preview packaging, release packaging
├── src/                   React frontend
│   ├── app/               app shell and routing
│   ├── features/          workbench, queue, history, auth, tools, settings
│   ├── i18n/              bilingual UI messages and status formatters
│   ├── lib/               Tauri API bridges and command-preview helpers
│   └── styles/            app styles and tokens
├── src-tauri/             Rust backend and Tauri packaging config
│   └── src/               commands, db, dependency manager, auth manager, job runner
└── docs/                  design notes, specs, and implementation plans

Notes for Contributors

  • Keep README and workflow behavior aligned
  • Prefer updating tests alongside behavior changes
  • Do not commit runtime databases, cookies, or packaged binaries
  • Use GitHub Actions as the normal release path instead of manual local publishing

About

I created a simple GUI page for the yt-dlp project.

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 
0