I’ve been rewriting my multiple exposure software (again—the code was totally unmaintainable and totally horrible). I decided to switch from exiv2 to the excellent exiftool and pyexiftool for reading and writing image metadata. exiv2 is good! But exiftool is compatible with raw images from more camera systems.

I didn’t have any tests so I failed to maintain the functionality of my old metadata writing tool. I couldn’t figure out why neither Lightroom nor Flickr could read the “Capture Time” I was attempting to set in metadata. I searched around and found this forum post where I learned that Lightroom writes one EXIF tag, two IPTC tags, and one XMP tag that all include the “Capture Time” metadata.

Let’s unpack that just a tiny bit: there are three different metadata standards and one of them splits the date and the time into two separate items. Why!

🤬

The one Flickr pays attention to is EXIF:DateTimeOriginal. I had been writing Composite:DateTimeCreated, which apparently means something to exiv2 but nothing to exiftool. Maybe the exiv2 method writes all four tags like Lightroom but I’m too lazy to check.

I also had some trouble making newlines in captions—ultimately because of how pyexiftool wraps the exiftool CLI and how the exiftool CLI uses line feeds—but it is possible if you use a carriage return instead of a line feed.

If EXIF orientation handling is a ghetto, it’s a small part of the tri-standard urban wasteland that is photo metadata. Documentation is sparse and hard to come by, but thankfully the exiftool forum has been an oasis.