Skip to main content

show_video_info_raw/
show_video_info_raw.rs

1use std::error::Error;
2
3use serde_json::Value;
4use ybd_core::{
5        client::BiliClient, login, model::param::VideoRequestParamBuilder, url::VIDEO_DOWNLOAD_URL,
6        util::extract_bv_id,
7};
8
9#[tokio::main]
10async fn main() -> Result<(), Box<dyn Error>> {
11        let account = login::get_account().await?;
12        let bili_client = BiliClient::new(&account)?;
13        let bvid = extract_bv_id(
14                "https://www.bilibili.com/video/BV17W411e7VL/?spm_id_from=333.337.search-card.all.click&vd_source=8bd37d9aaf81178ae3e80214a1c8e367",
15        )?;
16        let vrp = VideoRequestParamBuilder::new(&bvid, &bili_client)
17                .await?
18                .build(&bili_client)
19                .await?;
20        let url = format!("{}?{}", VIDEO_DOWNLOAD_URL, vrp.to_query_string());
21        let resp: Value = bili_client.get(&url).send().await?.json().await?;
22
23        let json_str = serde_json::to_string_pretty(&resp)?;
24        tokio::fs::create_dir_all("output").await?;
25        tokio::fs::write("output/video_example.json", json_str).await?;
26        println!("The res is outputed to output/video_example.json");
27        Ok(())
28}