split download
This commit is contained in:
parent
7bfca6f035
commit
17b426be66
1 changed files with 22 additions and 10 deletions
|
|
@ -6,6 +6,28 @@ use crate::{file::FileHandle, track::{Track, TrackInfo}};
|
||||||
pub struct DownloadError;
|
pub struct DownloadError;
|
||||||
|
|
||||||
pub fn download_from_youtube(url: &str) -> Result<Track, 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")
|
let output = Command::new("yt-dlp")
|
||||||
.args([
|
.args([
|
||||||
"-o",
|
"-o",
|
||||||
|
|
@ -13,9 +35,6 @@ pub fn download_from_youtube(url: &str) -> Result<Track, DownloadError> {
|
||||||
"--extract-audio",
|
"--extract-audio",
|
||||||
"--audio-format",
|
"--audio-format",
|
||||||
"mp3",
|
"mp3",
|
||||||
"--print",
|
|
||||||
"%(id)s",
|
|
||||||
"--no-simulate",
|
|
||||||
"--no-playlist",
|
"--no-playlist",
|
||||||
"--no-warnings",
|
"--no-warnings",
|
||||||
"--",
|
"--",
|
||||||
|
|
@ -30,13 +49,6 @@ pub fn download_from_youtube(url: &str) -> Result<Track, DownloadError> {
|
||||||
return Err(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 file_handle = FileHandle::new(Path::new(filename.as_str()));
|
||||||
let info = TrackInfo::new(&filename);
|
let info = TrackInfo::new(&filename);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue