A modern GUI application for manually sorting media files from source folders to destination folders with real-time preview.
SortMyMedia is a simple yet powerful tool for organizing your media files. Instead of automatic sorting, it lets you manually preview and categorize each file with a single click or keypress.
- Images: PNG, JPG, JPEG, GIF, BMP, WebP - automatic scaling to fit viewport
- Videos: MP4, WebM, MOV, AVI, MKV, FLV - with built-in player controls
- PDFs: First page preview using PyMuPDF
Assign custom keyboard and mouse shortcuts to any destination folder for lightning-fast sorting.
- Navigation: Previous/Next file
- Undo: Revert last sort
- Destinations: Assign any key
- Save configurations: Store your folder selections with custom names
- Load configurations: Quick switch between saved setups
- Import/Export: Share configurations as YAML files
- Configurations stored in
~/.sortmymedia/configs/
# Clone the repository
git clone https://github.com/pinzauti/SortMyMedia.git
cd SortMyMedia
# Create virtual environment (recommended)
python3 -m venv venv
source venv/bin/activate # Linux/macOS
# venv\Scripts\activate # Windows
# Install dependencies
pip install -r requirements.txtpython -m src.main-
Configure Folders
- Click + Add Source to select source folder(s) containing your media files
- Click + Add Destination to select destination folder(s)
- Use ⚙️ Config to save, load, or manage configurations (optional)
-
Set Keybindings (Optional)
- Click ⌨️ Keys to open the keybindings dialog
- Click on any field and press a key or mouse button to assign it
- Warning labels show duplicate keybindings
-
Start Sorting
- Click Start Sorting
- Files are displayed one at a time
- Click a destination button (or press its key) to move the current file
- Use ◀ / ▶ buttons (or Left/Right keys) to navigate
- Press ↩ (or Z) to undo the last sort
-
Return to Setup
- Click ← Config in the header to change folders or configurations
- Save: Store current setup with a custom name
- Load: Switch between saved configurations
- Rename/Delete: Manage your saved configurations
- Export: Save configuration to a YAML file
- Import: Load configuration from external YAML file
| Action | Default Key |
|---|---|
| Previous file | Left Arrow |
| Next file | Right Arrow |
| Undo last sort | Z |
Additional keybindings can be assigned to destination folders in the keybindings dialog.
| Package | Required | Purpose |
|---|---|---|
| Python | 3.10+ | Runtime |
| PyQt6 | Yes | GUI Framework |
| Pillow | Recommended | Image preview |
| PyMuPDF | Recommended | PDF preview |
| PyYAML | Yes | Config storage |
MIT License



