fix(lyrics): add User-Agent header and debug logging to LRCLIB requests

LRCLIB API may require User-Agent header. Added debug logging to
see raw response and parsing results.
This commit is contained in:
vicrodh committed 2026-01-10 07:24:26 -06:00
1 parent 6b2466a976
commit ab705db9cd
1 file changed
+15 -3
+15 -3
View File
@@ -2,6 +2,7 @@
use reqwest::Client;
use serde::Deserialize;
use serde_json;
use urlencoding::encode;
use super::{normalize, LyricsProvider};
@@ -128,20 +129,30 @@ async fn fetch_lrclib_get(
) -> Result<Option<LrclibItem>, String> {
let response = client
.get("https://lrclib.net/api/get")
.header("User-Agent", "QBZ-Nix/1.0 (https://github.com/qbz-nix)")
.query(&[("track_name", title), ("artist_name", artist)])
.send()
.await
.map_err(|e| format!("LRCLIB get request failed: {}", e))?;
if !response.status().is_success() {
println!("[Lyrics] LRCLIB get returned status: {}", response.status());
return Ok(None);
}
let item: LrclibItem = response
.json()
.await
// Get raw text first for debugging
let text = response.text().await
.map_err(|e| format!("LRCLIB get response text failed: {}", e))?;
// Log if syncedLyrics is present in raw response
let has_synced = text.contains("syncedLyrics") && !text.contains("\"syncedLyrics\":null");
println!("[Lyrics] LRCLIB get raw response has syncedLyrics: {}, len: {}", has_synced, text.len());
let item: LrclibItem = serde_json::from_str(&text)
.map_err(|e| format!("LRCLIB get response parse failed: {}", e))?;
println!("[Lyrics] LRCLIB parsed - synced_lyrics present: {}", item.synced_lyrics.is_some());
Ok(Some(item))
}
@@ -153,6 +164,7 @@ async fn fetch_lrclib_search(
let query = format!("{} {}", artist, title);
let response = client
.get("https://lrclib.net/api/search")
.header("User-Agent", "QBZ-Nix/1.0 (https://github.com/qbz-nix)")
.query(&[("q", &query)])
.send()
.await