My Not-Invented-Here attempt at a photo organisation app.
I've grown pretty sick of Google Photos. It's hard to export data - yes I've looked at Takeout, but a lot of the data is hidden. I've tried using the Google Photos API - but again lots of the data is hidden, and you can't modify meta-data for images that were not uploaded to your application.
I want my own application that organises photos (and other media - including recepies), with clear import and export functions.
So what is it?
It is:
- A personal project that lets me sort out my personal projects.
- A really good, solid project for me to flesh out my Rust skills.
- Software that I actually use.
It isn't:
- A website/application that can really be hosted on the public internet.
- It doesn't have any access control or concept of user accounts.
- It explicitly interracts with the local file system of the computer it's running on.
- An view into the Google Photos data - modification of Google Photos data is really expliclty not supported by the API.
- Install Rust
cargo run --release
- NOTE - you will see massive speed improvements in release mode - particularly in relation to image processing (e.g. generating thumbnails).
- Visit http://localhost:8080/
- See that data is stored in a file
picvu.db
in the current directory. This is a SQLite database. You can always extract data using standard SQLite tools. - TODO: instructions to create appropriate Google credentials.
- Visit the "Setup" page, and specify:
- An API key to access the Google TimeZone and Geocoding APIs.
- A Client ID and Secret for a Google app that has access to the Google Photos API with the https://www.googleapis.com/auth/photoslibrary authorization scope.
- Visit Google Takeout and extract all of your Google Photos photos, in a set of .tgz files.
- Download all of these files and place them into a folder.
- Visit the "Import" page, and paste in the path to this folder.
- Import and wait.......
- Photos are tagged with "Unsorted" and some geogrphic information (from the Goolgle Geocoding API) by default.
- Import other folders of photos.
- Start tagging and sorting the photos.
Third party software used by this project includes:
- Rust, including lots of crates from Cargo.
- SQLite, via the Diesel and Rusqlite packages, with the Ruqlite "bundled" feature.
- Bootstrap Icons - included as files in src/picvu/assests/bootstrap-icons.css and sub-folder fonts. Downloaded from https://github.com/twbs/icons/releases/download/v1.2.2/bootstrap-icons-1.2.2.zip on 2021-01-06.
Feather Icons - included as file src/picvu/assets/feather-sprite.svg (Obtained from https://unpkg.com/feather-icons/dist/feather-sprite.svg on 2020-07-04).