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.
41 lines
1.3 KiB
Rust
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(())
|
|
}
|