At the time of writing, Hazel's default date attributes all refer to an image file's creation date rather than the date on which the photo was originally taken. The two dates may differ.
This script provides a custom date attribute reflecting the time the photo was actually taken. As written, it's intended to be added as an embedded script in a "Run JavaScript" rule action, so that it's custom attribute can be used in subsequent "Sort into subfolder" patterns.
The date this script exposes is obtained via sips -g creation [filename]
. It's not clear to me exactly which EXIF attribute the sips "creation" property comes from, but it seems reasonable to assume it's either DateTimeOriginal
or DateTimeDigitized
.
Here are a couple of screenshots showing how I use this custom data attribute JS in Hazel:
After which I can refer to the pattern when sorting:
There are three "Sort into subfolder" steps because I sort my photos into a Y/M/D path structure. For example, here's the first sort action:
This was mostly an experimental foray into JXA and Hazel custom attributes, and to be honest the whole thing feels pretty awful and clunky to me. I plan to replace it with a more maintainable shell script that does the whole job of reading the photo date from sips, creating new folders based upon it, and moving the file into place.