From df8b062af6ede5d942f8550447bdb17ec48a899d Mon Sep 17 00:00:00 2001 From: Eric Coissac Date: Fri, 23 Jan 2026 20:21:11 +0100 Subject: [PATCH] Enhance Radio France source with API routes initialization and default album art This commit enhances the Radio France source by: 1. Updating the main.rs file to clarify the purpose of registering the Radio France source, including API route initialization 2. Modifying sources.rs to: - Add RadioFranceExt to the imports - Initialize API routes for Radio France after registering the source 3. Updating source.rs to: - Use a default logo for Radio France containers when server_base_url is configured - Apply the default logo to both group and 'Radios ICI' containers These changes improve the integration and visual presentation of Radio France content within the media server. --- PMOMusic/src/main.rs | 2 +- pmomediaserver/src/sources.rs | 7 ++++++- pmoradiofrance/src/source.rs | 20 ++++++++++++++++++-- 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/PMOMusic/src/main.rs b/PMOMusic/src/main.rs index fb0596f0..6200d11e 100644 --- a/PMOMusic/src/main.rs +++ b/PMOMusic/src/main.rs @@ -54,7 +54,7 @@ async fn main() -> Result<(), Box> { } } - // Enregistrer la source Radio France + // Enregistrer la source Radio France (inclut l'initialisation des routes API) info!("📻 Registering Radio France source..."); if let Err(e) = server.write().await.register_radiofrance().await { tracing::warn!("⚠️ Failed to register Radio France source: {}", e); diff --git a/pmomediaserver/src/sources.rs b/pmomediaserver/src/sources.rs index 61adc5e9..07c66e14 100644 --- a/pmomediaserver/src/sources.rs +++ b/pmomediaserver/src/sources.rs @@ -243,7 +243,7 @@ impl SourcesExt for Server { #[cfg(feature = "radiofrance")] async fn register_radiofrance(&mut self) -> Result<()> { - use pmoradiofrance::{RadioFranceSource, RadioFranceStatefulClient}; + use pmoradiofrance::{RadioFranceExt, RadioFranceSource, RadioFranceStatefulClient}; tracing::info!("Initializing Radio France source..."); @@ -265,6 +265,11 @@ impl SourcesExt for Server { // Enregistrer la source self.register_music_source(Arc::new(source)).await; + // Initialiser les routes API Radio France + self.init_radiofrance().await.map_err(|e| { + SourceInitError::RadioFranceError(format!("Failed to init API routes: {}", e)) + })?; + tracing::info!("✅ Radio France source registered successfully"); Ok(()) diff --git a/pmoradiofrance/src/source.rs b/pmoradiofrance/src/source.rs index 0880af77..e0a09eb0 100644 --- a/pmoradiofrance/src/source.rs +++ b/pmoradiofrance/src/source.rs @@ -305,6 +305,14 @@ impl RadioFranceSource { async fn build_station_container(&self, group: &StationGroup) -> Result { let child_count = 1 + group.webradios.len(); // main + webradios + // Utiliser le logo par défaut si server_base_url est configuré + let album_art = self.server_base_url.as_ref().map(|base| { + format!( + "{}/api/radiofrance/default-logo", + base.trim_end_matches('/') + ) + }); + Ok(Container { id: format!("radiofrance:group:{}", group.main.slug), parent_id: "radiofrance".to_string(), @@ -314,7 +322,7 @@ impl RadioFranceSource { title: group.main.name.clone(), class: "object.container".to_string(), artist: None, - album_art: None, + album_art, containers: vec![], items: vec![], }) @@ -323,6 +331,14 @@ impl RadioFranceSource { /// Build the "Radios ICI" container /// Returns an empty container - items will be built when browsing into it async fn build_ici_container(&self, local_radios: &[Station]) -> Result { + // Utiliser le logo par défaut si server_base_url est configuré + let album_art = self.server_base_url.as_ref().map(|base| { + format!( + "{}/api/radiofrance/default-logo", + base.trim_end_matches('/') + ) + }); + Ok(Container { id: "radiofrance:ici".to_string(), parent_id: "radiofrance".to_string(), @@ -332,7 +348,7 @@ impl RadioFranceSource { title: "Radios ICI".to_string(), class: "object.container".to_string(), artist: None, - album_art: None, + album_art, containers: vec![], items: vec![], })