FuzzySearch OwO builds off the technologies (and database) of FuzzySearch to detect reposts of artwork. Users can manually upload artwork to their collection or it can automatically import content from linked websites.
It searches for similar images on:
- F-list (identifying images using the character gallery page)
- Reddit (from a static list of subreddits)
- FurAffinity, Weasyl, e621, and Twitter (data provided by FuzzySearch webhooks)
It can import user content from:
- FurAffinity and Weasyl (and can be extended to other data sent in from FuzzySearch)
- DeviantArt
It will only import user content after the user has either signed into the service (via OAuth, etc.) or some other verification of their profile.
Patreon importing is a wanted feature, and most of the code already exists, but the Patreon API does not return any images nor attachments making it impossible.
This software has no privileged access to other services, making it possible to run yourself. However, no support is provided for this.
It currently runs as two separate services, one to serve the website and the
other to perform background tasks. These can be scaled as needed. The worker
services can run different queues, one for internal requests and another for
outgoing requests. This can be set with the --faktory-queues
option. Requests
to related projects (e.g. FuzzySearch) are not considered external.
A docker-compose.yml
file has been provided with the essentials to get things
up and running.
It has a few software dependencies to run:
- PostgreSQL with the bktree extension as the primary backing datastore
- NATS for pubsub and distributing events
- Faktory for managing background tasks
- faktory-cron to run scheduled jobs (provided in jobs.yaml)
It also requires credentials or app tokens for the following sites:
- DeviantArt (OAuth client)
- F-list (username and password)
- FurAffinity (authenticated cookies)
- FuzzySearch (API key)
- Patreon (OAuth client, not currently used)
- Reddit (username, password, and OAuth client)
- S3-like (endpoint, region, bucket, access, and secret key)
- SMTP (host, username, and password)
- Telegram (token and domain)
Migrations can either be applied manually with sqlx-cli or by running a
service with the --run-migrations
flag. This operation is safe to run many
times and should not block when already up.
All required and optional configuration options can be seen when the binary is
run with the --help
flag.
It exposes Prometheus metrics on the host provided in the environment variable
METRICS_HOST
at /metrics
.
OpenTelemetry traces are sent using gRPC and can be configured with the standard environment variables.