use crate::{ BilibiliRequest, BpiClient, BpiError, BpiResponse };
use serde::{ Deserialize, Serialize };
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct PreciousVideoData {
pub title: String,
pub media_id: u64,
pub explain: String,
pub list: Vec<serde_json::Value>, }
impl BpiClient {
pub async fn video_popular_precious(&self) -> Result<BpiResponse<PreciousVideoData>, BpiError> {
self
.get("https://api.bilibili.com/x/web-interface/popular/precious")
.send_bpi("获取入站必刷视频").await
}
}
#[cfg(test)]
mod tests {
use super::*;
use tracing::info;
#[tokio::test]
async fn test_video_popular_precious() {
let bpi = BpiClient::new();
let resp = bpi.video_popular_precious().await;
info!("{:?}", resp);
assert!(resp.is_ok());
let resp_data = resp.unwrap();
info!("code: {}", resp_data.code);
if let Some(data) = resp_data.data {
info!("total lists: {}", data.list.len());
info!("first list item: {:?}", data.list.first());
}
}
}