Skip to main content

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

  1. Install Hatch:
pip install hatch
  1. 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.

Metadata

Release files for filmtagger 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for filmtagger 0.3.0
File Size Uploaded
filmtagger-0.3.0.tar.gz 10.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for filmtagger 0.3.0
File Interpreter ABI Platform
filmtagger-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 17.5 kB

Release files / filmtagger-0.3.0.tar.gz

Download URL filmtagger-0.3.0.tar.gz
Size 10.7 kB
Tags Source
SHA-256 checksum
How to use checksums
783192b69486b9044e624dba72b34f8c3b299e08ef8e34e79488b0dd95bd7828
BLAKE2b-256 checksum
How to use checksums
2dc21c0bdbab74ed90a50ccc913ba4f71a9e759f40f22c26dc512f6b56e6e185
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.4

Release files / filmtagger-0.3.0-py3-none-any.whl

Download URL filmtagger-0.3.0-py3-none-any.whl
Size 6.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
aba2708d3f87ca6930266c85b020e70d747fbb51730dfe4f5b962a6850f514a8
BLAKE2b-256 checksum
How to use checksums
9c3ac67e4fa296bc3ce632171bc2f7753e823dcd1e79227d1ebcd2fe385dfd3f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.4

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 release files

0.0.4

3 release files

0.0.3

3 release files

0.0.2

2 release files

0.0.1

3 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page