Gate discovery-playlist notifications on Navidrome availability

Aoi was sending Matrix cards as soon as a playlist row appeared in the
discovery-playlist SQLite, before Navidrome had scanned and indexed it.
That produced 'ready' notifications for playlists that were not yet
playable.

The gate now requires the matching playlist (exact name match,
case-insensitive) to be visible in Navidrome via getPlaylists with at
least N entries (default 1, knob 'polling.discovery_min_tracks_in_navidrome')
before the notification fires. If a playlist stays missing from
Navidrome past 'polling.discovery_stale_after_hours' (default 48h), it
is marked sent without notification so we don't loop forever.

Refactored navidrome_playlist_cover into navidrome_find_playlist (name
match) and navidrome_playlist_cover_for (cover for an already-resolved
playlist), so the gate and the cover lookup share a single Navidrome
roundtrip.
This commit is contained in:
Rinka Makise-Okabe 2026-04-28 21:25:35 +03:00
parent 5fa857b9cc
commit 8f2b349ed9
2 changed files with 73 additions and 16 deletions

View file

@ -32,7 +32,9 @@
"navidrome_album_interval_seconds": 300,
"discovery_playlist_interval_seconds": 180,
"release_watch_interval_seconds": 600,
"baseline_existing_on_first_run": true
"baseline_existing_on_first_run": true,
"discovery_min_tracks_in_navidrome": 1,
"discovery_stale_after_hours": 48
},
"server": {
"host": "0.0.0.0",