use super::Query;
use crate::error::Result;
use crate::request::{ApiClient, ApiResponse};
use serde_json::json;
impl ApiClient {
pub async fn audio_match(&self, query: &Query) -> Result<ApiResponse> {
let duration = query.get_or("duration", "0");
let audio_fp = query.get_or("audioFP", "");
let encoded_fp = urlencoding::encode(&audio_fp);
let url = format!(
"https://interface.music.163.com/api/music/audio/match?sessionId=0123456789abcdef&algorithmCode=shazam_v2&duration={}&rawdata={}×=1&decrypt=1",
duration, encoded_fp
);
let client = reqwest::Client::new();
let res = client.get(&url).send().await?;
let body: serde_json::Value = res.json().await?;
Ok(ApiResponse {
status: 200,
body: json!({
"code": 200,
"data": body.get("data").cloned().unwrap_or(json!(null)),
}),
cookie: vec![],
})
}
}