现代化视频下载工具,基于 yt-dlp 和 PySide6
Project description
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file yt_dlp_qt_gui-0.2.0.tar.gz.
File metadata
- Download URL: yt_dlp_qt_gui-0.2.0.tar.gz
- Upload date:
- Size: 368.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.17
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bb2eaf92a2f67e87c1a769aacad7a549fd87fdee2807c466aee588dcb97cacbd
|
|
| MD5 |
010fa0930e7bc6ac1a2581f7d6243d0e
|
|
| BLAKE2b-256 |
47db59c998ab6e79d3208b5be3e6b86ea989b7c172976bfb12abb5ba5fe097ae
|
File details
Details for the file yt_dlp_qt_gui-0.2.0-py3-none-any.whl.
File metadata
- Download URL: yt_dlp_qt_gui-0.2.0-py3-none-any.whl
- Upload date:
- Size: 364.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.17
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f2863a77cfa16bc5807d79882dceb8473a75f83c529836e61122631361b8fe78
|
|
| MD5 |
207902e3af8bd72b6273638845bc25eb
|
|
| BLAKE2b-256 |
b99d00877e77ec0a7357a471e7d0c55e064c94629bb52efe8ee236731123be39
|