Gallery with duplicate search and weighted tags, plus DNN autotagger
Go to file
Přemysl Eric Janouch beb7c5e337
gallery: create DB directory in initialization
So that README.adoc instructions actually work.
2024-12-08 22:09:11 +01:00
deeptagger Cleanup 2024-02-13 15:44:42 +01:00
public gallery: make it reverse proxy friendly 2024-01-27 18:09:48 +01:00
gen-initialize.sh Initial commit 2023-12-29 15:02:28 +01:00
go.mod Initial commit 2023-12-29 15:02:28 +01:00
go.sum Initial commit 2023-12-29 15:02:28 +01:00
initialize.sql gallery: implement AND/NOT for tag search 2024-01-22 19:52:35 +01:00
LICENSE Add a deep tagger in C++ 2024-01-18 18:31:09 +01:00
main.go gallery: create DB directory in initialization 2024-12-08 22:09:11 +01:00
Makefile Initial commit 2023-12-29 15:02:28 +01:00
README.adoc gallery: improve the README 2024-01-27 18:30:57 +01:00
test.sh Initial commit 2023-12-29 15:02:28 +01:00

gallery

This is gallery software designed to maintain a shadow structure of your filesystem, in which you can attach metadata to your media, and query your collections in various ways.

All media is content-addressed by its SHA-1 hash value, and at your option also perceptually hashed. Duplicate search is an essential feature.

The gallery is designed for simplicity, and easy interoperability. sqlite3, curl, jq, and the filesystem will take you a long way.

Prerequisites: Go, ImageMagick, xdg-utils

ImageMagick v7 is preferred, it doesnt shoot out of memory as often.

Getting it to work

# apt install build-essential git golang imagemagick xdg-utils
$ git clone https://git.janouch.name/p/gallery.git
$ cd gallery
$ make
$ ./gallery init G
$ ./gallery sync G ~/Pictures
$ ./gallery thumbnail G             # parallelized, with memory limits
$ ./gallery -threads 1 thumbnail G  # one thread only gets more memory
$ ./gallery dhash G
$ ./gallery web G :8080

The intended mode of use is running daily automated sync/thumbnail/dhash/tag batches in a cron job, or from a systemd timer.

The web command needs to see the public directory, and is friendly to reverse proxying.