VidFetch is a powerful, cross-platform media downloader built with Python and PyQt6. It provides a modern graphical interface for yt-dlp, enabling users to download high-quality videos, audio, and playlists from YouTube, Vimeo, SoundCloud, and hundreds of other sites.
Designed with performance in mind, VidFetch features a robust asynchronous queue system, allowing for efficient parallel downloads without freezing the interface.
- Multi-Platform: Supports YouTube, Vimeo, Dailymotion, Twitch, SoundCloud, and 1000+ others.
- Formats: Download videos in 4K/1080p or extract audio directly to MP3.
- Playlists: Batch download entire playlists or channels with a single click.
- Async Queue: Robust
asyncio-based task manager processes downloads in the background. - Parallel Processing: Configure multiple concurrent downloads to maximize bandwidth.
- Smart Controls: Pause, Resume, or Cancel tasks instantly.
- System Tray: Minimize the app to the tray and let it work silently in the background.
- History Log: Built-in SQLite database keeps track of all your downloads.
- Searchable History: Quickly find past downloads by title or URL.
- Subtitles & Thumbnails: Option to auto-download subtitles and video thumbnails.
- Format Conversion: Integrated FFmpeg support for reliable media conversion.
- Python 3.10 or higher
- FFmpeg (Required for audio extraction and format merging)
-
Clone the repository:
git clone https://github.com/doshibadev/vidfetch.git cd vidfetch -
Create a virtual environment (Recommended):
python -m venv .venv # Windows .venv\Scripts\activate # macOS/Linux source .venv/bin/activate
-
Install dependencies:
pip install -r requirements.txt
-
Run the application:
python src/main.py
VidFetch demonstrates a modern Python desktop application architecture:
- GUI Framework:
PyQt6for a native, responsive user interface. - Core Logic:
src/core/queue_manager.pyimplements a customQObjectwrapper around anasyncioevent loop, bridging the gap between Qt's signal/slot mechanism and Python's async capabilities. - Backend: Wraps
yt-dlpfor reliable media extraction. - Persistence: Uses
sqlite3for transactional history storage and JSON for user configuration.
Contributions are welcome! Please feel free to submit a Pull Request.
- 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
Distributed under the MIT License. See LICENSE for more information.
Disclaimer: This tool is for educational purposes only. Please respect the copyright and terms of service of the websites you download from.
