Skip to main content

bpi_rs/login/login_info/
stat.rs

1//! 登录用户状态数(双端)
2//!
3//! [查看 API 文档](https://socialsisteryi.github.io/bilibili-API-collect/docs/login/login_info.html#登录用户状态数-双端)
4
5use crate::{ BilibiliRequest, BpiClient, BpiError, BpiResponse };
6use serde::{ Deserialize, Serialize };
7
8/// 登录用户状态数 - 信息体
9#[derive(Debug, Clone, Serialize, Deserialize)]
10pub struct UserStat {
11    /// 当前关注数
12    pub following: u64,
13    /// 当前粉丝数
14    pub follower: u64,
15    /// 发布的动态数
16    pub dynamic_count: u64,
17}
18
19impl BpiClient {
20    /// 获取登录用户状态数(关注/粉丝/动态)
21    pub async fn login_info_user_stat(&self) -> Result<BpiResponse<UserStat>, BpiError> {
22        let result = self
23            .get("https://api.bilibili.com/x/web-interface/nav/stat")
24            .send_bpi("获取登录用户状态").await?;
25        Ok(result)
26    }
27}
28
29#[cfg(test)]
30mod tests {
31    use super::*;
32
33    #[tokio::test]
34    async fn test_get_user_stat() {
35        let bpi = BpiClient::new();
36
37        match bpi.login_info_user_stat().await {
38            Ok(resp) => {
39                if resp.code == 0 {
40                    let data = resp.data.unwrap();
41
42                    tracing::info!(
43                        "关注数: {}, 粉丝数: {}, 动态数: {}",
44                        data.following,
45                        data.follower,
46                        data.dynamic_count
47                    );
48                } else {
49                    tracing::info!("请求失败: code={}, message={}", resp.code, resp.message);
50                }
51            }
52            Err(err) => {
53                panic!("请求出错: {}", err);
54            }
55        }
56    }
57}