bpi_rs/audio/
status_number.rs1use 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 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}