Skip to main content

A modern desktop GUI for yt-dlp — download video and audio in any format

Project description

YT-DLPx

A premium, modern desktop application for downloading media from YouTube and 1000+ other sites, and converting local media files between formats. Powered by yt-dlp and ffmpeg, with a beautiful, custom Slate/Indigo user interface built on CustomTkinter.

Current Version: 0.3.0


Key Features

  • Sleek Sidebar Navigation: Modern left-hand vertical sidebar for seamless switching between panels (Download, Convert, and Settings).
  • Video & Audio Downloader:
    • Download video formats (MP4, MKV, WEBM) and audio-only formats (MP3, AAC, FLAC, WAV, OGG) with customizable quality levels.
    • Paste multiple URLs at once for batch/playlist queueing.
    • Clipboard Helper: A one-click "📋 Paste" button to instantly retrieve and append links.
    • Card-style queue rows with Tailwind-inspired colored status badges, real-time speed, ETA, and progress bar feedback.
  • Local Media Converter:
    • Batch select local video/audio files.
    • Convert to 15+ formats (MP4 H.264/H.265, WEBM, MKV, GIF, MP3, AAC, FLAC, and more) with multi-threaded ffmpeg conversion.
    • Real-time conversion progress bar and thread-level cancellation.
  • Centralized Settings Panel:
    • Theme Switcher: Instantly toggle between System, Dark, and Light modes.
    • Custom Destinations: Configure and browse default save locations for downloads and conversions.
    • Concurrency Sliders: Move concurrent download/conversion limits to the settings view to keep the workspace clean.
    • Settings are saved automatically at ~/.config/ytdlpx/settings.json.

Prerequisites

Before installing yt-dlpx, make sure you have the following system dependencies installed on your system path.

1. FFmpeg

Used for merging downloaded video/audio streams and performing conversions.

# macOS
brew install ffmpeg

# Linux (Debian/Ubuntu)
sudo apt install ffmpeg

2. Python with Tcl/Tk support

The GUI requires Tkinter, which requires a Python interpreter compiled with Tcl/Tk. Standard builds downloaded by some managers (like default uv or pyenv) may omit Tcl/Tk on macOS. It is recommended to use Homebrew's Python.

# macOS (Python 3.11 - 3.13)
brew install python@3.13
brew install python-tk@3.13

Installation

There are two recommended ways to install yt-dlpx directly from PyPI (pip).

Method 1: Using pipx (Recommended for desktop use)

pipx installs yt-dlpx in an isolated environment and exposes the yt-dlpx command globally.

# 1. Install pipx (if needed)
brew install pipx
pipx ensurepath  # Restart your terminal after this

# 2. Install yt-dlpx (pointing to Homebrew's Python to ensure Tkinter support)
pipx install ytdlpx --python $(brew --prefix python@3.13)/bin/python3.13

Method 2: Using uv (Fastest tool runner)

uv can install tools globally, or run them instantly on-the-fly.

  • Run on-the-fly (without installing):

    uvx --python $(brew --prefix python@3.13)/bin/python3.13 ytdlpx
    
  • Install globally:

    uv tool install ytdlpx --python $(brew --prefix python@3.13)/bin/python3.13
    

Launch

Once installed, simply run:

yt-dlpx

Development Setup

If you want to run the project locally or contribute to development:

  1. Clone or navigate to the repository directory.
  2. Initialize and sync the virtual environment using uv (pointing to Homebrew's Python):
    uv sync --python $(brew --prefix python@3.13)/bin/python3.13
    
  3. Run the application:
    uv run python src/ytdlpx/app.py
    

Troubleshooting

ModuleNotFoundError: No module named '_tkinter'

Your Python interpreter lacks Tcl/Tk. Ensure you installed python-tk from Homebrew and force a reinstall pointing explicitly to that Python version:

pipx install ytdlpx --python $(brew --prefix python@3.13)/bin/python3.13 --force

ffmpeg not found warning on launch

The application will launch, but video/audio merging and local file conversions will fail. Install ffmpeg using Homebrew or your Linux package manager.


License

This project is licensed under the GNU General Public License v3.0 (GPLv3). See the LICENSE file for the full license text.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ytdlpx-0.3.0.tar.gz (39.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ytdlpx-0.3.0-py3-none-any.whl (39.0 kB view details)

Uploaded Python 3

File details

Details for the file ytdlpx-0.3.0.tar.gz.

File metadata

  • Download URL: ytdlpx-0.3.0.tar.gz
  • Upload date:
  • Size: 39.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.0

File hashes

Hashes for ytdlpx-0.3.0.tar.gz
Algorithm Hash digest
SHA256 8817082e687261855bb60b6daebad748bfe998b675528478f52191fc9d3d2094
MD5 034f5028be6b8a5333043fb677c5605b
BLAKE2b-256 c1398910185425190b50f7c842fa85c9ee03b6ecb11c6976c43cc79bf9719802

See more details on using hashes here.

File details

Details for the file ytdlpx-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: ytdlpx-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 39.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.0

File hashes

Hashes for ytdlpx-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e3a17fbba35cc60646e9c76ae13d4a8578504098101a9b5376da20502c90b42a
MD5 6ec764c5ff25758d2ae3ffcaea077e55
BLAKE2b-256 00db0b7add6daa68c2ac185fa8c0486483bffe18072cf2d676e8e3f1519b460f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page