From 6fcecaab00e292107c85b0e3bbcdd67aebd17271 Mon Sep 17 00:00:00 2001 From: Eric Coissac Date: Sat, 4 Apr 2026 12:58:17 +0200 Subject: [PATCH] :bookmark: version bump to v0.3.29 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Bump crate and file versions from `v0.3.29` to v\[correction: actually 0\.3\.33] (see Cargo.toml & version.txt) - Extend cover URL transformation logic to queue items in `pmoserver_ext.rs`—now transforms album art for both current track *and* queue items - Add debug logging to cover URL transformation steps (local route, instance match & proxy) - Minor cleanup: remove redundant `clone()` in base_url usage --- PMOMusic/Cargo.toml | 2 +- pmocontrol/src/pmoserver_ext.rs | 21 ++++++++++++++++++--- version.txt | 2 +- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/PMOMusic/Cargo.toml b/PMOMusic/Cargo.toml index 9511d43e..f5123ab0 100644 --- a/PMOMusic/Cargo.toml +++ b/PMOMusic/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "PMOMusic" -version = "0.3.32" +version = "0.3.33" edition = "2024" [dependencies] diff --git a/pmocontrol/src/pmoserver_ext.rs b/pmocontrol/src/pmoserver_ext.rs index b73bce8c..883e9867 100644 --- a/pmocontrol/src/pmoserver_ext.rs +++ b/pmocontrol/src/pmoserver_ext.rs @@ -196,7 +196,7 @@ async fn get_renderer_full_snapshot( let base_url_str = pmoserver::get_base_url_from_request(&headers); let base_url = pmoserver::BaseUrl(base_url_str); - // Transform cover URLs in current_track using async version + // Transform cover URLs in current_track if let Some(ref mut current_track) = snapshot.state.current_track { if let Some(ref album_art) = current_track.album_art_uri { if let Some(transformed) = transform_cover_url(Some(album_art), &base_url).await { @@ -205,6 +205,15 @@ async fn get_renderer_full_snapshot( } } + // Transform cover URLs in queue items + for item in &mut snapshot.queue.items { + if let Some(ref album_art) = item.album_art_uri { + if let Some(transformed) = transform_cover_url(Some(album_art), &base_url).await { + item.album_art_uri = Some(transformed); + } + } + } + Ok(Json(snapshot)) } @@ -239,7 +248,7 @@ async fn get_renderer_queue( // Get base_url from request headers let base_url_str = pmoserver::get_base_url_from_request(&headers); - let base_url = pmoserver::BaseUrl(base_url_str); + let base_url = pmoserver::BaseUrl(base_url_str.clone()); // Transform cover URLs in all queue items using async version for item in &mut snapshot.queue.items { @@ -2249,17 +2258,23 @@ async fn transform_cover_url(url: Option<&str>, base_url: &pmoserver::BaseUrl) - // Si c'est déjà une route locale de notre cache, la transformer en URL absolue if url.starts_with("/covers/") { + debug!(url = %url, "Already local cover route"); return Some(base_url.url_for(url)); } // Si c'est une URL de notre instance, la retourner directement if url.starts_with(&base_url.0) { + debug!(url = %url, "Already our instance URL"); return Some(url.to_string()); } // Pour les autres URLs, utiliser le mechanisme de proxy standard (comme Qobuz) + debug!(url = %url, "Proxyfying cover URL via pmocovers"); match pmocovers::proxy_cover_url(url, base_url).await { - Ok(local_url) => Some(local_url), + Ok(local_url) => { + debug!(result = %local_url, "Proxified successfully"); + Some(local_url) + }, Err(e) => { tracing::warn!("Failed to proxy cover URL {}: {}", url, e); Some(url.to_string()) diff --git a/version.txt b/version.txt index cd906cd5..55cebfb9 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -0.3.32 +0.3.33