A modern, feature-rich GUI application to download videos and audio from YouTube. Built with Python and PyQt6, this tool offers a user-friendly experience for managing downloads, selecting quality, and handling playlists.
Note: This project is a GUI evolution of the CLI tool originally created by AswinOp.
- Modern GUI: Clean interface built with PyQt6.
- Smart Formatting: Choose between Video (MP4) or Audio (MP3) with a single click.
- Playlist Support: Paste a playlist link to batch download videos.
- Advanced Controls:
- Select Video Quality (360p, 720p, 1080p, Best).
- Rate Limiting.
- Subtitle & Metadata extraction.
- Portable Design: capable of self-extracting necessary dependencies (FFmpeg) on the fly.
To run this application from source or build it, you need Python 3.x and the following libraries:
pip install -r requirements.txtBecause GitHub has file size limits, the required FFmpeg archive is hosted externally. Follow these steps to build a standalone .exe file that includes FFmpeg.
git clone https://github.com/GameoCoder/yt-downloader.git
cd yt-downloaderTo make the application portable, you must download the compressed FFmpeg archive.
- Download archive.7z from Google Drive
- Place the
archive.7zfile directly into the root folder of the project (wheredownload_pyqt6.pyis located).
Why? This archive contains
ffmpeg.exe. The application is programmed to detect if FFmpeg is missing and automatically unzip this archive for the user on the first run.
Run the following command to create the executable. This bundles the script, the UI files, and the 7-Zip archive into a single file.
pyinstaller --noconfirm --onefile --windowed ^
--add-data "frame.ui;." ^
--add-data "advanced.ui;." ^
--add-data "archive.7z;." ^
download_pyqt6.py(Note: If you are on MacOS/Linux, replace the ^ with \ and ; with : in the command above).
The final executable will be located in the dist/ folder.
If you prefer to run the Python script directly without building an EXE:
- Ensure you have
ffmpeginstalled on your system OR place thearchive.7z(linked above) in the project folder. - Run the script:
python download_pyqt6.py
- Paste URL: Copy a YouTube video or playlist URL and click "Paste".
- Search: Click search to validate the link and fetch metadata.
- Download:
- For Single Videos: Click "Download".
- For Playlists: A table will appear. Select the tracks you want, toggle between Audio/Video for specific tracks, and click "Download Selected".
- Advanced Options: Click the generic settings icon (Tool Button) to adjust resolution caps, retries, or rate limits.
This project is licensed under the MIT License - see the LICENSE file for details.
Feel free to submit issues or pull requests. Special thanks to AswinOp for the original CLI logic.