A Python application that automatically organizes your photos and videos into date-based folder structures using metadata analysis. Built with PyQt6 for a modern, user-friendly interface.
- Python 3.10 or higher
- Windows OS (tested on Windows 11)
Download the latest release from the Releases page and run the installer.
Building from Source
-
Install PyInstaller
pip install pyinstaller
-
Create executable
cd ./Distribution pyinstaller gui.py.spec
Building from Source
-
Install PyInstaller
pip install pyinstaller
-
Create executable
pyinstaller gui.py.spec
-
Clone the repository
git clone https://github.com/yourusername/PhotoOrganizer.git cd PhotoOrganizer -
Install dependencies
pip install -r requirements.txt
-
Run the application
python src/gui.py
- Launch the Application: Run
src/gui.pyor use the installed executable - Select Source Folder: Choose the folder containing your photos/videos
- Select Destination Folder: Choose where organized files should be placed
- Configure Options:
- Sort into subfolders by day: Creates YYYY/MM/DD structure instead of YYYY/MM
- Remove empty folders after sorting: Cleans up empty directories
- Start Sorting: Click "Start Sorting" and monitor progress
- ALWAYS Backup Your Files: Always maintain backups before processing large photo collections
- File Safety: Existing files with identical names are skipped (not overwritten)
Destination Folder/
├── 2023/
│ ├── 01/
│ │ ├── 15/ (if "Sort by day" enabled)
│ │ │ ├── IMG_001.jpg
│ │ │ └── VID_002.mp4
│ │ └── 20/
│ └── 02/
└── 2024/
└── 03/
- Primary:
DateTimeOriginal(EXIF tag 36867 in Sub-IFD) - Fallback:
DateTime(EXIF tag 306) - Formats: JPG, JPEG, PNG, TIFF, TIF, WebP, HEIC, HEIF, CR2, ARW, DNG, AVIF
- Primary:
recorded_date - Fallback:
encoded_date,tagged_date,file_last_modification_date - Formats: MP4, AVI, MOV, MKV (using PyMediaInfo for metadata extraction)
Contributions are welcome! Please feel free to submit a issue to discuss what you would like to change.
src/PhotoOrganizer_v3.py: Main processing engine with metadata extractionsrc/gui.py: PyQt6 GUI application with threading supportassets/MainWindow.py: Main window UI componentsassets/ProgressWindow.py: Progress tracking dialog