diff --git a/src/meta.rs b/src/meta.rs index ef1f490..85cc146 100644 --- a/src/meta.rs +++ b/src/meta.rs @@ -244,6 +244,23 @@ pub mod metadata { Err(err) => Err(err), } } + + pub fn parse_value(value: types::MetadataType) -> String { + match value { + types::MetadataType::String(val) => val, + types::MetadataType::Int(val) => val.to_string(), + } + } + + pub fn set_meta_value( + t: types::Type, + filepath: &String, + value: types::MetadataType, + ) -> Result { + let parsed_val = parse_value(value); + + set_meta(t, filepath, &parsed_val) + } } #[cfg(test)] diff --git a/src/types.rs b/src/types.rs index 26dbca1..a43d92e 100644 --- a/src/types.rs +++ b/src/types.rs @@ -1,3 +1,4 @@ +// TODO: Have this derive Debug pub enum Type { Title, Artist, @@ -11,8 +12,27 @@ pub enum Type { DiscCount, } -pub mod access { +#[derive(Debug)] +pub enum MetadataType { + String(String), + Int(i32), +} +impl MetadataType { + pub fn from_std_str(s: &str) -> Self { + MetadataType::String(s.to_string()) + } + + pub fn from_string(s: String) -> Self { + MetadataType::String(s) + } + + pub fn from_int(i: i32) -> Self { + MetadataType::Int(i) + } +} + +pub mod access { pub fn get_type(t: super::Type) -> Result { match t { super::Type::Title => Ok("TITLE".to_owned()),