- Go 98.2%
- Just 1.1%
- Dockerfile 0.7%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
All checks were successful
ci/woodpecker/push/build Pipeline was successful
.woodpecker/release.yml |
||
| .just | ||
| .woodpecker | ||
| internal | ||
| .containerignore | ||
| .gitignore | ||
| CHANGELOG.md | ||
| Containerfile | ||
| DESIGN.md | ||
| go.mod | ||
| go.sum | ||
| justfile | ||
| main.go | ||
| main_test.go | ||
| README.md | ||
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
Snoozeplaylist to keep it another 30 days. - Add it to your
Removeplaylist 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.