feat; skip existing songs before downloading (#40)

This commit is contained in:
45Ninjas 2022-09-01 17:19:41 +08:00 committed by GitHub
parent 811991b609
commit 8e06c9bdf3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 0 deletions

View file

@ -531,6 +531,13 @@ impl DownloaderInternal {
}
);
let path = Path::new(&path).to_owned();
// Don't download if we are skipping and the path exists.
if config.skip_existing && path.is_file() {
return Err(SpotifyError::AlreadyDownloaded);
}
let path_clone = path.clone();
let key = session.audio_key().request(track.id, *file_id).await?;
@ -861,6 +868,7 @@ pub struct DownloaderConfig {
pub id3v24: bool,
pub convert_to_mp3: bool,
pub separator: String,
pub skip_existing: bool,
}
impl DownloaderConfig {
@ -874,6 +882,7 @@ impl DownloaderConfig {
id3v24: true,
convert_to_mp3: false,
separator: ", ".to_string(),
skip_existing: true
}
}
}

View file

@ -19,6 +19,7 @@ pub enum SpotifyError {
ID3Error(String, String),
Reqwest(String),
InvalidFormat,
AlreadyDownloaded,
}
impl std::error::Error for SpotifyError {}
@ -42,6 +43,7 @@ impl fmt::Display for SpotifyError {
SpotifyError::ID3Error(k, e) => write!(f, "ID3 Error: {} {}", k, e),
SpotifyError::Reqwest(e) => write!(f, "Reqwest Error: {}", e),
SpotifyError::InvalidFormat => write!(f, "Invalid Format!"),
SpotifyError::AlreadyDownloaded => write!(f, "Already Downloaded")
}
}
}