A comprehensive toolkit for organizing photos, videos, and scans. Includes multiple tools for different organizational tasks, all accessible through a unified launcher.
- Sort files by date and camera model
- Support for photos (.HIF, .ARW, .JPG) and videos (.MP4, .MOV)
- Flexible organization options (by camera, by date, separate media types)
- Automatic camera model detection and database management
- Rename camera-generated folders (NNNYMMDD format)
- Convert to readable YYYY-MM-DD[_CameraModel] format
- Metadata extraction from folder contents
- Sanity checking for date consistency
- Fix 'UnknownCamera' references in filenames and folders
- Support for custom camera model names
- Bulk renaming operations
- Convert TIFF to LZW/DEFLATE compressed TIFF
- Convert TIFF to HEIC/HEIF format
- Epson FastFoto FF-680W workflow with automatic variant selection
- Intelligent quality-based selection between augmented (_a) and base files
- Metadata preservation (EXIF, ICC profiles)
- Lossless and lossy compression options
- Parallel processing for large batches
- Automatic organization into LZW_compressed/, HEIC/, and uncompressed/ folders
# Install Homebrew if needed
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Install required packages
brew install tcl-tk pyenv poetry
# Build Python with Tkinter support
export LDFLAGS="-L$(brew --prefix tcl-tk)/lib"
export CPPFLAGS="-I$(brew --prefix tcl-tk)/include"
export PKG_CONFIG_PATH="$(brew --prefix tcl-tk)/lib/pkgconfig"
pyenv install 3.12# Install build dependencies
sudo apt-get update && sudo apt-get install -y \
build-essential libssl-dev zlib1g-dev libbz2-dev \
libreadline-dev libsqlite3-dev curl git \
libncursesw5-dev xz-utils tk-dev libxml2-dev \
libxmlsec1-dev libffi-dev liblzma-dev libheif-dev
# Install pyenv
curl https://pyenv.run | bash
# Install Poetry
curl -sSL https://install.python-poetry.org | python3 -# 1. Check your system
make doctor
# 2. Complete setup
make setup
# 3. Run the application
make runmake help # Show all commands
make doctor # Check system dependencies
make setup # Install everything
make install # Install Python packages only
make run # Launch the application
make run-dev # Run in development mode
make clean # Clean virtual environment- macOS: Reinstall Python with tcl-tk support (see System Requirements)
- Linux: Install
tk-devpackage before building Python
Install Poetry: https://python-poetry.org/docs/#installation
You can also run:
poetry run photo-organizer
poetry run python -m photo_organizer.launcherStart the main launcher to access all tools:
make run
# Or directly:
python src/launcher.pyEach tool can be run independently:
# Photo & Video Organizer
python src/organizer/gui.py
# Folder Renamer
python src/renamer/folder_gui.py
# Batch Renamer
python src/renamer/batch_gui.py
# TIFF Converter
python src/converter/gui.pyphoto-organizer/
βββ src/
β βββ launcher.py # Main launcher GUI
β βββ shared/ # Common utilities
β β βββ metadata.py # EXIF/metadata extraction
β β βββ camera_models.py # Camera model database
β β βββ file_utils.py # File operations
β β βββ gui_utils.py # GUI utilities
β β βββ config.py # Application constants
β βββ organizer/ # Photo/video organizer
β β βββ core.py # Organization logic
β β βββ gui.py # Organizer GUI
β βββ renamer/ # Renaming tools
β β βββ batch_gui.py # Batch renamer
β β βββ folder_gui.py # Folder renamer
β βββ converter/ # TIFF converter
β β βββ core.py # Conversion logic
β β βββ gui.py # Converter GUI
β βββ data/
β βββ camera_models_seed.txt # Initial camera models
βββ tiff-to-heic/ # Original TIFF converter (preserved)
βββ pyproject.toml
βββ Makefile
βββ README.md
The application maintains a user-writable camera models database using appdirs for proper cross-platform support. The database is stored at:
- macOS:
~/Library/Application Support/photo_organizer/camera_models.txt - Linux:
~/.local/share/photo_organizer/camera_models.txt
New camera models are automatically added when detected during organization.
.HIF- High Efficiency Image Format.ARW- Sony RAW.JPG/.JPEG- JPEG images
.MP4- MPEG-4 video.MOV- QuickTime video.XML- Video metadata (Sony, GoPro).THM- Video thumbnails.LRV- Low-resolution video
.TIF/.TIFF- Tagged Image File Format- Multi-page TIFF support (detection)
- High bit-depth images (8-bit, 16-bit, 32-bit)
- Primary: macOS (tested on macOS 12+)
- Note: System Python on macOS may have limited tkinter support. For best results, use Python from python.org or Homebrew.
# Install Python with pyenv
make install-python
# Create Poetry environment
make create-env
# Install dependencies
make install
# Activate environment
source .venv/bin/activatemake clean- Sony a6700
- Sony a6400
- Sony a6300
- Sony RX100 VII
- GoPro Hero 8 Black
- iPhone 14 Pro Max
- Epson FastFoto FF-680W (with _a augmented and _b backside support)
- Epson Perfection V39 II
MIT License
- Ulises Chavarria
- TIFF converter inspired by Universal-Image-Converter