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:
1 parent
6b2466a976
commit
ab705db9cd
1 file changed
+15
-3
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
use reqwest::Client;
|
use reqwest::Client;
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
|
use serde_json;
|
||||||
use urlencoding::encode;
|
use urlencoding::encode;
|
||||||
|
|
||||||
use super::{normalize, LyricsProvider};
|
use super::{normalize, LyricsProvider};
|
||||||
@@ -128,20 +129,30 @@ async fn fetch_lrclib_get(
|
|||||||
) -> Result<Option<LrclibItem>, String> {
|
) -> Result<Option<LrclibItem>, String> {
|
||||||
let response = client
|
let response = client
|
||||||
.get("https://lrclib.net/api/get")
|
.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)])
|
.query(&[("track_name", title), ("artist_name", artist)])
|
||||||
.send()
|
.send()
|
||||||
.await
|
.await
|
||||||
.map_err(|e| format!("LRCLIB get request failed: {}", e))?;
|
.map_err(|e| format!("LRCLIB get request failed: {}", e))?;
|
||||||
|
|
||||||
if !response.status().is_success() {
|
if !response.status().is_success() {
|
||||||
|
println!("[Lyrics] LRCLIB get returned status: {}", response.status());
|
||||||
return Ok(None);
|
return Ok(None);
|
||||||
}
|
}
|
||||||
|
|
||||||
let item: LrclibItem = response
|
// Get raw text first for debugging
|
||||||
.json()
|
let text = response.text().await
|
||||||
.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))?;
|
.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))
|
Ok(Some(item))
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -153,6 +164,7 @@ async fn fetch_lrclib_search(
|
|||||||
let query = format!("{} {}", artist, title);
|
let query = format!("{} {}", artist, title);
|
||||||
let response = client
|
let response = client
|
||||||
.get("https://lrclib.net/api/search")
|
.get("https://lrclib.net/api/search")
|
||||||
|
.header("User-Agent", "QBZ-Nix/1.0 (https://github.com/qbz-nix)")
|
||||||
.query(&[("q", &query)])
|
.query(&[("q", &query)])
|
||||||
.send()
|
.send()
|
||||||
.await
|
.await
|
||||||
|
|||||||
Reference in new issue
Block a user