delete tmp file if error happens
This commit is contained in:
parent
fed938d04e
commit
7fb721496a
1 changed files with 18 additions and 1 deletions
19
src/dl.rs
19
src/dl.rs
|
|
@ -1,3 +1,4 @@
|
||||||
|
use std::fs;
|
||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
|
|
||||||
use self::spawn::SpawnError;
|
use self::spawn::SpawnError;
|
||||||
|
|
@ -33,6 +34,19 @@ fn make_download_path(info: &YtDlpInfo, format: &YtDlpFormat) -> Result<String,
|
||||||
.map_err(|e| DownloadError::MakePathError)
|
.map_err(|e| DownloadError::MakePathError)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn file_exists(path: &str) -> 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<String, DownloadError> {
|
pub async fn download(url: &str) -> Result<String, DownloadError> {
|
||||||
let info = YtDlp::load_info(url).await?;
|
let info = YtDlp::load_info(url).await?;
|
||||||
let av = match info.best_av_format() {
|
let av = match info.best_av_format() {
|
||||||
|
|
@ -41,7 +55,10 @@ pub async fn download(url: &str) -> Result<String, DownloadError> {
|
||||||
};
|
};
|
||||||
|
|
||||||
let output_path = make_download_path(&info, &av)?;
|
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)
|
Ok(output_path)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue