radieo/.gitignore
Pierre-Olivier Mercier 66d93e5034 Milestone 6: ListenBrainz recommendations provider
Add a third playback source: a ListenBrainz recommendations Atom feed. Each
suggestion already carries a MusicBrainz recording MBID, title and artist, so
it is keyed directly by MBID (source-agnostic identity, no extra lookup) and
resolved to a concrete file — Navidrome search3 first, then a yt-dlp
ytsearch1: fallback.

- providers/listenbrainz.py: parse the Atom/HTML feed, anti-repeat on the MBID
  key, resolve Navidrome-then-yt-dlp. Feed may be an http(s) URL or a local
  path (for testing).
- subsonic.py: add search_songs (search3) for resolution.
- canonicalizer.py: short-circuit when a Track already has an MBID, so
  feed-provided MBIDs are trusted and MusicBrainz is not hit.
- __main__.py: wire the provider in; register the yt-dlp fetcher as a
  resolution backend even when the yt-dlp source is off; close providers on
  shutdown.
- config/compose/.env.example: RADIEO_LISTENBRAINZ_URL + weight.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-02 19:14:47 +08:00

23 lines
385 B
Text

# Fichiers audio et état du cache (ne pas versionner)
/cache/*
!/cache/.gitkeep
# Secrets locaux
.env
# Liste de sources yt-dlp personnelle (garder seulement l'exemple)
/config/urls.txt
# Échantillon de feed ListenBrainz personnel
/config/recommendations.xml
# État de l'ingestion (base SQLite persistante)
/state/
*.db
*.db-journal
*.db-wal
# Python
__pycache__/
*.pyc
.venv/