From 8f55b28fbe19c0453fa017f8332088b72763135c Mon Sep 17 00:00:00 2001 From: phoenix Date: Sat, 21 Jun 2025 20:40:15 +0000 Subject: [PATCH] Added function to set value for metadata for known types (#29) Reviewed-on: https://git.kundeng.us/phoenix/icarus_meta/pulls/29 Co-authored-by: phoenix Co-committed-by: phoenix --- src/meta.rs | 17 +++++++++++++++++ src/types.rs | 22 +++++++++++++++++++++- 2 files changed, 38 insertions(+), 1 deletion(-) 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()),