Skip to main content

download_video/
download_video.rs

1use 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                // potplayer低于v1.7.21759,尝试GPU解码av1编码格式时会有黑屏问题,这里用avc编码
19                .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}