A simple CLI to tag film scans with EXIF metadata
Project description
filmtagger
A simple CLI to tag film scans with EXIF metadata.
Installation
pip install filmtagger
Requirements
This package uses the pyexiv2 library for EXIF/XMP metadata manipulation, which provides Python bindings for the Exiv2 library. The pyexiv2 package includes pre-compiled binaries for most platforms, making installation straightforward without requiring system-level dependencies.
Usage
# Show help
filmtagger --help
# Tag a single image
filmtagger tag image.jpg
# Tag multiple images
filmtagger tag *.jpg
Development
This project uses Hatch for development and package management.
Setup Development Environment
- Install Hatch:
pip install hatch
- Create and activate development environment:
hatch shell
Running Tests
# Run all tests
hatch run test
# Run tests with coverage
hatch run test-cov
# Run linting checks
hatch run lint:all
# Format code
hatch run lint:fmt
Building and Publishing
# Build the package
hatch build
# Publish to PyPI
hatch publish
License
This project is licensed under the MIT License - see the LICENSE file for details.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Usage examples
To set the date of all images to 12 June 2019, specifying camera and film as well:
$ filmtagger -d 2019-06-12 -c "Leica M6" -f "E100G" *.jpg
Filmtagger supports fuzzy-matching against its database of cameras and films, so your input strings needn't be exact. Likewise, it attempts to autodetect a variety of date/time input.
Configuration
You may configure your own camera and film definitions to override the system-wide ones.
Create a ~/.config/filmtagger/cameras.toml file that looks like this:
["Mamiya RB67"]
"Exif.Image.Make" = "Mamiya"
"Exif.Image.Model" = "RB67"
And a ~/.config/filmtagger/films.toml like this:
["Ilford HP5 Plus"]
"Exif.Photo.ISOSpeedRatings" = 400
"Xmp.AnalogExif.FilmMaker" = "Ilford"
"Xmp.iptcExt.DigitalSourceType" = "http://cv.iptc.org/newscodes/digitalsourcetype/negativeFilm"
The section headings will be fuzzy-matched from the command-line arguments. The key-value pairs that follow will be set as metadata, assuming they are valid tag names. In addition to the standard Exiv2 tag schema, AnalogExif tags are also supported.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file filmtagger-0.3.0.tar.gz.
File metadata
- Download URL: filmtagger-0.3.0.tar.gz
- Upload date:
- Size: 10.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
783192b69486b9044e624dba72b34f8c3b299e08ef8e34e79488b0dd95bd7828
|
|
| MD5 |
b52d335f619b290171d0fc75efd3d46d
|
|
| BLAKE2b-256 |
2dc21c0bdbab74ed90a50ccc913ba4f71a9e759f40f22c26dc512f6b56e6e185
|
File details
Details for the file filmtagger-0.3.0-py3-none-any.whl.
File metadata
- Download URL: filmtagger-0.3.0-py3-none-any.whl
- Upload date:
- Size: 6.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aba2708d3f87ca6930266c85b020e70d747fbb51730dfe4f5b962a6850f514a8
|
|
| MD5 |
5f84f80f6cf5bb270793cf90bb5298ec
|
|
| BLAKE2b-256 |
9c3ac67e4fa296bc3ce632171bc2f7753e823dcd1e79227d1ebcd2fe385dfd3f
|