Skip to main content

ncm_api_rs/api/
playlist_tracks.rs

1use super::Query;
2use crate::error::Result;
3/// 收藏/取消收藏歌曲到歌单
4/// 对应 Node.js module/playlist_tracks.js
5use crate::request::{ApiClient, ApiResponse, CryptoType};
6use serde_json::json;
7
8impl ApiClient {
9    /// 收藏/删除歌曲到歌单
10    /// 对应 /playlist/tracks
11    pub async fn playlist_tracks(&self, query: &Query) -> Result<ApiResponse> {
12        let tracks: Vec<String> = query
13            .get_or("tracks", "")
14            .split(',')
15            .map(|s| s.trim().to_string())
16            .filter(|s| !s.is_empty())
17            .collect();
18        let data = json!({
19            "op": query.get_or("op", "add"),
20            "pid": query.get_or("pid", "0"),
21            "trackIds": serde_json::to_string(&tracks).unwrap_or_default(),
22            "imme": "true"
23        });
24        self.request(
25            "/api/playlist/manipulate/tracks",
26            data,
27            query.to_option(CryptoType::default()),
28        )
29        .await
30    }
31}