Skip to main content

bpi_rs/audio/
status_number.rs

1//! 音频状态数
2//!
3//! [查看 API 文档](https://github.com/Yuelioi/bilibili-API-collect/tree/cfc5fddcc8a94b74d91970bb5b4eaeb349addc47/docs/audio/status_number.md)
4use crate::{ BilibiliRequest, BpiClient, BpiError, BpiResponse };
5use serde::{ Deserialize, Serialize };
6
7#[derive(Debug, Clone, Serialize, Deserialize)]
8pub struct AudioStatusNumberData {
9    pub sid: i64,
10    pub play: i64,
11    pub collect: i64,
12    pub comment: i64,
13    pub share: i64,
14}
15
16impl BpiClient {
17    /// 查询歌曲状态数
18    ///
19    /// 唯缺投币数2333333
20    ///
21    /// # 参数
22    /// | 名称   | 类型  | 说明       |
23    /// | ------ | ----- | ---------- |
24    /// | `sid`  | i64   | 音频 auid |
25    ///
26    /// # 文档
27    /// [歌曲状态数](https://github.com/Yuelioi/bilibili-API-collect/tree/cfc5fddcc8a94b74d91970bb5b4eaeb349addc47/docs/audio/status_number.md#歌曲状态数)
28    pub async fn audio_status_number(
29        &self,
30        sid: i64
31    ) -> Result<BpiResponse<AudioStatusNumberData>, BpiError> {
32        self
33            .get("https://www.bilibili.com/audio/music-service-c/web/stat/song")
34            .query(&[("sid", sid.to_string())])
35            .send_bpi("查询歌曲状态数").await
36    }
37}
38
39#[cfg(test)]
40mod tests {
41    use super::*;
42
43    #[tokio::test]
44    async fn test_audio_status_number() -> Result<(), Box<BpiError>> {
45        let bpi = BpiClient::new();
46        let result = bpi.audio_status_number(15664).await?;
47        let data = result.into_data()?;
48        tracing::info!("{:#?}", data);
49
50        assert_eq!(data.sid, 15664);
51        assert!(data.play >= 0);
52        assert!(data.collect >= 0);
53        assert!(data.comment >= 0);
54        assert!(data.share >= 0);
55
56        Ok(())
57    }
58}