Le serveur garde la trace de ce qu'il entend, et repère la rotation (2.4.0)

Le balayage ne servait qu'à trouver un morceau guetté, puis oubliait tout. Il
note désormais chaque titre annoncé par les stations, même sans guet en cours :
un onglet Écoutes montre l'historique, et la rotation — passages et stations
distinctes, par titre et par artiste — sur les 100 dernières remontées.

Pour que l'historique soit fiable, un tour va maintenant jusqu'au bout après une
trouvaille (l'enregistrement part aussitôt, le début du morceau n'est pas
perdu), et la liste des stations est mise en cache une demi-heure au lieu
d'interroger l'annuaire à chaque tour.

Essayé sur de vraies radios : une station alternait le vrai titre et un titre de
repli, ce qui doublait les passages. Un titre déjà relevé sur la même station
dans les dix minutes est donc ignoré.

Première moitié de la reconnaissance des morceaux ; l'écoute continue et
l'empreinte sonore suivront.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
tuxgyverandClaude Sonnet 5 committed 2026-09-20 17:59:32 +02:00
1 parent 53f5fc1148
commit 7810bef8a3
12 files changed
+380 -20

No files matched your search

+33
View File
@@ -5,6 +5,39 @@ Toutes les évolutions notables de Noxely sont documentées ici.
Le format suit [Keep a Changelog](https://keepachangelog.com/fr/1.1.0/)
et le versionnage [SemVer](https://semver.org/lang/fr/).
## [2.4.0] — 2026-09-20
### Ajouté
- **Historique des écoutes.** Le serveur note chaque titre que les stations annoncent (ICY),
même quand aucun morceau n'est guetté : station, heure, artiste et titre. Un nouvel onglet
`📈 Écoutes` le montre, avec une recherche dans le texte. La route `GET /api/heard` le sert.
- **Rotation.** `GET /api/rotation` compte, sur les *n* dernières remontées (100 par défaut,
jusqu'à 500), les passages de chaque titre et de chaque artiste, et le nombre de stations
distinctes qui les diffusent. Les accents, la casse et la ponctuation ne séparent plus un
même morceau en deux.
- Trois réglages : `NOXELY_HISTORY` (0 pour couper), `NOXELY_LISTEN_INTERVAL` (pause entre deux
tours quand rien n'est guetté, 60 s) et `NOXELY_HISTORY_DAYS` (purge au-delà, 90 jours).
### Modifié
- **Le balayage ne s'arrête plus quand rien n'est guetté.** Il tourne à cadence lente pour tenir
l'historique, et reste serré (`NOXELY_WATCH_INTERVAL`) dès qu'un guet est en attente.
- **Un tour va jusqu'au bout.** Trouver un morceau guetté n'interrompt plus le tour : l'enregistrement
part aussitôt, mais le reste des stations est lu, pour que l'historique soit complet.
- **La liste des stations est mise en cache une demi-heure.** Chaque tour interrogeait
l'annuaire communautaire ; avec un guet, c'était toutes les quelques secondes. En cas de
panne de l'annuaire, la liste précédente sert au lieu de faire échouer le tour.
### Notes
- Une station qui n'a pas changé de morceau n'ajoute rien, et un titre déjà relevé sur la même
station dans les dix minutes est ignoré : certaines stations alternent le vrai titre et un
titre de repli, ce qui doublait les passages. Les stations qui n'annoncent qu'elles-mêmes sont
écartées.
- La séparation « Artiste - Titre » se fait sur le premier tiret entouré d'espaces. Une station
qui annonce « Titre - Artiste », ou du parlé, est comptée telle quelle.
## [2.3.0] — 2026-09-13
### Ajouté