This is very close to what I'd consider the ideal photo organizer. However there's a feature I'd like to see that I'm not sure is possible without a database. Tell me what you think.
How does this handle dupes and near-dupes? People have photos scattered all over. Can I throw a random old folder of photos at this and trust that it won't overwrite an otherwise identical jpg with a bit-rot corrupt one for example?
You mention idempotence in your blog post, if I run this twice using the same 'unorganized' source folder, will it copy all the files again the second time?
If the same photo (based on a sha256 hash) is imported twice it will ignore it and return the location where that photo exists. This information is kept in a ~/.elodie/hash.json file but is only for efficiency. Read on...
The second way it's handled is that the rules engine will deterministically map a photo to a file path. This means two photos named IMG_0001.JPG with the same EXIF will be stored at the same location. If the sha256 hash is not found it will simply overwrite that file with itself. The likelihood of an accidental collision is extremely low but not zero.
That leads me to answer your last question. One of the goals was that you can run a corpus of photos that was already organized through the software and get the exact same output. If you specify a different output folder it should be identical to what was already organized.
My photos are in disarray and it would be nice to have something like this to help me organize them, but I store my raw files (.NEF) as well. Does this support raw files?
Yes. NEF and DNG are supported. Other RAW formats may work or might easily work but I haven't looked into them yet.
What others have done with RAW and JPEG counterparts is to keep them together in the same directory with the same file name. This way they are organized in tandem. If you add EXIF using Elodie then just include both the RAW and the JPEG so they stay consistent.
MOV, MP4, M4V, AVI and 3GP video files are also supported.
What would your thoughts be about integrating this into an open API service? Where photos could be uploaded, and then delivered to a storage system (Flickr, S3, Dropbox) of one's choice?
My original goal was for this to become a static API generator from which a static website could be created. Once I started down this path though that destination became less attractive. I love the idea of a libre Google Photos but once I integrated Elodie with Google Photos [1] I lost the motivation to have another front end for my photos :).
Thanks. A few folks have asked how this can work with Lightroom. I'm not a Lightroom user so I don't have the answers or the motivation :). I assume it's possible but I question the benefit.
For the rest of us who don't use Lightroom I hope this works well.
How does this handle dupes and near-dupes? People have photos scattered all over. Can I throw a random old folder of photos at this and trust that it won't overwrite an otherwise identical jpg with a bit-rot corrupt one for example?
You mention idempotence in your blog post, if I run this twice using the same 'unorganized' source folder, will it copy all the files again the second time?