From 91eca478c4dccc0d673e98412c55762950dcee46 Mon Sep 17 00:00:00 2001 From: Oleg Sobolev Date: Mon, 25 Mar 2024 16:56:06 +0700 Subject: [PATCH] make download_from_youtube return Result --- src/download.rs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/download.rs b/src/download.rs index 27871f4..9671b1e 100644 --- a/src/download.rs +++ b/src/download.rs @@ -1,7 +1,10 @@ use crate::track::TrackInfo; use std::{path::Path, process::Command}; -pub fn download_from_youtube(url: &str) -> TrackInfo { +#[derive(Debug, Clone, Copy)] +pub struct DownloadError; + +pub fn download_from_youtube(url: &str) -> Result { let output = Command::new("yt-dlp") .args([ "-o", @@ -16,10 +19,14 @@ pub fn download_from_youtube(url: &str) -> TrackInfo { .output() .unwrap(); + if !output.stderr.is_empty() { + return Err(DownloadError); + } + let filename = std::str::from_utf8(output.stdout.as_slice()) .unwrap() .replace('\n', "") + ".mp3"; - TrackInfo::new(&Path::new(filename.as_str())) + Ok(TrackInfo::new(&Path::new(filename.as_str()))) }