| Crates.io | filmrolls |
| lib.rs | filmrolls |
| version | 0.1.1 |
| created_at | 2025-07-14 13:55:21.332688+00 |
| updated_at | 2025-07-23 10:19:50.652659+00 |
| description | Tag TIFF files with EXIF data extracted from XML |
| homepage | |
| repository | https://github.com/urdh/filmrolls-rs/ |
| max_upload_size | |
| id | 1751746 |
| size | 297,493 |
This is a utility designed to read the XML files used by the Film Rolls iOS app (and JSON data exported from the Lightme Logbook iOS app), to enable batch EXIF tagging of scanned negatives in TIFF format based on the information in these XML/JSON files. It is essentially a Rust rewrite of the filmrolls gem, with added functionality.
The utility is released under the ISC license, and the changelog provides a list of releases and their contents.
At the moment, the utility supports reading and displaying Film Rolls XML and Lightme JSON data.
Using the list-rolls and list-frames sub-commands, you can explore the data to get a brief
summary of the film rolls present:
$ filmrolls list-rolls -r tests/data/filmrolls.xml -r tests/data/lightme.json
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
ID Frames Film Camera Loaded Unloaded
═════════════════════════════════════════════════════════════════════════════════════════════════════════════════
A0012 1 Ilford Delta 100 @ 100/21° Voigtländer Bessa R2M 2016-03-28 15:16:36 2016-05-21 14:13:15
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
A0020 1 Ilford SFX 200 @ 200/24° Voigtländer Bessa R2M 2022-04-30 17:57:00 2022-05-01 15:12:00
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
$ filmrolls list-frames -r tests/data/filmrolls.xml -i A0012
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
# Lens Focal len. Aperture Shutter Comp. Date Location Notes
══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════
1 Color Skopar 35/2.5 Pancake II ƒ/5.6 1/500 s 2016-05-13 14:12:40 57° 42′ 2.761″ N, 11° 57′ 13.374″ E
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
After verifying the metadata for a specific roll, you update the original images with EXIF and XMP
data using the tag sub-command (here using the dry-run flag to not actually perform the update):
$ filmrolls tag --dry-run -r tests/data/filmrolls.xml -i A0012 tests/data/20160513-A0012+001.tiff
──────────────────────────────────────────────────────────────────
Roll Date Path
══════════════════════════════════════════════════════════════════
A0012 2016-05-13 14:12:40 tests/data/20160513-A0012+001.tiff
──────────────────────────────────────────────────────────────────
Finally, the apply-metadata sub-command can be used to tag images with author and licensing
metadata from a TOML file, independently of any XML/JSON film roll data:
$ filmrolls apply-metadata --dry-run -m tests/data/metadata.toml tests/data/20160513-A0012+001.tiff
──────────────────────────────────────────────────
Roll Date Path
══════════════════════════════════════════════════
tests/data/20160513-A0012+001.tiff
──────────────────────────────────────────────────