Skip to main content

ncm_api_rs/api/
cloud_upload_complete.rs

1use super::Query;
2use crate::error::Result;
3/// 云盘上传完成
4/// 对应 Node.js module/cloud_upload_complete.js
5use crate::request::{ApiClient, ApiResponse, CryptoType};
6use serde_json::json;
7
8impl ApiClient {
9    /// 云盘上传完成 - 提交云盘信息
10    /// 对应 /cloud/upload/complete(信息提交步骤)
11    pub async fn cloud_upload_complete_info(&self, query: &Query) -> Result<ApiResponse> {
12        let filename = query.get_or("filename", "");
13        let song = if let Some(s) = query.get("song") {
14            s.to_string()
15        } else {
16            filename
17                .rsplit_once('.')
18                .map(|(name, _)| name)
19                .unwrap_or(&filename)
20                .to_string()
21        };
22        let data = json!({
23            "md5": query.get_or("md5", ""),
24            "songid": query.get_or("songId", ""),
25            "filename": &filename,
26            "song": song,
27            "album": query.get_or("album", "未知专辑"),
28            "artist": query.get_or("artist", "未知艺术家"),
29            "bitrate": query.get_or("bitrate", "999000"),
30            "resourceId": query.get_or("resourceId", "")
31        });
32        self.request(
33            "/api/upload/cloud/info/v2",
34            data,
35            query.to_option(CryptoType::default()),
36        )
37        .await
38    }
39
40    /// 云盘上传完成 - 发布
41    /// 对应 /cloud/upload/complete(发布步骤)
42    pub async fn cloud_upload_complete_pub(&self, query: &Query) -> Result<ApiResponse> {
43        let data = json!({
44            "songid": query.get_or("songId", "")
45        });
46        self.request(
47            "/api/cloud/pub/v2",
48            data,
49            query.to_option(CryptoType::default()),
50        )
51        .await
52    }
53}