diff --git a/src/properties.rs b/src/properties.rs index 1989cfd..90ed30b 100644 --- a/src/properties.rs +++ b/src/properties.rs @@ -1,9 +1,23 @@ +use lofty::file::AudioFile; #[derive(Debug, Default, Clone)] pub struct Duration { pub val: i32 } -pub fn get_duration(song_path: &String) -> Duration { - Duration::default() +pub fn get_duration(song_path: &String) -> Result { + match std::fs::File::open(song_path) { + Ok(mut content) => match lofty::flac::FlacFile::read_from(&mut content, lofty::config::ParseOptions::new(),) { + Ok(flac_file) => { + let properties = flac_file.properties(); + Ok(properties.duration()) + } + Err(err) => { + Err(std::io::Error::other(err.to_string())) + } + } + Err(err) => { + Err(err) + } + } }