A powerful desktop application for downloading YouTube videos with an intuitive GUI interface
Features β’ Installation β’ Usage β’ Configuration β’ Contributing
YouTube Video Downloader is a versatile Python application that combines the power of yt-dlp with modern graphical and command-line interfaces. Download individual videos, entire playlists, or use batch mode with both GUI and CLI modes for maximum flexibility.
- π¨ Modern GUI Interface - Intuitive PyQt5/PyQt6 desktop application
- πΉ Multiple Download Modes - Single video, playlist, or batch downloading
- π¬ Format Selection - Choose video formats (MP4) or audio extraction (MP3)
- π Quality Options - Select from best, medium, or lowest quality
- π Batch Downloading - Process multiple URLs from
links.txt - π File Management - View, refresh, and delete downloaded files directly from the app
- βοΈ Dark Mode - Easy-on-the-eyes dark theme
- π Cross-platform - Works on Windows, macOS, and Linux
- π Fast and Reliable - Powered by yt-dlp with automatic error handling
- π Progress Tracking - Real-time download progress and status updates
- π οΈ Customizable Settings - Configure download location and preferences via GUI
π No Python installation needed! Just download and run!
π Download Latest Release π
Simply download YouTube_Downloader.exe and run it. That's it!
- Go to Releases
- Download
YouTube_Downloader.exefrom the latest release - Run the executable
- Done! No dependencies needed
Automatic Updates:
- Download
update.batto the same folder asYouTube_Downloader.exe - Run
update.batto check for and install updates - The script will automatically:
- Check GitHub for new versions
- Download the latest version
- Back up the old version
- Install the new version
- Launch the app
- Python 3.13+
- pip (Python package manager)
- FFmpeg (required for audio conversion and video processing)
Windows:
Download from FFmpeg Builds or use Chocolatey:
choco install ffmpegVerify installation: ffmpeg -version
macOS:
brew install ffmpegLinux (Ubuntu/Debian):
sudo apt update
sudo apt install ffmpeg-
Clone the repository
git clone https://github.com/TAskMAster339/YouTube_video_downloader.git cd YouTube_video_downloader -
Create a virtual environment (recommended)
# Windows python -m venv venv venv\Scripts\activate # macOS/Linux python3 -m venv venv source venv/bin/activate
-
Install dependencies
pip install -r requirements.txt
Key Dependencies:
yt-dlp- YouTube video downloaderPyQt5orPyQt6- GUI frameworkpytest- Testing frameworkpytest-mock- Mocking library for tests
-
Prepare your links file
Create or edit the
links.txtfile in the project directory and add YouTube URLs. You can separate them with:- Newlines (one URL per line)
- Spaces (multiple URLs on one line)
Example 1 - Newline-separated:
https://www.youtube.com/watch?v=dQw4w9WgXcQ https://www.youtube.com/watch?v=9bZkp7q19f0 https://www.youtube.com/watch?v=kJQP7kiw5FkExample 2 - Space-separated:
https://www.youtube.com/watch?v=dQw4w9WgXcQ https://www.youtube.com/watch?v=9bZkp7q19f0 -
Run the script
Choose the appropriate command for your operating system:
Windows:
py main.py
macOS:
python main.py
Linux:
python3 main.py
-
Find your videos
Downloaded videos will be saved in the
result/directory.
# Windows
py src/app.py
# macOS/Linux
python3 src/app.py- Drag & Drop URLs: Paste YouTube links into the drop area
- Select Format: Choose between MP4 (video) or MP3 (audio)
- Select Quality: Choose quality tier (1080p, 720p, 480p)
- Download: Click "Download All" to start
- Progress Tracking: See real-time progress for each video
- Folder Selection: Change download location anytime
- File Management: View and delete downloaded files
-
Single Video:
- Paste a YouTube video URL into the input field
- Select format (MP4 or MP3) and quality
- Click "Download Video" or "Download Audio"
- Monitor progress in the progress bar
-
Playlist:
- Paste a YouTube playlist URL
- Select format and quality
- Click "Download Video" or "Download Audio"
- App downloads all videos sequentially
-
Batch Processing:
- Fill
links.txtwith multiple URLs (one per line or space-separated) - Click "Batch Download"
- App processes all URLs and clears the file upon completion
- Fill
The project automatically checks for yt-dlp updates and creates new releases on GitHub.
- Check the Releases page regularly
- Or use
ΠΠ±Π½ΠΎΠ²ΠΈΡΡ(ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅).batscript to auto-update
- Updates are triggered automatically when new yt-dlp versions are released
- GitHub Actions workflow handles building and releasing
YouTube_Video_Downloader/
βββ src/
β βββ app.py # gui application
β βββ local.py # local yt-dlp usage
β βββ main.py # Main script
βββ tests/ # Tests dir
βββ links.txt # Input file with video URLs
βββ result/ # Downloaded videos directory
βββ requirements.txt # Python dependencies
βββ README.md # This file
You can modify the download settings by editing main.py. Common options include:
- Video quality - Choose resolution (e.g., 1080p, 720p, best)
- Audio only - Extract audio instead of video
- Subtitles - Download subtitles automatically
- Playlist support - Download entire playlists
Example configuration (in main.py):
ydl_opts = {
'format': 'bestvideo+bestaudio/best', # Best quality
'outtmpl': 'result/%(title)s.%(ext)s', # Output template
'quiet': False, # Show progress
}- Some videos have geographic restrictions
- Some videos are age-restricted or private
- Update yt-dlp to the latest version
- Check your internet connection
- Try a different video
- Update yt-dlp:
pip install --upgrade yt-dlp
- YouTube might have changed their format
- This usually resolves itself when yt-dlp is updated
- Make sure FFmpeg is installed
- Add FFmpeg to your system PATH
Contributions are welcome! Here's how you can help:
- Fork the repository
- Create a 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
# Clone your fork
git clone https://github.com/YOUR_USERNAME/YouTube_Video_Downloader.git
# Create a virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install development dependencies
pip install -r requirements.txt
pip install pytest pytest-mock # For testingpytest tests/This project is licensed under the MIT License - see the LICENSE file for details.
This tool is for educational and personal use only. Please respect YouTube's Terms of Service and copyright laws.
Do NOT use this tool to:
- Download copyrighted content without permission
- Violate YouTube's Terms of Service
- Redistribute downloaded content without permission
Always ensure you have the right to download and use any content.
- yt-dlp - The amazing library that makes this possible
- PyQt5 - For the GUI framework
- FFmpeg - For media processing
- All contributors who have helped improve this project
- GitHub Issues: Report bugs or request features
- GitHub Discussions: Ask questions or discuss ideas
If you find this project helpful, please consider:
- β Giving it a star on GitHub
- π Reporting bugs or suggesting improvements
- π€ Contributing code or documentation
Last Updated: October 25, 2025
β If you find this project useful, please consider giving it a star!
Made with β€οΈ by TAskMAster339