Set Meta #19

Merged
phoenix merged 7 commits from set_meta into devel 2025-04-16 02:25:14 +00:00
Showing only changes of commit 583ea6846f - Show all commits

View File

@@ -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<String, std::io::Er
}
}
pub fn set_meta(
t: types::Type,
filepath: &String,
value: &String,
) -> Result<String, std::io::Error> {
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};