From fb9a790935ceb3d6df5a286409ae65b6557d36f7 Mon Sep 17 00:00:00 2001 From: phoenix Date: Fri, 18 Apr 2025 21:17:14 -0400 Subject: [PATCH 1/6] First round of refactoring --- src/meta.rs | 172 +++++++++++++++++++++++++-------------------------- src/types.rs | 16 +++++ 2 files changed, 101 insertions(+), 87 deletions(-) diff --git a/src/meta.rs b/src/meta.rs index 63f687b..e606407 100644 --- a/src/meta.rs +++ b/src/meta.rs @@ -1,20 +1,5 @@ use lofty::{file::AudioFile, tag::Accessor}; -use crate::types; - -fn get_type(t: types::Type) -> Result { - match t { - types::Type::Title => Ok("TITLE".to_owned()), - types::Type::Artist => Ok("ARTIST".to_owned()), - types::Type::Album => Ok("ALBUM".to_owned()), - types::Type::AlbumArtist => Ok("ALBUMARTIST".to_owned()), - types::Type::Genre => Ok("GENRE".to_owned()), - types::Type::Date => Ok("DATE".to_owned()), - types::Type::Track => Ok("TRACKNUMBER".to_owned()), - types::Type::Disc => Ok("DISCNUMBER".to_owned()), - } -} - pub mod coverart { use lofty::{file::AudioFile, ogg::OggPictureStorage}; @@ -151,90 +136,100 @@ pub mod coverart { } } -pub fn get_meta(t: types::Type, filepath: &String) -> Result { - match std::fs::File::open(filepath) { - Ok(mut content) => { - match lofty::flac::FlacFile::read_from(&mut content, lofty::config::ParseOptions::new()) - { - Ok(flac_file) => match flac_file.vorbis_comments() { - Some(vb) => { - let type_str: String = get_type(t).unwrap(); - match vb.get(&type_str) { - Some(val) => Ok(val.to_owned()), - None => Err(std::io::Error::new( - std::io::ErrorKind::InvalidData, - "Could not get tag data", - )), +pub mod metadata { + use crate::types; + use lofty::file::AudioFile; + use lofty::tag::Accessor; + + pub fn get_meta(t: types::Type, filepath: &String) -> Result { + match std::fs::File::open(filepath) { + Ok(mut content) => { + match lofty::flac::FlacFile::read_from( + &mut content, + lofty::config::ParseOptions::new(), + ) { + Ok(flac_file) => match flac_file.vorbis_comments() { + Some(vb) => { + let type_str: String = types::o::get_type(t).unwrap(); + match vb.get(&type_str) { + Some(val) => Ok(val.to_owned()), + None => Err(std::io::Error::new( + std::io::ErrorKind::InvalidData, + "Could not get tag data", + )), + } } - } - None => Err(std::io::Error::new( + None => Err(std::io::Error::new( + std::io::ErrorKind::InvalidData, + "No tags found", + )), + }, + Err(err) => Err(std::io::Error::new( std::io::ErrorKind::InvalidData, - "No tags found", + err.to_string(), )), - }, - Err(err) => Err(std::io::Error::new( - std::io::ErrorKind::InvalidData, - err.to_string(), - )), + } } + Err(err) => Err(err), } - Err(err) => Err(err), } -} -pub fn set_meta( - t: types::Type, - filepath: &String, - value: &String, -) -> 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) => { - let pre_value = value.clone(); - match t { - types::Type::Album => { - vb.set_album(pre_value); - } - types::Type::AlbumArtist => { - vb.insert(get_type(t).unwrap(), pre_value); - } - types::Type::Artist => { - vb.set_artist(pre_value); - } - types::Type::Date => { - vb.insert(get_type(t).unwrap(), pre_value); - } - types::Type::Disc => { - vb.set_disk(pre_value.parse().unwrap()); - } - types::Type::Genre => { - vb.set_genre(pre_value); - } - types::Type::Title => { - vb.set_title(pre_value); - } - types::Type::Track => { - vb.set_track(pre_value.parse().unwrap()); - } - }; + pub fn set_meta( + t: types::Type, + filepath: &String, + value: &String, + ) -> 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) => { + let pre_value = value.clone(); + match t { + types::Type::Album => { + vb.set_album(pre_value); + } + types::Type::AlbumArtist => { + vb.insert(types::o::get_type(t).unwrap(), pre_value); + } + types::Type::Artist => { + vb.set_artist(pre_value); + } + types::Type::Date => { + vb.insert(types::o::get_type(t).unwrap(), pre_value); + } + types::Type::Disc => { + vb.set_disk(pre_value.parse().unwrap()); + } + types::Type::Genre => { + vb.set_genre(pre_value); + } + types::Type::Title => { + vb.set_title(pre_value); + } + types::Type::Track => { + vb.set_track(pre_value.parse().unwrap()); + } + }; - Ok(value.to_owned()) - } - None => Err(std::io::Error::new( + Ok(value.to_owned()) + } + None => Err(std::io::Error::new( + std::io::ErrorKind::InvalidData, + "No tags found", + )), + }, + Err(err) => Err(std::io::Error::new( std::io::ErrorKind::InvalidData, - "No tags found", + err.to_string(), )), - }, - Err(err) => Err(std::io::Error::new( - std::io::ErrorKind::InvalidData, - err.to_string(), - )), + } } + Err(err) => Err(err), } - Err(err) => Err(err), } } @@ -317,6 +312,7 @@ mod tests { mod get { use super::*; use crate::types; + use super::metadata::{get_meta, set_meta}; #[test] fn test_get_title() { @@ -520,6 +516,8 @@ mod tests { mod set { use super::*; + use crate::types; + use super::metadata::{get_meta, set_meta}; #[test] fn test_set_title() { diff --git a/src/types.rs b/src/types.rs index 6f2b000..dc554b9 100644 --- a/src/types.rs +++ b/src/types.rs @@ -8,3 +8,19 @@ pub enum Type { Track, Disc, } + +pub mod o { + + pub fn get_type(t: super::Type) -> Result { + match t { + super::Type::Title => Ok("TITLE".to_owned()), + super::Type::Artist => Ok("ARTIST".to_owned()), + super::Type::Album => Ok("ALBUM".to_owned()), + super::Type::AlbumArtist => Ok("ALBUMARTIST".to_owned()), + super::Type::Genre => Ok("GENRE".to_owned()), + super::Type::Date => Ok("DATE".to_owned()), + super::Type::Track => Ok("TRACKNUMBER".to_owned()), + super::Type::Disc => Ok("DISCNUMBER".to_owned()), + } + } +} -- 2.43.0 From 721d89a049dd2a7f7270739e0d53cd8d1697e9d9 Mon Sep 17 00:00:00 2001 From: phoenix Date: Fri, 18 Apr 2025 21:17:33 -0400 Subject: [PATCH 2/6] Removing import --- src/meta.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/meta.rs b/src/meta.rs index e606407..33ff3b1 100644 --- a/src/meta.rs +++ b/src/meta.rs @@ -1,4 +1,3 @@ -use lofty::{file::AudioFile, tag::Accessor}; pub mod coverart { -- 2.43.0 From 6735a0a24f938a178bd97889558c62b496f7abfe Mon Sep 17 00:00:00 2001 From: phoenix Date: Fri, 18 Apr 2025 21:18:56 -0400 Subject: [PATCH 3/6] Renamed module --- src/meta.rs | 6 +++--- src/types.rs | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/meta.rs b/src/meta.rs index 33ff3b1..bab458f 100644 --- a/src/meta.rs +++ b/src/meta.rs @@ -149,7 +149,7 @@ pub mod metadata { ) { Ok(flac_file) => match flac_file.vorbis_comments() { Some(vb) => { - let type_str: String = types::o::get_type(t).unwrap(); + let type_str: String = types::access::get_type(t).unwrap(); match vb.get(&type_str) { Some(val) => Ok(val.to_owned()), None => Err(std::io::Error::new( @@ -192,13 +192,13 @@ pub mod metadata { vb.set_album(pre_value); } types::Type::AlbumArtist => { - vb.insert(types::o::get_type(t).unwrap(), pre_value); + vb.insert(types::access::get_type(t).unwrap(), pre_value); } types::Type::Artist => { vb.set_artist(pre_value); } types::Type::Date => { - vb.insert(types::o::get_type(t).unwrap(), pre_value); + vb.insert(types::access::get_type(t).unwrap(), pre_value); } types::Type::Disc => { vb.set_disk(pre_value.parse().unwrap()); diff --git a/src/types.rs b/src/types.rs index dc554b9..c2bf9a9 100644 --- a/src/types.rs +++ b/src/types.rs @@ -9,7 +9,7 @@ pub enum Type { Disc, } -pub mod o { +pub mod access { pub fn get_type(t: super::Type) -> Result { match t { -- 2.43.0 From 063cfd170326747f5abc31e68d96564d9c7072ee Mon Sep 17 00:00:00 2001 From: phoenix Date: Fri, 18 Apr 2025 21:19:55 -0400 Subject: [PATCH 4/6] More cleanup --- src/meta.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/meta.rs b/src/meta.rs index bab458f..f0a9dbc 100644 --- a/src/meta.rs +++ b/src/meta.rs @@ -311,7 +311,7 @@ mod tests { mod get { use super::*; use crate::types; - use super::metadata::{get_meta, set_meta}; + use super::metadata::{get_meta}; #[test] fn test_get_title() { -- 2.43.0 From 7b9dcc4f769d1c2696b4e8e3d98e5c67a10a88c0 Mon Sep 17 00:00:00 2001 From: phoenix Date: Fri, 18 Apr 2025 21:27:33 -0400 Subject: [PATCH 5/6] Tidy --- src/meta.rs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/meta.rs b/src/meta.rs index f0a9dbc..59e6957 100644 --- a/src/meta.rs +++ b/src/meta.rs @@ -1,4 +1,3 @@ - pub mod coverart { use lofty::{file::AudioFile, ogg::OggPictureStorage}; @@ -309,9 +308,9 @@ mod tests { } mod get { + use super::metadata::get_meta; use super::*; use crate::types; - use super::metadata::{get_meta}; #[test] fn test_get_title() { @@ -514,9 +513,9 @@ mod tests { } mod set { + use super::metadata::{get_meta, set_meta}; use super::*; use crate::types; - use super::metadata::{get_meta, set_meta}; #[test] fn test_set_title() { -- 2.43.0 From bdfb58bc171d1f55b45aa8a5325c0f36093d6230 Mon Sep 17 00:00:00 2001 From: phoenix Date: Fri, 18 Apr 2025 21:28:12 -0400 Subject: [PATCH 6/6] Version bump --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 133ca6a..7a557c4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "icarus_meta" -version = "0.1.11" +version = "0.1.20" edition = "2024" rust-version = "1.86" -- 2.43.0