A powerful desktop application for downloading and processing media from various online sources with browser integration, drag-and-drop support, and comprehensive FFMPEG processing capabilities.
- Multi-source Media Download: Support for YouTube, Vimeo, SoundCloud, and many other platforms via yt-dlp
- FFMPEG Integration: Complete media processing with format conversion, audio extraction, and quality optimization
- Drag & Drop Interface: Simply drag URLs or files into the application
- Queue Management: Process multiple media files simultaneously with progress tracking
- Browser Integration: Chrome extension and protocol handler for seamless web-to-desktop workflow
- Format Conversion: Convert between video formats (MP4, MKV, AVI, WebM) and audio formats (MP3, WAV, FLAC, AAC)
- Quality Control: Customizable video/audio quality settings
- Batch Processing: Handle multiple downloads and conversions concurrently
- Progress Monitoring: Real-time progress tracking for all operations
- Configurable Settings: Extensive customization options for downloads and processing
- Python 3.7 or higher
- FFMPEG (for media processing)
- yt-dlp (automatically installed)
-
Clone or download the application
git clone <repository-url> cd media-processor
-
Install Python dependencies
pip install yt-dlp
-
Install FFMPEG
- Windows: Download from https://ffmpeg.org/download.html
- macOS:
brew install ffmpeg - Linux:
sudo apt install ffmpeg(Ubuntu/Debian) or equivalent
-
Run the application
python main.py
-
Launch the application
- Run
python main.py - The main window will open with URL input, drag-drop area, and processing queue
- Run
-
Add media for processing
- Method 1: Paste URLs in the input field and click "Add URL"
- Method 2: Drag and drop URLs or local files onto the gray drop area
- Method 3: Use "Add Files" button to select local media files
- Method 4: Use browser integration (see Browser Integration section)
-
Monitor progress
- View processing status in the queue table
- Track download/conversion progress in real-time
- Check output files location
-
Install the extension
- Open Chrome and go to
chrome://extensions/ - Enable "Developer mode"
- Click "Load unpacked" and select the
browserfolder
- Open Chrome and go to
-
Use the extension
- Click the Media Processor icon in the toolbar on any media page
- Right-click on pages and select "Send to Media Processor"
- The extension automatically detects media-rich pages
The application registers a custom protocol (mediaprocessor://) for browser integration:
- Windows: Automatic registration (may require running as Administrator first)
- macOS: Creates necessary protocol handler files
- Linux: Creates .desktop file and registers with xdg-mime
Use the provided bookmark.html file:
- Open
browser/bookmark.htmlin your browser - Bookmark the page or drag the bookmarklet to your bookmarks bar
- Use the bookmark on any media page to send URLs to the application
Access settings through the Settings dialog:
- Output Directory: Where downloaded files are stored
- Video Quality: Choose from best, 720p, 480p, 360p, etc.
- Audio Quality: Select audio bitrate (best, 320k, 256k, etc.)
- Audio Extraction: Extract audio-only from videos
- Subtitle Embedding: Include subtitles in downloads
- FFMPEG Path: Custom path to FFMPEG executable
- Concurrent Downloads: Maximum simultaneous downloads (1-8)
- Auto-processing: Automatically process downloaded files
- Delete Originals: Remove source files after processing
- Output Directory: Where processed files are saved
- File Naming: Customize output file naming pattern
- Default Formats: Set preferred video and audio formats
The application supports hundreds of sites through yt-dlp, including:
- YouTube
- Vimeo
- SoundCloud
- Twitch
- Facebook Video
- TikTok
- Twitter/X
- Dailymotion
- And many more...
- Video: MP4, AVI, MKV, MOV, WebM, FLV, and more
- Audio: MP3, WAV, FLAC, AAC, OGG, M4A, and more
- URLs: Any URL supported by yt-dlp
- Video: MP4, MKV, AVI, WebM
- Audio: MP3, WAV, FLAC, AAC, OGG
You can specify custom processing options through the settings or by modifying the configuration:
- Video codec selection
- Audio codec selection
- Bitrate control
- Resolution scaling
- Custom filters
The application supports processing multiple files simultaneously:
- Add multiple URLs or files to the queue
- Set maximum concurrent processing in settings
- Monitor all operations in the queue view
The application can handle protocol URLs from command line:
python main.py --protocol-url "mediaprocessor://https://youtube.com/watch?v=..."- MediaProcessor: Main orchestrator for downloads and processing
- MediaDownloader: yt-dlp wrapper for media downloading
- FFMPEGWrapper: FFMPEG integration for media processing
- QueueManager: Handles processing queue and threading
- ConfigManager: Application settings and preferences
- MainWindow: Primary application interface
- DragDropMixin: Cross-platform drag-and-drop support
- SettingsDialog: Configuration interface
- Chrome Extension: Complete Manifest V3 extension
- Protocol Handler: System-level protocol registration
- Bookmark Interface: HTML-based URL submission
The application stores configuration in ~/.media_processor/:
config.ini: User settings and preferenceslogs/: Application logs with rotation- Platform-specific protocol handler files
-
FFMPEG not found
- Install FFMPEG and ensure it's in your system PATH
- Or specify custom FFMPEG path in settings
-
Protocol handler not working
- On Windows: Run application as Administrator once
- Restart browser after first setup
- Check that Media Processor is running
-
Download failures
- Check internet connection
- Some sites may require specific yt-dlp options
- Verify URL is supported
-
Permission errors
- Check write permissions for output directories
- Ensure antivirus isn't blocking the application
Check application logs in ~/.media_processor/logs/ for detailed error information.
media-processor/
├── main.py # Application entry point
├── core/ # Core processing logic
│ ├── processor.py
│ ├── downloader.py
│ ├── ffmpeg_wrapper.py
│ └── config_manager.py
├── gui/ # GUI components
│ ├── main_window.py
│ ├── queue_manager.py
│ ├── settings_dialog.py
│ └── drag_drop.py
├── utils/ # Utility functions
│ ├── logger.py
│ └── protocol_handler.py
├── browser/ # Browser integration
│ ├── manifest.json
│ ├── background.js
│ ├── popup.html
│ ├── popup.js
│ ├── content.js
│ └── bookmark.html
└── config/ # Configuration files
└── default_settings.ini
- Core functionality goes in the
core/directory - GUI components in
gui/directory - Utilities and helpers in
utils/ - Browser integration in
browser/
This project is provided as-is for educational and personal use.
For issues or questions:
- Check the troubleshooting section
- Review application logs
- Verify all dependencies are installed correctly
Note: This application is designed for personal use. Please respect copyright laws and terms of service of the platforms you're downloading from.