Files
pmomusic/pmoradiofrance/examples/discover_stations.rs
Eric Coissac e10f217385 feat(pmoradiofrance): implémentation complète du client Radio France
Cette mise à jour implémente complètement le client Radio France avec :

- Découverte dynamique des stations (principales, webradios et locales)
- Accès aux métadonnées live via l'API publique
- Gestion des flux audio HiFi (AAC 192 kbps, HLS)
- Support du cache des stations avec TTL configurable
- Extension de configuration pour pmoconfig
- Exemples d'utilisation et tests d'intégration

Les stations découvertes incluent : France Inter, France Info, France Culture, France Musique, FIP, Mouv', France Bleu (locales), et leurs variantes webradios respectives.

Les fonctionnalités incluent :
- Récupération des métadonnées live (émission en cours, producteur, visuels)
- Accès aux flux audio HiFi
- Gestion intelligente des rafraîchissements via delayToRefresh
- Cache des listes de stations avec TTL configurable (7 jours par défaut)

Les tests d'intégration couvrent : découverte des stations, métadonnées live, flux audio, cache, et gestion des erreurs.
2026-01-22 22:00:40 +01:00

41 lines
1.3 KiB
Rust

//! Example: Discover all Radio France stations
//!
//! Run with: cargo run -p pmoradiofrance --example discover_stations
use pmoradiofrance::RadioFranceClient;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Initialize logging
tracing_subscriber::fmt::init();
println!("Discovering Radio France stations...\n");
let client = RadioFranceClient::new().await?;
let stations = client.discover_all_stations().await?;
// Count by type
let main_count = stations.iter().filter(|s| s.is_main()).count();
let webradio_count = stations.iter().filter(|s| s.is_webradio()).count();
let local_count = stations.iter().filter(|s| s.is_local_radio()).count();
println!("Found {} stations total:\n", stations.len());
println!("=== Main Stations ({}) ===", main_count);
for station in stations.iter().filter(|s| s.is_main()) {
println!(" {} ({})", station.name, station.slug);
}
println!("\n=== Webradios ({}) ===", webradio_count);
for station in stations.iter().filter(|s| s.is_webradio()) {
println!(" {} ({})", station.name, station.slug);
}
println!("\n=== Local Radios ({}) ===", local_count);
for station in stations.iter().filter(|s| s.is_local_radio()) {
println!(" {} ({})", station.name, station.slug);
}
Ok(())
}