From c2ad1f375e0e461f1a88196088eed733d43e7589 Mon Sep 17 00:00:00 2001 From: Kirikaze Chiyuki Date: Sun, 4 Aug 2024 12:45:45 +0800 Subject: [PATCH] [fix] netease search result unwrap --- src/lyric_providers/netease.rs | 6 +++++- src/lyric_providers/netease_trackid.rs | 23 +++++++++++++---------- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/src/lyric_providers/netease.rs b/src/lyric_providers/netease.rs index d0e6d20..acb225b 100644 --- a/src/lyric_providers/netease.rs +++ b/src/lyric_providers/netease.rs @@ -34,7 +34,11 @@ impl NeteaseLyricProvider { ).await; return if let Ok(search_result) = search_result { // 搜索有结果 - let search_result: Value = from_json_str(&search_result).unwrap(); + let search_result = from_json_str(&search_result); + if search_result.is_err() { + return (Vec::new(), false); + } + let search_result: Value = search_result.unwrap(); for song in search_result["result"]["songs"].as_array().unwrap_or(&Vec::new()) { if let Some(name) = song.get("name") { if name.as_str().unwrap_or_default().to_ascii_lowercase().starts_with( diff --git a/src/lyric_providers/netease_trackid.rs b/src/lyric_providers/netease_trackid.rs index 715162e..fd006a3 100644 --- a/src/lyric_providers/netease_trackid.rs +++ b/src/lyric_providers/netease_trackid.rs @@ -11,16 +11,19 @@ pub struct NeteaseTrackIDLyricProvider {} impl NeteaseTrackIDLyricProvider { pub async fn get_lyric_by_metadata(&self, metadata: &Metadata) -> (Vec, bool) { let ncm_api = ncm_api::MusicApi::new(0); - let track_id = metadata.track_id().unwrap().to_string(); - let music_id = track_id.rsplit("/").next().unwrap().parse::().unwrap(); - let lyric_result = ncm_api.song_lyric(music_id).await; - if let Ok(lyric_result) = lyric_result { - let lyric_lines = lyric_result.lyric; - let tlyric_lines = lyric_result.tlyric; - return ( - parse_netease_lyrics(lyric_lines, tlyric_lines), - true - ); + if let Some(track_id) = metadata.track_id() { + // let music_id = track_id.rsplit("/").next().unwrap().parse::().unwrap(); + if let Ok(music_id) = track_id.as_str().rsplit("/").next().unwrap().parse::() { + let lyric_result = ncm_api.song_lyric(music_id).await; + if let Ok(lyric_result) = lyric_result { + let lyric_lines = lyric_result.lyric; + let tlyric_lines = lyric_result.tlyric; + return ( + parse_netease_lyrics(lyric_lines, tlyric_lines), + true + ); + } + } } (Vec::new(), false) }