use rusty_dl::{
errors::DownloadError,
youtube::{VideoInfo, YoutubeDownloader},
Downloader,
};
const LINK: &str = "https://youtube.com/video_id";
fn main() -> Result<(), DownloadError> {
let mut downloader = YoutubeDownloader::new(LINK)?;
downloader.video_and_audio();
downloader.only_audio();
downloader.only_video();
downloader.print_dl_status();
downloader.rename_with_underscores();
downloader.with_name("My fav video".to_owned());
downloader.blocking_download()?;
Ok(())
}
#[allow(dead_code)]
async fn video_data(downloader: &YoutubeDownloader) -> Result<VideoInfo, DownloadError> {
let video = downloader.get_video()?;
let infos = video.get_basic_info().await?;
Ok(infos)
}
#[allow(dead_code)]
async fn async_example() -> Result<(), DownloadError> {
let downloader = YoutubeDownloader::new(LINK)?;
downloader.download().await?;
Ok(())
}
#[allow(dead_code)]
async fn dl_to<P>(path: P) -> Result<(), DownloadError>
where
P: AsRef<std::path::Path> + std::marker::Send,
{
let downloader = YoutubeDownloader::new(LINK)?;
downloader.download_to(path).await?;
Ok(())
}
#[allow(dead_code)]
async fn dl_playlist_to<P>(path: P) -> Result<(), DownloadError>
where
P: AsRef<std::path::Path> + std::marker::Send,
{
let mut downloader = YoutubeDownloader::new(LINK)?;
downloader.set_playlist_video_filter(|video| {
video.is_playable && video.title.accessibility.accessibility_data.label == "My fav video"
});
downloader.download_to(path).await?;
Ok(())
}