photoapp | ||
styles | ||
templates | ||
.dockerignore | ||
.gitignore | ||
Dockerfile | ||
gruntfile.js | ||
package.json | ||
README.md | ||
requirements.txt | ||
setup.py |
photolib
Cloud-native photo and related media library software, with a focus for photography hobbyists.
TODO longer description
Installation
TODO
Usage
After installation, photolib provides a CLI tool, photocli
. It can be used as follows:
photocli checkdupes
- scan files and print those not already in the library:
$ find source -type f -exec shasum -a 256 {} \; | tee shas.txt
544b5a4f3898abae73260930ee70931a3992c048649692cef89b37576e886f69 source/2018-12-09 13.52.22.jpg
d2c2c30ca4986d364026644881d667162031008e60aac6a69d7b18230b7ea98c source/2019-04-08 20.05.02.jpg
9d42859ed92d7fb978cf73b41293480e1eab03d2d3a14c185c4daf3a49d324ab source/2019-06-19 16.28.07.png
...
$ photocli -s http://localhost:8080 checkdupes --sha-files shas.txt
TODO: support not using --sha-files
photocli ingest
- import new photos into the library:
$ photocli -s http://localhost:8080 ingest photos/*.jpg raws/*.cr2
...
TODO: implement this
There is some non-obvious behavior in the ingest process that is important to understand. Many photographers shoot in
multiple formats, in the sense that one click of the shutter produces multiple formats. Jpeg and Raw is common. During
ingest, photocli assumes that files with the same filename are multiple formats of the same image. E.g., if you have
both IMG_1234.JPG
and IMG_1234.cr2
, the two images will be grouped in the library. This combination action is only
applied during ingest; images already in the library that happen to share a filename with a file being imported will
not be merged. To add a format to a photo already in the library, see photocli addformat
.