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:
1 parent
53f5fc1148
commit
7810bef8a3
12 files changed
+380
-20
No files matched your search
+16
-1
@@ -32,9 +32,24 @@ make server-logs # journal suivi
|
||||
| `GET /api/media/{id}/file` | **le mobile** — le fichier |
|
||||
| `GET /api/search`, `/api/tracks`, `POST /api/queue` | l'interface web |
|
||||
| `GET/POST/DELETE /api/watches`, `POST /api/watches/sweep` | l'interface web |
|
||||
| `GET /api/heard?limit=&q=` | l'interface web — l'historique de ce qui a été entendu |
|
||||
| `GET /api/rotation?last=100&top=20` | l'interface web — ce qui tourne sur les *n* dernières remontées |
|
||||
|
||||
Toutes les routes sauf `/api/health` exigent l'en-tête `X-Noxely-Token`.
|
||||
|
||||
## Historique et rotation
|
||||
|
||||
Le serveur note chaque titre annoncé par les stations qu'il balaie (ICY), même quand aucun
|
||||
morceau n'est guetté. Une station qui n'a pas changé de morceau depuis le dernier tour n'ajoute
|
||||
rien, et celles qui n'annoncent qu'elles-mêmes sont écartées.
|
||||
|
||||
La **rotation** compte, sur les *n* dernières remontées (100 par défaut), les passages de chaque
|
||||
titre et de chaque artiste, avec le nombre de stations distinctes qui les diffusent.
|
||||
|
||||
Sans guet en cours, un tour a lieu toutes les `NOXELY_LISTEN_INTERVAL` secondes (60 par défaut)
|
||||
— quelques dizaines de kilo-octets par station. `NOXELY_HISTORY=0` coupe l'historique ; les
|
||||
lignes plus vieilles que `NOXELY_HISTORY_DAYS` (90) sont purgées.
|
||||
|
||||
## Licence
|
||||
|
||||
GPL v3, comme le reste du projet — voir [`../LICENSE`](../LICENSE).
|
||||
@@ -43,6 +58,6 @@ GPL v3, comme le reste du projet — voir [`../LICENSE`](../LICENSE).
|
||||
|
||||
```
|
||||
$NOXELY_DATA/
|
||||
├── noxely.sqlite3 index des médias et des guets
|
||||
├── noxely.sqlite3 index des médias, des guets et de l'historique des écoutes
|
||||
└── media/ les fichiers eux-mêmes
|
||||
```
|
||||
Reference in new issue
Block a user