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.2.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

Recommended Method (pipx)

pipx installs yt-dlpx in an isolated environment and exposes the yt-dlpx CLI on your system $PATH.

  1. Install pipx (if not already installed):

    brew install pipx
    pipx ensurepath
    

    (Remember to restart your terminal after running pipx ensurepath)

  2. Install yt-dlpx: Specify the Homebrew Python path to ensure Tcl/Tk is enabled:

    pipx install . --python $(brew --prefix python@3.13)/bin/python3.13
    
  3. Launch the Application:

    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 . --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.2.0.tar.gz (39.6 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.2.0-py3-none-any.whl (38.9 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for ytdlpx-0.2.0.tar.gz
Algorithm Hash digest
SHA256 35a62f19013657b00a6448c6e79a46b8ad6e7281cbc9127131b066883a96112c
MD5 d5563ac360ffdbdf8dd82c3fc6132270
BLAKE2b-256 ead5a83e092a4a9803a015948fda4404a109d8f287d33f7fd2e840abded0c524

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ytdlpx-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 38.9 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.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 aed306d17625b5ed0025a12d39ff2ef2c7c2b65752ce00bc42510793856a6db8
MD5 529b4a1935113463961701d60add703e
BLAKE2b-256 a59ae8bb285acb8f1c924fb8120e3aad2dd78f44674604de850ffd8643e56afd

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