Onglet Radio sur le serveur, bouton de synchronisation sur le mobile (2.5.0)

Le serveur gagne un onglet Radio : les stations de l'annuaire, écoutables en
direct dans le navigateur ou enregistrables — jusqu'à l'arrêt ou pour une durée
choisie —, puis réécoutables depuis l'interface. Quatre enregistrements en
parallèle au plus ; si le flux tombe, il est rouvert et le fichier continue.
Les enregistrements rejoignent la bibliothèque : le mobile les reçoit.

Un redémarrage du service clôt proprement les captures en cours, et celles
restées « en cours » après un plantage sont récupérées au démarrage suivant.
La copie de flux sans blocs ICY, propre au guet, est extraite pour être
partagée.

Côté mobile, la synchronisation manuelle n'était qu'un petit lien dans l'onglet
Connexion : elle a maintenant un vrai bouton dans l'onglet Synchronisation.
Deux passages ne se chevauchent plus, et une erreur inattendue s'affiche au lieu
de fermer l'application.

Le code Kotlin n'a pas été compilé sur cette machine (pas de JDK) : il a été
relu, mais reste à construire.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N6pmSE168yjyf8vgV8mZx6
This commit is contained in:
tuxgyverandClaude Sonnet 5 committed 2026-09-20 22:39:59 +02:00
1 parent 7810bef8a3
commit 5b5e90247f
15 files changed
+593 -48

No files matched your search

+13
View File
@@ -32,11 +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/radio/stations`, `POST /api/radio/record`, `POST /api/radio/record/{id}/stop`, `GET /api/radio/recordings` | l'interface web — stations, enregistrement à la demande |
| `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`.
## Radio : écouter et enregistrer
L'onglet **📻 Radio** liste les stations (annuaire Radio Browser, filtrables par genre et par nom).
Chacune peut s'écouter en direct dans le navigateur, ou s'enregistrer jusqu'à l'arrêt — ou pour
une durée choisie (15 min à 2 h). Jusqu'à quatre stations en parallèle.
Un enregistrement rejoint la bibliothèque comme n'importe quel média : on le réécoute depuis
l'interface web, et le mobile le récupère à sa prochaine synchronisation. Si le flux tombe, le
serveur le rouvre (jusqu'à cinq essais d'affilée) et continue dans le même fichier. Un
redémarrage du service clôt proprement les enregistrements en cours. `NOXELY_RECORD_MAX_MINUTES`
(180) plafonne la durée, pour qu'un enregistrement oublié ne remplisse pas le disque.
## Historique et rotation
Le serveur note chaque titre annoncé par les stations qu'il balaie (ICY), même quand aucun