Files
pmomusic/Blackboard/Report/Oubli_Main_Radio.md
Eric Coissac 3817fda38e Amélioration du chargement des métadonnées et filtrage de francebleu
### 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
2026-01-24 20:59:48 +01:00

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 :

  1. La radio principale était absente des groupes multi-stations (écrasée par les webradios)
  2. 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.rs
  • pmoradiofrance/src/source.rs
  • pmoradiofrance/src/client.rs

Changements structurels

  1. 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")
  2. 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_*
  3. Méthodes helper dans StationGroup :

    • name() : retourne group_name ou le nom de stations[0]
    • slug() : retourne group_slug ou le slug de stations[0]
  4. Simplification de la logique :

    • to_stub() et to_didl() de StationGroup utilisent self.name() et self.slug()
    • Plus de traitement spécial pour détecter ou sauter la station virtuelle "ici"
    • compute_parent_id() de Station utilise le slug fixe "ici" pour les stations francebleu_*
  5. 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
  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

  • 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.