ncm_api_rs/api/
audio_match.rs1use super::Query;
2use crate::error::Result;
3use crate::request::{ApiClient, ApiResponse};
9use serde_json::json;
10
11impl ApiClient {
12 pub async fn audio_match(&self, query: &Query) -> Result<ApiResponse> {
15 let duration = query.get_or("duration", "0");
16 let audio_fp = query.get_or("audioFP", "");
17 let encoded_fp = urlencoding::encode(&audio_fp);
18 let url = format!(
19 "https://interface.music.163.com/api/music/audio/match?sessionId=0123456789abcdef&algorithmCode=shazam_v2&duration={}&rawdata={}×=1&decrypt=1",
20 duration, encoded_fp
21 );
22
23 let client = reqwest::Client::new();
24 let res = client.get(&url).send().await?;
25 let body: serde_json::Value = res.json().await?;
26
27 Ok(ApiResponse {
28 status: 200,
29 body: json!({
30 "code": 200,
31 "data": body.get("data").cloned().unwrap_or(json!(null)),
32 }),
33 cookie: vec![],
34 })
35 }
36}