split download

This commit is contained in:
Oleg Sobolev 2024-04-04 10:22:30 +07:00
parent 7bfca6f035
commit 17b426be66

View file

@ -6,6 +6,28 @@ use crate::{file::FileHandle, track::{Track, TrackInfo}};
pub struct DownloadError;
pub fn download_from_youtube(url: &str) -> Result<Track, DownloadError> {
let output = Command::new("yt-dlp")
.args([
"--print",
"%(id)s %(duration)i",
"--no-playlist",
"--no-warnings",
"--",
url,
]).output().unwrap();
let items: Vec<String> = std::str::from_utf8(&output.stdout).unwrap().split(' ').map(|s| s.replace("\n", "")).collect();
let filename = items[0].clone() + ".mp3";
let duration: u32 = items[1].parse().unwrap();
println!("{}", filename);
println!("{}", duration);
if duration > 900 {
return Err(DownloadError);
}
let output = Command::new("yt-dlp")
.args([
"-o",
@ -13,9 +35,6 @@ pub fn download_from_youtube(url: &str) -> Result<Track, DownloadError> {
"--extract-audio",
"--audio-format",
"mp3",
"--print",
"%(id)s",
"--no-simulate",
"--no-playlist",
"--no-warnings",
"--",
@ -30,13 +49,6 @@ pub fn download_from_youtube(url: &str) -> Result<Track, DownloadError> {
return Err(DownloadError);
}
let filename = std::str::from_utf8(output.stdout.as_slice())
.unwrap()
.replace('\n', "")
+ ".mp3";
println!("{}", filename);
let file_handle = FileHandle::new(Path::new(filename.as_str()));
let info = TrackInfo::new(&filename);