Skip to main content

ncm_api_rs/api/
scrobble.rs

1use super::Query;
2use crate::error::Result;
3/// 听歌打卡
4/// 对应 Node.js module/scrobble.js
5use crate::request::{ApiClient, ApiResponse, CryptoType};
6use serde_json::json;
7
8impl ApiClient {
9    /// 听歌打卡
10    /// 对应 /scrobble
11    pub async fn scrobble(&self, query: &Query) -> Result<ApiResponse> {
12        let data = json!({
13            "logs": serde_json::to_string(&json!([{
14                "action": "play",
15                "json": {
16                    "download": 0,
17                    "end": "playend",
18                    "id": query.get_or("id", "0"),
19                    "sourceId": query.get_or("sourceid", ""),
20                    "time": query.get_or("time", "0").parse::<i64>().unwrap_or(0),
21                    "type": "song",
22                    "wifi": 0,
23                    "source": "list",
24                    "mainsite": 1,
25                    "content": ""
26                }
27            }])).unwrap_or_default()
28        });
29        self.request(
30            "/api/feedback/weblog",
31            data,
32            query.to_option(CryptoType::Weapi),
33        )
34        .await
35    }
36}