From 17b426be66491d73ad68e3e4cec4ea59ae0fd0e0 Mon Sep 17 00:00:00 2001 From: Oleg Sobolev Date: Thu, 4 Apr 2024 10:22:30 +0700 Subject: [PATCH] split download --- src/download.rs | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/src/download.rs b/src/download.rs index 501839c..f29b533 100644 --- a/src/download.rs +++ b/src/download.rs @@ -6,6 +6,28 @@ use crate::{file::FileHandle, track::{Track, TrackInfo}}; pub struct DownloadError; pub fn download_from_youtube(url: &str) -> Result { + let output = Command::new("yt-dlp") + .args([ + "--print", + "%(id)s %(duration)i", + "--no-playlist", + "--no-warnings", + "--", + url, + ]).output().unwrap(); + + let items: Vec = 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 { "--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 { 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);