A modern graphical interface for downloading YouTube videos and audio using yt-dlp and CustomTkinter.
Built in Python with a modular architecture and currently in a stable phase.
yay -S yt-dlp-linux-guiStable
The application currently:
- Downloads videos in MP4 format
- Downloads audio in MP3 format
- Allows custom download directory selection
- Sends system notifications
- Handles resource paths correctly in development
ytdlp_gui/
│
├── core/
│ └── downloader.py
│
├── gui/
│ ├── ui.py
│ └── utils.py
│
├── img/
├── fonts/
│
└── YTDLP.py- core/ → Download logic (yt-dlp integration)
- gui/ → Graphical interface and utilities
- img / fonts/ → Static resources used by the UI
Instead of installing dependencies manually, simply run:
chmod +x setup.sh
./setup.sh The setup script will automatically install all required dependencies and prepare the project.
PowerShell:
.\setup.ps1If PowerShell blocks scripts:
powershell -ExecutionPolicy Bypass -File .\setup.ps1CMD:
setup.cmdAfter running the setup script:
python ytdlp_gui/YTDLP.py - Modern dark-mode UI (CustomTkinter)
- MP3 extraction using FFmpeg
- Automatic download directory creation
- Input validation before download
- System notifications for download status
- Clean separation between UI and core logic
- The
Downloaderclass dynamically configures yt-dlp options. - Audio mode uses FFmpeg post-processing.
- The UI validates fields before starting downloads.
- A smart
resource_path()function ensures proper asset loading.
- yt-dlp
- customtkinter
- pillow
- plyer
(All installed automatically via setup.sh.)
- Real-time download progress bar
- Playlist support
- Persistent configuration
- Additional format options
Developed by RgeditV1 and RowanDavitt