From 0348397173f38f3d4e6dc5797a12d87a54df5546 Mon Sep 17 00:00:00 2001 From: Eric Coissac Date: Fri, 26 Dec 2025 15:54:57 +0100 Subject: [PATCH] debug de la playlist history de radio paradise --- pmomediaserver/src/paradise_streaming.rs | 26 ------------------------ pmoparadise/src/playlist_feeder.rs | 15 ++++++++++++-- 2 files changed, 13 insertions(+), 28 deletions(-) diff --git a/pmomediaserver/src/paradise_streaming.rs b/pmomediaserver/src/paradise_streaming.rs index 7d132870..8e8b6a97 100644 --- a/pmomediaserver/src/paradise_streaming.rs +++ b/pmomediaserver/src/paradise_streaming.rs @@ -341,13 +341,6 @@ fn spawn_playlist_event_handler(manager: Arc) { e ); } - if let Err(e) = append_track_to_history(descriptor, &cache_pk).await { - tracing::warn!( - "Failed to update history for channel {}: {}", - descriptor.display_name, - e - ); - } } } } @@ -361,22 +354,3 @@ fn channel_from_live_playlist(playlist_id: &str) -> Option<&'static ChannelDescr .iter() .find(|descriptor| descriptor.slug == slug) } - -async fn append_track_to_history(descriptor: &ChannelDescriptor, cache_pk: &str) -> Result<()> { - let playlist_id = format!("radio-paradise-history-{}", descriptor.slug); - let manager = pmoplaylist::PlaylistManager(); - let handle = manager - .get_persistent_write_handle(playlist_id.clone()) - .await - .with_context(|| format!("Failed to get history playlist {}", playlist_id))?; - - if handle.contains_pk(cache_pk).await? { - return Ok(()); - } - - handle - .push(cache_pk.to_string()) - .await - .with_context(|| format!("Failed to append {} to {}", cache_pk, playlist_id))?; - Ok(()) -} diff --git a/pmoparadise/src/playlist_feeder.rs b/pmoparadise/src/playlist_feeder.rs index a004f470..b56f723c 100644 --- a/pmoparadise/src/playlist_feeder.rs +++ b/pmoparadise/src/playlist_feeder.rs @@ -272,14 +272,25 @@ impl RadioParadisePlaylistFeeder { // 5. Sauvegarder les métadonnées self.save_metadata(&pk, song, &block).await?; - // 6. Calculer le TTL + // 6. Vérifier si la chanson est déjà dans la playlist + if self.playlist_handle.contains_pk(&pk).await? { + tracing::debug!( + "RadioParadisePlaylistFeeder: Skipping duplicate song {} - {} (pk={})", + idx, + song.title, + pk + ); + continue; + } + + // 7. Calculer le TTL let sched_end = song .sched_end_time_ms() .ok_or_else(|| anyhow::anyhow!("Cannot calculate TTL without sched_time_millis"))?; let ttl_ms = sched_end.saturating_sub(now_ms); let ttl = Duration::from_millis(ttl_ms); - // 7. Push dans la playlist avec TTL + // 8. Push dans la playlist avec TTL self.playlist_handle.push_with_ttl(pk.clone(), ttl).await?; tracing::info!(