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.
This commit is contained in:
@@ -54,7 +54,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Enregistrer la source Radio France
|
// Enregistrer la source Radio France (inclut l'initialisation des routes API)
|
||||||
info!("📻 Registering Radio France source...");
|
info!("📻 Registering Radio France source...");
|
||||||
if let Err(e) = server.write().await.register_radiofrance().await {
|
if let Err(e) = server.write().await.register_radiofrance().await {
|
||||||
tracing::warn!("⚠️ Failed to register Radio France source: {}", e);
|
tracing::warn!("⚠️ Failed to register Radio France source: {}", e);
|
||||||
|
|||||||
@@ -243,7 +243,7 @@ impl SourcesExt for Server {
|
|||||||
|
|
||||||
#[cfg(feature = "radiofrance")]
|
#[cfg(feature = "radiofrance")]
|
||||||
async fn register_radiofrance(&mut self) -> Result<()> {
|
async fn register_radiofrance(&mut self) -> Result<()> {
|
||||||
use pmoradiofrance::{RadioFranceSource, RadioFranceStatefulClient};
|
use pmoradiofrance::{RadioFranceExt, RadioFranceSource, RadioFranceStatefulClient};
|
||||||
|
|
||||||
tracing::info!("Initializing Radio France source...");
|
tracing::info!("Initializing Radio France source...");
|
||||||
|
|
||||||
@@ -265,6 +265,11 @@ impl SourcesExt for Server {
|
|||||||
// Enregistrer la source
|
// Enregistrer la source
|
||||||
self.register_music_source(Arc::new(source)).await;
|
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");
|
tracing::info!("✅ Radio France source registered successfully");
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|||||||
@@ -305,6 +305,14 @@ impl RadioFranceSource {
|
|||||||
async fn build_station_container(&self, group: &StationGroup) -> Result<Container> {
|
async fn build_station_container(&self, group: &StationGroup) -> Result<Container> {
|
||||||
let child_count = 1 + group.webradios.len(); // main + webradios
|
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 {
|
Ok(Container {
|
||||||
id: format!("radiofrance:group:{}", group.main.slug),
|
id: format!("radiofrance:group:{}", group.main.slug),
|
||||||
parent_id: "radiofrance".to_string(),
|
parent_id: "radiofrance".to_string(),
|
||||||
@@ -314,7 +322,7 @@ impl RadioFranceSource {
|
|||||||
title: group.main.name.clone(),
|
title: group.main.name.clone(),
|
||||||
class: "object.container".to_string(),
|
class: "object.container".to_string(),
|
||||||
artist: None,
|
artist: None,
|
||||||
album_art: None,
|
album_art,
|
||||||
containers: vec![],
|
containers: vec![],
|
||||||
items: vec![],
|
items: vec![],
|
||||||
})
|
})
|
||||||
@@ -323,6 +331,14 @@ impl RadioFranceSource {
|
|||||||
/// Build the "Radios ICI" container
|
/// Build the "Radios ICI" container
|
||||||
/// Returns an empty container - items will be built when browsing into it
|
/// Returns an empty container - items will be built when browsing into it
|
||||||
async fn build_ici_container(&self, local_radios: &[Station]) -> Result<Container> {
|
async fn build_ici_container(&self, local_radios: &[Station]) -> Result<Container> {
|
||||||
|
// 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 {
|
Ok(Container {
|
||||||
id: "radiofrance:ici".to_string(),
|
id: "radiofrance:ici".to_string(),
|
||||||
parent_id: "radiofrance".to_string(),
|
parent_id: "radiofrance".to_string(),
|
||||||
@@ -332,7 +348,7 @@ impl RadioFranceSource {
|
|||||||
title: "Radios ICI".to_string(),
|
title: "Radios ICI".to_string(),
|
||||||
class: "object.container".to_string(),
|
class: "object.container".to_string(),
|
||||||
artist: None,
|
artist: None,
|
||||||
album_art: None,
|
album_art,
|
||||||
containers: vec![],
|
containers: vec![],
|
||||||
items: vec![],
|
items: vec![],
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user