### Fichiers modifiés : - `pmoradiofrance/src/playlist.rs` - `pmoradiofrance/src/source.rs` - `pmoradiofrance/src/client.rs` ### Changements structurels : 6. **Chargement parallèle des métadonnées** : - Utilisation de `futures::stream::buffer_unordered(5)` pour charger jusqu'à 5 stations en parallèle - Décalage de 50ms entre chaque requête pour éviter de surcharger l'API Radio France - Amélioration significative du temps de chargement des groupes multi-stations 7. **Filtrage de francebleu générique** : - Application de la règle métier : `francebleu` (sans suffixe) n'est pas une vraie station - Filtrage dans `discover_all_stations()` pour éviter qu'elle soit ajoutée à la liste - Utilisation de `group.slug()` au lieu de `stations[0].slug` dans `source.rs` pour gérer correctement le groupe ICI ### Résultat : - **Chargement plus rapide** : les métadonnées sont récupérées en parallèle au lieu de séquentiellement - Code plus simple et sans logique spéciale dispersée - Interface prévisible : les stations sont toujours au même endroit
3.1 KiB
3.1 KiB
Rapport : Correction de l'affichage des groupes de radios
Résumé
Correction des deux bugs identifiés dans l'organisation des groupes de stations Radio France :
- La radio principale était absente des groupes multi-stations (écrasée par les webradios)
- Le groupe ICI (radios locales) était inaccessible à cause d'une station virtuelle "ici" mal gérée
Solution implémentée
Refactoring complet pour supprimer la notion de "station virtuelle" et utiliser des champs optionnels group_name et group_slug dans StationGroup.
Modifications
Fichiers modifiés :
pmoradiofrance/src/playlist.rspmoradiofrance/src/source.rspmoradiofrance/src/client.rs
Changements structurels
-
Ajout de champs optionnels à
StationGroup:group_name: Option<String>: nom personnalisé du groupe (pour ICI : "Radios ICI")group_slug: Option<String>: slug personnalisé du groupe (pour ICI : "ici")
-
Suppression de la station virtuelle "ici" :
- Plus de création d'une
Station { slug: "ici", name: "Radios ICI" } - Le groupe ICI contient maintenant uniquement les vraies stations
francebleu_*
- Plus de création d'une
-
Méthodes helper dans
StationGroup:name(): retournegroup_nameou le nom destations[0]slug(): retournegroup_slugou le slug destations[0]
-
Simplification de la logique :
to_stub()etto_didl()deStationGrouputilisentself.name()etself.slug()- Plus de traitement spécial pour détecter ou sauter la station virtuelle "ici"
compute_parent_id()deStationutilise le slug fixe "ici" pour les stationsfrancebleu_*
-
Tri alphabétique des stations :
- Dans chaque groupe : station principale en position 0, puis webradios triées par nom
- Groupe ICI : toutes les stations triées par nom (pas de station principale)
- Les stations se retrouvent toujours à la même position dans la liste
-
Chargement parallèle des métadonnées :
- Utilisation de
futures::stream::buffer_unordered(5)pour charger jusqu'à 5 stations en parallèle - Décalage de 50ms entre chaque requête pour éviter de surcharger l'API Radio France
- Amélioration significative du temps de chargement des groupes multi-stations
- Utilisation de
-
Filtrage de francebleu générique :
- Application de la règle métier :
francebleu(sans suffixe) n'est pas une vraie station - Filtrage dans
discover_all_stations()pour éviter qu'elle soit ajoutée à la liste - Utilisation de
group.slug()au lieu destations[0].slugdanssource.rspour gérer correctement le groupe ICI
- Application de la règle métier :
Résultat
- Groupes avec radio principale (FIP, France Inter, etc.) : la radio principale apparaît à l'index 0, suivie des webradios triées alphabétiquement
- Groupe ICI : accessible et affiche toutes les radios locales triées alphabétiquement
- Code plus simple et sans logique spéciale dispersée
- Interface prévisible : les stations sont toujours au même endroit
- Chargement plus rapide : les métadonnées sont récupérées en parallèle au lieu de séquentiellement
Statut
Modifications terminées. Compilation à vérifier par l'utilisateur.