Skip to main content

ncm_api_rs/api/
song_url_v1.rs

1use super::Query;
2use crate::error::Result;
3/// 歌曲播放链接 v1
4/// 对应 Node.js module/song_url_v1.js
5use crate::request::{ApiClient, ApiResponse, CryptoType};
6use serde_json::json;
7
8impl ApiClient {
9    /// 歌曲播放链接
10    /// 对应 /song/url/v1
11    pub async fn song_url_v1(&self, query: &Query) -> Result<ApiResponse> {
12        let id = query.get_or("id", "0");
13        let level = query.get_or("level", "standard");
14        let mut data = json!({
15            "ids": format!("[{}]", id),
16            "level": level,
17            "encodeType": "flac"
18        });
19        if level == "sky" {
20            data["immerseType"] = json!("c51");
21        }
22        self.request(
23            "/api/song/enhance/player/url/v1",
24            data,
25            query.to_option(CryptoType::default()),
26        )
27        .await
28    }
29}