Noxely se sépare en client et serveur (2.0.0)
Le téléphone balayait quarante radios toutes les trois minutes, cherchait dans quatre catalogues et enregistrait des directs. Tout cela le tenait éveillé pour un travail qui n'a aucune raison de se faire sur batterie. Un serveur reprend la collecte : recherche, guet, enregistrement, file de téléchargement, piloté depuis un navigateur. Le mobile demande ce qui a changé depuis son curseur, télécharge et se rendort — toutes les six heures, en Wi-Fi non facturé. Vingt fichiers quittent l'application au passage. Le balayage devient continu plutôt qu'espacé de trois minutes : une sonde ne lit que le premier bloc de métadonnées avant de refermer, ce qui rend la permanence tenable quand garder les flux ouverts coûterait plusieurs mégabits par seconde. Un morceau guetté a été capté en moins de vingt-cinq secondes. La recherche interroge les quatre catalogues à la fois et fond leurs résultats, les plus légers d'abord. Quatre défauts corrigés en chemin, tous trouvés en essayant plutôt qu'en relisant : un jeton régénéré à chaque démarrage, qui aurait obligé à reconfigurer le mobile ; un 403 de Wikimedia dû à un agent trop générique, que la fusion des sources masquait ; un dossier de données par défaut inaccessible au compte qui lance le serveur ; et une lecture de métadonnées qui n'itérait rien, faute d'être asynchrone.
This commit is contained in:
1 parent
adc6fc0486
commit
ed1d40826b
48 files changed
+2081
-3619
No files matched your search
@@ -5,6 +5,59 @@ 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.0.0] — 2026-09-13
|
||||
|
||||
Noxely se sépare en deux : un **serveur** qui collecte, un **mobile** qui écoute. Tout ce qui
|
||||
tenait le téléphone éveillé a migré ailleurs — c'est la raison d'être de cette version.
|
||||
|
||||
### Ajouté
|
||||
|
||||
- **Serveur** (`server/`, Python + FastAPI + SQLite). Il porte désormais la recherche dans les
|
||||
catalogues, le guet des morceaux sur les radios, l'enregistrement des directs et la file de
|
||||
téléchargement. Une interface web permet de le piloter depuis un navigateur : recherche, guets,
|
||||
file et bibliothèque.
|
||||
- **Recherche simultanée sur toutes les sources.** Les quatre catalogues sont interrogés en
|
||||
parallèle et les résultats fusionnés, chacun étiqueté de son origine, les plus légers en tête.
|
||||
Un catalogue en panne n'empêche pas les autres de répondre.
|
||||
- **Balayage radio continu.** Un tour enchaîne sur le suivant au lieu d'attendre trois minutes :
|
||||
un morceau guetté a été capté en moins de vingt-cinq secondes à la mesure. Une sonde ne lit que
|
||||
le premier bloc de métadonnées puis referme, ce qui rend la permanence tenable là où garder
|
||||
quarante flux ouverts coûterait plusieurs mégabits par seconde.
|
||||
- **Synchronisation client/serveur.** Le mobile demande ce qui a changé depuis son curseur,
|
||||
télécharge les fichiers prêts et se rendort. Toutes les six heures, en Wi-Fi non facturé et
|
||||
batterie suffisante.
|
||||
- **Réglages en sous-onglets** sur le mobile : Connexion, Synchronisation, Application.
|
||||
- Cibles `make server-*` : environnement, lancement, service systemd, jeton, journal.
|
||||
|
||||
### Changé
|
||||
|
||||
- **L'application Android devient un client de synchronisation.** Recherche, catalogues, radio,
|
||||
guets et enregistrement quittent le téléphone : vingt fichiers supprimés. Restent la
|
||||
bibliothèque, la lecture, les playlists, le hors-ligne et les réglages.
|
||||
- L'onglet Sources devient Réglages.
|
||||
|
||||
### Corrigé
|
||||
|
||||
- Le jeton du serveur était régénéré à chaque démarrage : il aurait fallu reconfigurer le mobile
|
||||
après le moindre redémarrage. Il est désormais conservé dans `data/token`, en lecture seule pour
|
||||
son propriétaire.
|
||||
- Wikimedia Commons répondait 403 : sa politique refuse les agents génériques. L'agent annonce
|
||||
maintenant le projet et son dépôt — 28 résultats là où il n'y en avait aucun. L'erreur était
|
||||
masquée par la fusion des sources, et n'est apparue qu'en interrogeant la source seule.
|
||||
- `NOXELY_DATA` pointait par défaut sur `/var/lib/noxely`, inaccessible au compte qui lance
|
||||
`make server-run` : le défaut devient `./data`, et l'unité systemd crée elle-même son dossier
|
||||
d'état. Un dossier inutilisable donne désormais une phrase, plus une trace Python.
|
||||
- La lecture des métadonnées ICY n'itérait rien côté serveur : `iter_bytes` au lieu de
|
||||
`aiter_bytes` sur un client asynchrone. Trente-six stations écoutées, zéro titre lu.
|
||||
- Une coupure de l'annuaire Radio Browser faisait échouer tout le balayage : une seconde tentative
|
||||
est faite, et l'erreur renvoyée est lisible.
|
||||
|
||||
### Migration
|
||||
|
||||
Le mobile seul ne sert plus à rien : il faut installer le serveur (`make server-venv`, puis
|
||||
`make server-install`), relever son jeton (`make server-token`) et le saisir dans Réglages ▸
|
||||
Connexion. Consultée depuis la machine du serveur, l'interface web se remplit seule.
|
||||
|
||||
## [1.7.0] — 2026-09-13
|
||||
|
||||
### Ajouté
|
||||
|
||||
Reference in new issue
Block a user