Skip to main content
Logo

Yt-dlp Qt GUI

CI codecov Python PySide6 yt-dlp License Platform

A modern video download tool built with PySide6 and yt-dlp

[English] | 简体中文

FeaturesQuick StartFAQ


📖 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

Main Interface

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

  1. Clone the Repository

    git clone https://github.com/twn39/yt-dlp-qt-gui.git
    cd yt-dlp-gui
    
  2. Install Dependencies Recommended using uv:

    uv sync
    
  3. 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

📝 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!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. 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

Download files

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

Source Distribution

yt_dlp_qt_gui-0.2.0.tar.gz (368.1 kB view details)

Uploaded Source

Built Distribution

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

yt_dlp_qt_gui-0.2.0-py3-none-any.whl (364.1 kB view details)

Uploaded Python 3

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

Hashes for yt_dlp_qt_gui-0.2.0.tar.gz
Algorithm Hash digest
SHA256 bb2eaf92a2f67e87c1a769aacad7a549fd87fdee2807c466aee588dcb97cacbd
MD5 010fa0930e7bc6ac1a2581f7d6243d0e
BLAKE2b-256 47db59c998ab6e79d3208b5be3e6b86ea989b7c172976bfb12abb5ba5fe097ae

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yt_dlp_qt_gui-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f2863a77cfa16bc5807d79882dceb8473a75f83c529836e61122631361b8fe78
MD5 207902e3af8bd72b6273638845bc25eb
BLAKE2b-256 b99d00877e77ec0a7357a471e7d0c55e064c94629bb52efe8ee236731123be39

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 files

0.1.0

2 files

Supported by

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