bpi_rs/video/info/
desc.rs1use crate::{ BilibiliRequest, BpiClient, BpiError, BpiResponse };
6use serde::{ Deserialize, Serialize };
7
8#[derive(Debug, Clone, Serialize, Deserialize)]
10pub struct VideoDescResponse {
11 pub code: i32,
16 pub message: String,
18 pub ttl: i32,
20 pub data: String,
22}
23
24impl BpiClient {
25 pub async fn video_desc(
38 &self,
39 aid: Option<u64>,
40 bvid: Option<&str>
41 ) -> Result<BpiResponse<String>, BpiError> {
42 let mut builder = self.get("http://api.bilibili.com/x/web-interface/archive/desc");
43
44 if let Some(aid) = aid {
45 builder = builder.query(&[("aid", aid.to_string())]);
46 }
47 if let Some(bvid) = bvid {
48 builder = builder.query(&[("bvid", bvid)]);
49 }
50
51 builder.send_bpi("获取稿件简介").await
52 }
53}
54
55#[cfg(test)]
56mod tests {
57 use super::*;
58
59 #[tokio::test]
60 async fn test_video_desc() {
61 let bpi = BpiClient::new();
62
63 match bpi.video_desc(Some(10001), None).await {
64 Ok(resp) => {
65 if resp.code == 0 {
66 tracing::info!("稿件简介: {}", resp.data.unwrap());
67 } else {
68 tracing::info!("请求失败: code={}, message={}", resp.code, resp.message);
69 }
70 }
71 Err(err) => {
72 panic!("请求出错: {}", err);
73 }
74 }
75 }
76}