oheyek/VidGrabber
Desktop application for downloading and processing YouTube content
VidGrabber
A powerful desktop application for downloading and processing YouTube content with an intuitive interface.
โจ Features
- Multi-Format Downloads: Download videos (MP4), audio (MP3/WAV), thumbnails (JPG), and tags (CSV).
- Quality Selection: Choose from available video qualities (144p to 2160p) with automatic detection.
- Queue Management: Add multiple downloads to queue and process them in batch (up to 5 concurrent downloads).
- Smart Path Management: Customize download locations for each file type with persistent settings.
- Theme Customization: Switch between Dark, Light, and System themes.
- Tag Extraction: Extract video tags and copy them directly to clipboard.
- Cross-Platform: Works seamlessly on Windows, macOS, and Linux.
- Auto-Updates: Automatically downloads and updates yt-dlp and ffmpeg binaries.
- Progress Tracking: Real-time download progress with visual indicators.
๐ ๏ธ Installation
Using the Pre-built Release
- Download the appropriate executable for your platform from
the Releases page:- Windows:
VidGrabber.exe - macOS:
VidGrabber-macOS.zip - Linux:
VidGrabber-Linux.tar.gz
- Windows:
- Extract the archive (if applicable).
- On first launch, the app will automatically download required binaries (yt-dlp and ffmpeg)
๐ง Linux & ๐ macOS Notes
Linux Users:
Download the .tar.gz file, extract it, and run the binary inside. No installation required.
tar -xzf VidGrabber-Linux.tar.gz
./VidGrabbermacOS Users:
If you receive a message that the app is "damaged" or "cannot be opened" (Gatekeeper error), run the following command
in Terminal to allow execution:
xattr -cr /path/to/VidGrabber.appRunning from Source
# Clone the repository
git clone https://github.com/oheyek/VidGrabber.git
cd VidGrabber
# Install dependencies
pip install -r requirements.txt
# Run the application
python main.py๐ฏ Usage
Basic Download
- Paste a YouTube link into the input field.
- Click "๐ Grab video" to fetch video information.
- Select your desired download option:
- ๐ผ๏ธ Download thumbnail (JPG) - Get the video thumbnail
- ๐ต Download MP3/WAV - Extract audio only
- ๐ฌ Download MP4 - Download video (select quality)
- ๐ท๏ธ Tags (CSV + Clipboard) - Extract video tags
Queue Management
- Click "๐ Queue Manager" to open the queue window.
- When fetching video info, choose "โ Add to Queue" instead of immediate download.
- Add multiple items to the queue (max 5 per category).
- Click "
โถ๏ธ Download All" to process all queued downloads. - Use "๐๏ธ Clear All" to remove all items from queue.
Customizing Settings
- Click "โ๏ธ Settings" button.
- Appearance Tab: Choose between Dark, Light, or System theme.
- Downloads Tab: Set custom download paths for each file type (MP4, MP3, WAV, JPG, Tags).
- Credits Tab: View app information and support links.
๐ Available Downloads
| Type | Format | Description |
|---|---|---|
| Video | MP4 | Download in multiple qualities (144p-2160p) |
| Audio | MP3 | Extract audio with 192K bitrate |
| Audio | WAV | Extract high-quality uncompressed audio |
| Thumbnail | JPG | Download video thumbnail image |
| Tags | CSV | Extract video tags to CSV and clipboard |
๐ง Technical Details
- Language: Python 3
- GUI Framework: CustomTkinter 5.2.2
- Download Engine: yt-dlp (auto-updated)
- Media Processing: ffmpeg (auto-downloaded)
- Async Support: asyncio for non-blocking operations
- Clipboard: pyperclip for tag copying
- Logging: Comprehensive logging system for debugging
Key Dependencies
customtkinter==5.2.2
pyperclip==1.11.0
pillow==12.0.0
pytest==8.4.2
pytest-asyncio==1.2.0
๐๏ธ Building from Source
Windows
pyinstaller win.specmacOS
pyinstaller macos.specLinux
pyinstaller linux.specThe built executables will be located in the dist/ directory.
๐๏ธ Project Structure
VidGrabber/
โโโ main.py # Application entry point
โโโ src/
โ โโโ downloader.py # Video/audio download logic
โ โโโ video_info.py # YouTube video information fetcher
โ โโโ thumbnail_downloader.py # Thumbnail download handler
โ โโโ tag_extractor.py # Tag extraction and CSV export
โ โโโ path_manager.py # Download path management
โ โโโ logger.py # Logging functionality
โ โโโ updater.py # Binary updater (yt-dlp, ffmpeg)
โ โโโ queue/
โ โ โโโ download_queue.py # Queue management system
โ โโโ ui/
โ โโโ interface.py # Main application UI
โ โโโ queue_window.py # Queue manager window
โ โโโ themes/
โ โ โโโ basalt.json # Custom theme
โ โโโ icons/
โ โโโ icon.ico # Windows icon
โ โโโ icon.icns # macOS icon
โ โโโ icon.png # Linux icon
โโโ tests/ # Unit tests
โ โโโ conftest.py # Pytest configuration
โ โโโ test_downloader.py # Downloader tests
โ โโโ test_video_info.py # Video info tests
โ โโโ test_thumbnail_downloader.py
โ โโโ test_tag_extractor.py
โ โโโ test_download_queue.py
โโโ requirements.txt # Python dependencies
โโโ win.spec # PyInstaller config for Windows
โโโ macos.spec # PyInstaller config for macOS
โโโ linux.spec # PyInstaller config for Linux
โโโ Doxyfile # Documentation configuration
โโโ README.md # This file
๐งช Testing
The project includes comprehensive unit tests for all core functionality.
Running Tests
# Install test dependencies
pip install pytest pytest-asyncio
# Run all tests
pytest
# Run specific test file
pytest tests/test_downloader.py
# Run with verbose output
pytest -v
# Run with coverage
pytest --cov=src tests/Test Coverage
- Video Download Tests: URL validation, quality selection, error handling
- Audio Download Tests: MP3/WAV format validation, invalid input handling
- Thumbnail Tests: Download validation, error cases
- Tag Extraction Tests: CSV generation, clipboard copying
- Queue Management Tests: Adding items, queue limits, batch processing
- Video Info Tests: URL cleaning, metadata extraction
๐ค Contributions
Contributions are welcome! Here's how you can help:
- Fork the repository
- Create a new feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
๐ License
This project is open source and available under the MIT License.
Happy Downloading! ๐
Author
If you find this project useful, consider buying me a coffee! โ
