download_video/
download_video.rs1use std::{error::Error, path::Path};
2use tokio::fs;
3use ybd_core::{
4 actuator,
5 client::BiliClient,
6 login,
7 model::{download::DownloadOption, quality::VideoEncode, video::PlayUrlResponse},
8};
9#[tokio::main]
10async fn main() -> Result<(), Box<dyn Error>> {
11 let account = login::get_account().await?;
12 let biliclient = BiliClient::new(&account)?;
13 let bvid = "BV1JvPMedE5E";
14
15 let resp = PlayUrlResponse::new(&biliclient, bvid).await?;
16 fs::create_dir_all("output").await?;
17 let option = DownloadOption::builder()
18 .video_encode(VideoEncode::AVC)
20 .audio_path(Path::new("output/audio_example.m4a"))
21 .video_path(Path::new("output/video_example.mp4"))
22 .output(Path::new("output/video_sample.mp4"))
23 .build();
24 actuator::download_video(&biliclient, &resp, &option).await?;
25 println!("The video is outputed to output/video_sample.mp4");
26 Ok(())
27}