From 583ea6846fbfdabc41f4f301495e858e168e664a Mon Sep 17 00:00:00 2001 From: phoenix Date: Mon, 14 Apr 2025 21:21:45 -0400 Subject: [PATCH] Filled out function Add tests --- src/meta.rs | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 56 insertions(+), 1 deletion(-) diff --git a/src/meta.rs b/src/meta.rs index c015c10..4d8a59a 100644 --- a/src/meta.rs +++ b/src/meta.rs @@ -1,4 +1,4 @@ -use lofty::file::AudioFile; +use lofty::{file::AudioFile, tag::Accessor}; use crate::types; @@ -46,6 +46,61 @@ pub fn get_meta(t: types::Type, filepath: &String) -> Result Result { + match std::fs::File::open(filepath) { + Ok(mut content) => { + match lofty::flac::FlacFile::read_from(&mut content, lofty::config::ParseOptions::new()) + { + Ok(mut flac_file) => match flac_file.vorbis_comments_mut() { + Some(vb) => { + match t { + types::Type::Album => { + vb.set_album(value.clone()); + } + types::Type::AlbumArtist => { + vb.insert(get_type(t).unwrap(), value.clone()); + } + types::Type::Artist => { + vb.set_artist(value.clone()); + } + types::Type::Date => { + vb.insert(get_type(t).unwrap(), value.clone()); + } + types::Type::Disc => { + vb.set_disk(value.clone().parse().unwrap()); + } + types::Type::Genre => { + vb.set_genre(value.clone()); + } + types::Type::Title => { + vb.set_title(value.clone()); + } + types::Type::Track => { + vb.set_track(value.clone().parse().unwrap()); + } + }; + + Ok(value.clone()) + } + None => Err(std::io::Error::new( + std::io::ErrorKind::InvalidData, + "No tags found", + )), + }, + Err(err) => Err(std::io::Error::new( + std::io::ErrorKind::InvalidData, + err.to_string(), + )), + } + } + Err(err) => Err(err), + } +} + #[cfg(test)] mod tests { use util::{file_exists, get_full_path};