use rusty_dl::prelude::*;
#[tokio::test]
async fn youtube() -> Result<(), DownloadError> {
use std::path::Path;
let start = tokio::time::Instant::now();
println!("Downloading...");
let content = tokio::fs::read_to_string("test.youtube").await?;
let lines = content.lines();
let results = futures::future::join_all(lines.into_iter().map(|line| async move {
let mut downloader = YoutubeDownloader::new(line.trim())?;
let video_name = downloader
.get_video()?
.get_basic_info()
.await?
.video_details
.title;
downloader.with_name(
Path::new(&video_name)
.with_extension("mp4")
.to_string_lossy()
.to_string(),
);
downloader
.download_to(Path::new("./tests-run/videos/"))
.await
}))
.await;
for result in results {
result?
}
assert_folder_len("./tests-run/videos/", 2)?;
println!("Download finished!");
println!("it took {} seconds!", start.elapsed().as_secs_f64());
Ok(())
}
#[tokio::test]
async fn youtube_basic() -> Result<(), DownloadError> {
let start = tokio::time::Instant::now();
println!("Downloading...");
let content = tokio::fs::read_to_string("test.youtube").await?;
let mut lines = content.lines();
let downloader = YoutubeDownloader::new(lines.next().unwrap()).unwrap();
let result = downloader.download_to("./tests-run/").await;
assert!(result.is_ok());
println!("Download finished!");
println!("it took {} seconds!", start.elapsed().as_secs_f64());
Ok(())
}
fn assert_folder_len(name: &str, len: usize) -> Result<(), std::io::Error> {
assert_eq!(std::fs::read_dir(std::path::Path::new(name))?.count(), len);
Ok(())
}