A reverse image search tool for InSomnia
See the Reddit release thread for more information about Sourcecatcher
Sourcecatcher is published as an OCI container.
$ tree
.
├── config
│ ├── nitter
│ │ └── sessions.jsonl
│ └── sourcecatcher
│ ├── config-discord.toml
│ └── config.yaml
└── live
├── discord.db
├── phash_index.ann
└── twitter_scraper.db
See Config files section for configuration file setup.
The live
directory contains Sourcecatcher's databases, it should be persisted to a host directory (See next section).
Create quadlet generator file. Remember to configure container network and volume mounts setup.
$ cat ~/.config/containers/systemd/sourcecatcher.container
[Unit]
Description=Sourcecatcher reverse image search service
After=network.target
[Container]
ContainerName=sourcecatcher
Image=ghcr.io/evanc577/sourcecatcher:latest
AutoUpdate=registry
Network=bridge
PublishPort=9000:80
Volume=/home/sourcecatcher/config/sourcecatcher/:/sourcecatcher/config/:Z,ro
Volume=/home/sourcecatcher/config/nitter/sessions.jsonl:/nitter/sessions.jsonl:Z,ro
Volume=/home/sourcecatcher/live/:/sourcecatcher/live/:Z
[Install]
WantedBy=multi-user.target default.target
Start the container
$ systemctl --user daemon-reload
$ systemctl --user start sourcecatcher.service
config.yaml
contains runtime information needed by Sourcecatcher.
# Don't need to change for OCI container
media_dir: "/sourcecatcher/images/"
nitter_instance: "http://0.0.0.0:8080"
# Image hashing options
cpus: 4
recalculate_kmeans: False
# Set to true to enable scraping discord server channels for Twitter links
scrape_discord: true
# These users will show up first in search results
priority_users:
- "hf_dreamcatcher"
- "jp_dreamcatcher"
- "7_DREAMERS"
- "2Moori"
# Set of users to scrape via Nitter
users:
- "hf_dreamcatcher"
- "7_DREAMERS"
- "2Moori"
database_file = "working/discord.db"
discord_token = "your-discord-api-token"
# List of Discord channel IDs to scape
watched_channels = [
"253293425460248580",
"253293450030481418",
]
Twitter user accounts used for running a local nitter instance. See upstream Nitter documentation for how to generate this file.