From 7fb721496a10d3d5e35997214dcf7bbd05330393 Mon Sep 17 00:00:00 2001 From: mykola2312 <49044616+mykola2312@users.noreply.github.com> Date: Wed, 21 Feb 2024 20:28:31 +0200 Subject: [PATCH] delete tmp file if error happens --- src/dl.rs | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/dl.rs b/src/dl.rs index 25365b4..6777c66 100644 --- a/src/dl.rs +++ b/src/dl.rs @@ -1,3 +1,4 @@ +use std::fs; use std::path::Path; use self::spawn::SpawnError; @@ -33,6 +34,19 @@ fn make_download_path(info: &YtDlpInfo, format: &YtDlpFormat) -> Result bool { + match fs::metadata(path) { + Ok(_) => true, + Err(_) => false + } +} + +pub fn delete_if_exists(path: &str) { + if file_exists(path) { + fs::remove_file(path); + } +} + pub async fn download(url: &str) -> Result { let info = YtDlp::load_info(url).await?; let av = match info.best_av_format() { @@ -41,7 +55,10 @@ pub async fn download(url: &str) -> Result { }; let output_path = make_download_path(&info, &av)?; - YtDlp::download(url, &av.format_id, output_path.as_str()).await?; + if let Err(e) = YtDlp::download(url, &av.format_id, output_path.as_str()).await { + delete_if_exists(&output_path); + return Err(DownloadError::Message(e.to_string())); + } Ok(output_path) }