No description
  • Go 98.2%
  • Just 1.1%
  • Dockerfile 0.7%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Claudia 92c7d41c50
All checks were successful
ci/woodpecker/push/build Pipeline was successful
chore: sync the files wrangle manages
.woodpecker/release.yml
2026-10-20 21:23:18 +02:00
.just ci: enable wrangle management 2026-10-14 15:36:08 +02:00
.woodpecker chore: sync the files wrangle manages 2026-10-20 21:23:18 +02:00
internal fix: read Leaving soon without a user 2026-10-15 08:36:26 +02:00
.containerignore build: drop the Docker-specific build files 2026-10-19 12:24:28 +02:00
.gitignore feat: load config with the design's defaults 2026-10-14 14:45:06 +02:00
CHANGELOG.md docs: changelog for v0.3.3 2026-10-19 14:46:20 +02:00
Containerfile build: drop the Docker-specific build files 2026-10-19 12:24:28 +02:00
DESIGN.md feat: run once on start 2026-10-14 16:11:28 +02:00
go.mod feat: remember protection, snoozes and Leaving soon between runs 2026-10-14 14:49:19 +02:00
go.sum feat: remember protection, snoozes and Leaving soon between runs 2026-10-14 14:49:19 +02:00
justfile ci: enable wrangle management 2026-10-14 15:36:08 +02:00
main.go fix: wait for the network before the first run 2026-10-14 16:25:30 +02:00
main_test.go fix: wait for the network before the first run 2026-10-14 16:25:30 +02:00
README.md feat: run once on start 2026-10-14 16:11:28 +02:00

compost

Removes watched and expired media from the Series, Movies and Tube libraries. It reads every Jellyfin user's watch state, warns through a "Leaving soon" collection, and deletes through the app that owns each file (Sonarr, Radarr, subsyt), which keeps its record so nothing has to be re-added.

DESIGN.md has the rules and why they are the way they are.

Using it, as a viewer

  • Favourite something to keep it, for as long as it stays favourited.
  • Add it to your Snooze playlist to keep it another 30 days.
  • Add it to your Remove playlist when you're done with it.
  • Anything played more than once is kept.
  • Everything goes through Leaving soon for at least 3 days first.

Running

compost -config config.json            # once now, then nightly at run_at
compost -config config.json -once      # one run now
compost -config config.json -dry-run   # change nothing, report what would happen

Config is JSON over the defaults in internal/config; the image ships one that only sets db_file. Keys come from JELLYFIN_API_TOKEN, SONARR_API_TOKEN, RADARR_API_TOKEN and SUBSYT_API_TOKEN (a subsyt token with scope delete), or from api_key_file. COMPOST_DRY_RUN overrides dry_run; a real run refuses to start without every owner's key.

The Jellyfin key is an admin key. compost's client refuses every call outside the eight it needs, and the Sonarr, Radarr and subsyt clients do the same.