A bulk EXIF data tagging tool for analog / film photography.
-
Install Python 3.11 or higher
-
Install EXIFTool (and curl for downloading EXIFizer) https://exiftool.org/
brew install exiftool curl || sudo dnf install -y perl-Image-ExifTool curl || sudo apt-get install -y libimage-exiftool-perl curl -
Ensure you have a
~/.ExifTool_configfilecurl -sLo ~/.ExifTool_config https://raw.githubusercontent.com/toozej/EXIFizer/main/.ExifTool_config
-
Install uv: https://docs.astral.sh/uv/getting-started/installation/
-
Clone the repository and install:
git clone https://github.com/toozej/EXIFizer.git cd EXIFizer uv sync
curl -sLo ~/bin/exifizer https://raw.githubusercontent.com/toozej/EXIFizer/main/exifizer.py
chmod +x ~/bin/exifizer
-
Put a file
film_manifest.mdin a known location. Seeexample_input_film_manifest.mdfor an example -
Organize your images directories in one of two ways:
- Directory name:
0000XXXX/where XXXX is a 4-digit RollNum Image name:0000XXXX000YY.jpgwhere XXXX is a 4-digit RollNum, and YY is a zero-padded PhotoNum (1-36ish) - Directory name:
roll_XXXXwhere XXXX is a 4-digit RollNum Image name:XXXX_YY.tifwhere XXXX is a 4-digit RollNum, and YY is a non-zero-padded PhotoNum (1-36ish)
- Directory name:
-
Run EXIFizer against a directory of images with a film manifest file:
Using uv:
uv run exifizer --film-manifest path/to/film_manifest.md --images-dir path/to/dir/of/images/Using direct script:
python3 exifizer.py --film-manifest path/to/film_manifest.md --images-dir path/to/dir/of/images/
Run checks and tests locally:
make local-run
Or manually:
uv sync --all-groups
make pre-commit
uv run pytest