Yt-dlp Qt GUI
A modern video download tool built with PySide6 and yt-dlp
[English] | 简体中文
Features • Quick Start • FAQ
📖 Introduction
Yt-dlp Qt GUI is a lightweight, modern, cross-platform video download tool built on the powerful yt-dlp core and the elegant PySide6 framework. It provides a user-friendly graphical interface, making it simple and efficient to download content from thousands of video sites like YouTube, Bilibili, Vimeo, and more.
🎯 Key Advantages
- 🚀 High Performance: Utilizes a multi-threaded architecture; download tasks run in the background, keeping the UI smooth and responsive.
- 🎨 Modern Design: Carefully crafted dark theme interface for a comfortable visual experience.
- 🔧 Highly Configurable: Rich format presets and custom options to meet various needs.
- 🛡️ Stable & Reliable: Robust error handling and retry mechanisms ensure tasks are completed.
- 🌐 Network Friendly: Built-in proxy support to easily handle network restrictions.
✨ Features
🎬 Downloading
- Multi-platform Support: Powered by
yt-dlp, supporting thousands of sites including YouTube, Bilibili, Vimeo, Twitter, etc. - Smart Format Selection: Built-in presets for Best Quality, 4K, 1080p, 720p, and Audio-only downloads.
- Automatic Merging: Automatically downloads the best video and audio streams and merges them into MP4 using FFmpeg.
- Resume Support: Supports resuming interrupted downloads to save time and bandwidth.
📊 Progress & Status
- Real-time Progress: Detailed progress bars showing exact percentages.
- Speed Monitoring: Real-time download speed display.
- ETA Prediction: Smart calculation of estimated remaining time.
- Detailed Logs: Complete download logs for troubleshooting and tracking.
⚙️ Advanced Features
- Proxy Support: Built-in HTTP/SOCKS proxy configuration.
- Multi-threaded: Independent background threads for downloads.
- Task Cancellation: Gracefully cancel downloads at any time.
- Custom Save Path: Flexible directory selection (defaults to system Downloads folder).
- Retry Mechanism: Automatic retries (up to 10 times) to improve success rates.
📸 Preview
Modern dark theme interface for a clean download experience
🚀 Quick Start
Prerequisites
- Python 3.12 or higher
- uv (Recommended package manager)
- FFmpeg (Required for merging; ensure it's in your system PATH)
Installation
-
Clone the Repository
git clone https://github.com/twn39/yt-dlp-qt-gui.git cd yt-dlp-gui
-
Install Dependencies Recommended using
uv:uv sync -
Run the Application
Multiple ways to start:
Option 1: Using CLI (Recommended)
uv run yt-dlp-qt-gui
Check version:
uv run yt-dlp-qt-gui --version
Help info:
uv run yt-dlp-qt-gui --help
📦 Packaging
Install Packaging Dependencies
uv sync --extra packaging
Build Executable
# Using build script (Recommended)
uv run python build.py
# Or using PyInstaller directly
uv run pyinstaller --clean yt-dlp-qt-gui.spec
The executable will be located in the dist/ directory.
Cross-platform
- Windows: Build on Windows for
.exe - macOS: Build on macOS for app/executable
- Linux: Build on Linux for executable
🧪 Testing
Running Tests
This project uses pytest for testing with pytest-qt for Qt-specific tests.
# Run all tests
uv run pytest
# Run tests with coverage
uv run pytest --cov=src/yt_dlp_gui --cov-report=html
# Run specific test file
uv run pytest tests/test_main_window.py
# Run with verbose output
uv run pytest -v
# Run specific test
uv run pytest tests/test_main_window.py::test_main_window_init
🛠️ Tech Stack
- GUI Framework: PySide6 (Qt for Python)
- Engine: yt-dlp
- Icons: QtAwesome
- CLI: Click
- Packaging: PyInstaller
- Package Manager: uv
📝 FAQ
Q: What if a download fails?
A: Please check:
- URL is correct and accessible.
- Network connection is stable.
- Try using a proxy if there are regional restrictions.
- Check logs for specific error details.
Q: Is FFmpeg mandatory?
A: Yes. FFmpeg is used to merge video and audio. Without it, some formats may not download correctly.
🤝 Contributing
Contributions, issues, and feature requests are welcome!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
📄 License
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.
🙏 Acknowledgments
📮 Contact
- Open an Issue
- Submit a Pull Request
Metadata
Release files for yt-dlp-qt-gui 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| yt_dlp_qt_gui-0.2.0.tar.gz | 368.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| yt_dlp_qt_gui-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 732.2 kB
Release files / yt_dlp_qt_gui-0.2.0.tar.gz
| Download URL | yt_dlp_qt_gui-0.2.0.tar.gz |
|---|---|
| Size | 368.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
bb2eaf92a2f67e87c1a769aacad7a549fd87fdee2807c466aee588dcb97cacbd
|
|
BLAKE2b-256 checksum How to use checksums |
47db59c998ab6e79d3208b5be3e6b86ea989b7c172976bfb12abb5ba5fe097ae
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.8.17
|
Release files / yt_dlp_qt_gui-0.2.0-py3-none-any.whl
| Download URL | yt_dlp_qt_gui-0.2.0-py3-none-any.whl |
|---|---|
| Size | 364.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f2863a77cfa16bc5807d79882dceb8473a75f83c529836e61122631361b8fe78
|
|
BLAKE2b-256 checksum How to use checksums |
b99d00877e77ec0a7357a471e7d0c55e064c94629bb52efe8ee236731123be39
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.8.17
|