Wrote some code and not sure if it will run

This commit is contained in:
2025-06-18 22:05:01 -04:00
parent 1a07e1a31e
commit 0cc086b157

View File

@@ -97,7 +97,7 @@ async fn process_song(api_url: &String, song_queue_id: &uuid::Uuid) -> Result<()
println!("Saved coverart queue file at: {:?}", coverart_queue_path);
match apply_metadata(&song_queue_path, &coverart_queue_path).await {
match apply_metadata(&song_queue_path, &coverart_queue_path, &metadata).await {
Ok(_) => {
}
Err(err) => {
@@ -208,9 +208,199 @@ pub async fn save_file_to_fs(
}
// TODO: Implement
pub async fn apply_metadata(song_queue_path: &std::path::PathBuf, coverart_queue_path: &std::path::PathBuf) -> Result<bool, u32> {
pub async fn apply_metadata(song_queue_path: &std::path::PathBuf, coverart_queue_path: &std::path::PathBuf, metadata: &api::get_metadata_queue::response::Metadata) -> Result<bool, std::io::Error> {
Ok(false)
// Apply metadata fields
let s_path = match song_queue_path.to_str() {
Some(val) => String::from(val),
None => String::new(),
};
let types = song_io::metadata_types().await;
for t in types {
match t {
icarus_meta::types::Type::Album => {
match icarus_meta::meta::metadata::set_meta(t, &s_path, &metadata.album) {
Ok(_) => {
}
Err(_err) => {
return Err(_err);
}
}
}
icarus_meta::types::Type::AlbumArtist => {
match icarus_meta::meta::metadata::set_meta(t, &s_path, &metadata.album_artist) {
Ok(_) => {
}
Err(_err) => {
return Err(_err);
}
}
}
icarus_meta::types::Type::Artist => {
match icarus_meta::meta::metadata::set_meta(t, &s_path, &metadata.artist) {
Ok(_) => {
}
Err(_err) => {
return Err(_err);
}
}
}
icarus_meta::types::Type::Date => {
// TODO: Do something about this discrepancy
match icarus_meta::meta::metadata::set_meta(t, &s_path, &metadata.year.to_string()) {
Ok(_) => {
}
Err(_err) => {
return Err(_err);
}
}
}
icarus_meta::types::Type::Disc => {
match icarus_meta::meta::metadata::set_meta(t, &s_path, &metadata.disc.to_string()) {
Ok(_) => {
}
Err(_err) => {
return Err(_err);
}
}
}
icarus_meta::types::Type::Genre => {
match icarus_meta::meta::metadata::set_meta(t, &s_path, &metadata.genre) {
Ok(_) => {
}
Err(_err) => {
return Err(_err);
}
}
}
icarus_meta::types::Type::Title => {
match icarus_meta::meta::metadata::set_meta(t, &s_path, &metadata.title) {
Ok(_) => {
}
Err(_err) => {
return Err(_err);
}
}
}
icarus_meta::types::Type::Track => {
match icarus_meta::meta::metadata::set_meta(t, &s_path, &metadata.track.to_string()) {
Ok(_) => {
}
Err(_err) => {
return Err(_err);
}
}
}
icarus_meta::types::Type::TrackCount => {
match icarus_meta::meta::metadata::set_meta(t, &s_path, &metadata.track_count.to_string()) {
Ok(_) => {
}
Err(_err) => {
return Err(_err);
}
}
}
icarus_meta::types::Type::DiscCount => {
match icarus_meta::meta::metadata::set_meta(t, &s_path, &metadata.disc_count.to_string()) {
Ok(_) => {
}
Err(_err) => {
return Err(_err);
}
}
}
}
}
// Apply coverart
let c_path: String = match coverart_queue_path.to_str() {
Some(val) => String::from(val),
None => String::new(),
};
match icarus_meta::meta::coverart::contains_coverart(&s_path) {
Ok((exists, size)) => {
if exists {
println!("Coverart exists: {:?} size", size);
match icarus_meta::meta::coverart::remove_coverart(&s_path) {
Ok(_data) => {
}
Err(err) => {
return Err(err);
}
}
}
match icarus_meta::meta::coverart::set_coverart(&s_path, &c_path) {
Ok(_data) => {
if _data.is_empty() {
Ok(false)
} else {
Ok(true)
}
}
Err(err) => {
return Err(err);
}
}
}
Err(err) => {
return Err(err);
}
}
}
pub mod song_io {
pub async fn metadata_types() -> Vec<icarus_meta::types::Type> {
/*
match t {
types::Type::Album => {
vb.set_album(pre_value);
}
types::Type::AlbumArtist => {
vb.insert(types::access::get_type(t).unwrap(), pre_value);
}
types::Type::Artist => {
vb.set_artist(pre_value);
}
types::Type::Date => {
vb.insert(types::access::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());
}
types::Type::TrackCount => {
vb.set_track_total(pre_value.parse().unwrap());
}
types::Type::DiscCount => {
vb.set_disk_total(pre_value.parse().unwrap());
}
};
*/
// TODO: Think about putting this in icarus_meta
let mut all_types: Vec<icarus_meta::types::Type> = Vec::new();
all_types.push(icarus_meta::types::Type::Album);
all_types.push(icarus_meta::types::Type::AlbumArtist);
all_types.push(icarus_meta::types::Type::Date);
all_types.push(icarus_meta::types::Type::Disc);
all_types.push(icarus_meta::types::Type::Genre);
all_types.push(icarus_meta::types::Type::Title);
all_types.push(icarus_meta::types::Type::Track);
all_types.push(icarus_meta::types::Type::TrackCount);
all_types.push(icarus_meta::types::Type::DiscCount);
all_types
}
}
mod responses {