Skip to main content

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

  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.

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

filmtagger-0.3.0.tar.gz (10.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

filmtagger-0.3.0-py3-none-any.whl (6.8 kB view details)

Uploaded Python 3

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

Hashes for filmtagger-0.3.0.tar.gz
Algorithm Hash digest
SHA256 783192b69486b9044e624dba72b34f8c3b299e08ef8e34e79488b0dd95bd7828
MD5 b52d335f619b290171d0fc75efd3d46d
BLAKE2b-256 2dc21c0bdbab74ed90a50ccc913ba4f71a9e759f40f22c26dc512f6b56e6e185

See more details on using hashes here.

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

Hashes for filmtagger-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 aba2708d3f87ca6930266c85b020e70d747fbb51730dfe4f5b962a6850f514a8
MD5 5f84f80f6cf5bb270793cf90bb5298ec
BLAKE2b-256 9c3ac67e4fa296bc3ce632171bc2f7753e823dcd1e79227d1ebcd2fe385dfd3f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page