From c2e2e1b03ae4ef80c6a6d1208eec444f065d34dc Mon Sep 17 00:00:00 2001 From: phoenix Date: Wed, 22 Oct 2025 12:52:59 -0400 Subject: [PATCH] tsk-62: Making changes to queued song and coverart --- src/main.rs | 53 ++++++++++++++++++++++++++++++--------------- src/metadata/mod.rs | 30 ++++++++++++------------- src/queued_item.rs | 13 +++++++++++ 3 files changed, 63 insertions(+), 33 deletions(-) create mode 100644 src/queued_item.rs diff --git a/src/main.rs b/src/main.rs index 92c7ee8..e7597c4 100644 --- a/src/main.rs +++ b/src/main.rs @@ -2,6 +2,7 @@ pub mod api; pub mod auth; pub mod config; pub mod metadata; +pub mod queued_item; pub mod util; pub const SECONDS_TO_SLEEP: u64 = 5; @@ -177,22 +178,23 @@ async fn some_work( user_id: &uuid::Uuid, ) -> Result< ( - icarus_models::song::Song, - icarus_models::coverart::CoverArt, - (uuid::Uuid, String), - (uuid::Uuid, String), + queued_item::QueuedSong, + queued_item::QueuedCoverArt ), std::io::Error, > { match prep_song(app, song_queue_id).await { Ok(( - (song_directory, song_filename), - (coverart_directory, coverart_filename), + // (song_directory, song_filename), + queued_song, + queued_coverart, + // (coverart_directory, coverart_filename), metadata, - coverart_queue_id, + // coverart_queue_id, )) => { println!("Prepping song"); + /* let mut song_queue_path: String = String::new(); let p = std::path::Path::new(&song_directory); let sp = p.join(&song_filename); @@ -210,8 +212,7 @@ async fn some_work( std::process::exit(-1); } }; - - println!("CoverArt path: {coverart_queue_path:?}"); + */ match metadata::apply_metadata(&song_queue_path, &coverart_queue_path, &metadata).await { @@ -295,10 +296,12 @@ async fn prep_song( song_queue_id: &uuid::Uuid, ) -> Result< ( - (String, String), - (String, String), + // (String, String), + queued_item::QueuedSong, + queued_item::QueuedCoverArt, + // (String, String), api::get_metadata_queue::response::Metadata, - uuid::Uuid, + // uuid::Uuid, ), reqwest::Error, > { @@ -317,14 +320,22 @@ async fn prep_song( ..Default::default() }; let songpath = song.song_path().unwrap_or_default(); + /* let song_queue_path = match song.save_to_filesystem() { Ok(_) => std::path::Path::new(&songpath), Err(_err) => std::path::Path::new(""), }; + */ - println!("Saved at: {song_queue_path:?}"); + let queued_song = queued_item::QueuedSong { + id: *song_queue_id, + song, + path: songpath + }; - match api::get_metadata_queue::get(app, song_queue_id).await { + println!("Saved at: {:?}", queued_song.path); + + match api::get_metadata_queue::get(app, &queued_song.id).await { Ok(response) => { match response .json::() @@ -339,7 +350,7 @@ async fn prep_song( println!("Created at: {created_at:?}"); println!("Getting coverart queue"); - match api::get_coverart_queue::get(app, song_queue_id).await { + match api::get_coverart_queue::get(app, &queued_song.id).await { Ok(response) => { match response.json::().await { Ok(response) => { @@ -367,10 +378,16 @@ async fn prep_song( std::process::exit(-1); } }; - let coverart_queue_path = std::path::Path::new(&coverart_queue_fs_path); - println!("Saved coverart queue file at: {coverart_queue_path:?}"); - Ok(((song.directory, song.filename), (coverart.directory, coverart.filename), metadata.clone(), coverart_queue_id)) + let queued_coverart = queued_item::QueuedCoverArt { + id: coverart_queue_id, + coverart: coverart, + path: coverart_queue_fs_path + }; + // let coverart_queue_path = std::path::Path::new(&coverart_queue_fs_path); + println!("Saved coverart queue file at: {:?}", queued_coverart.path); + + Ok((queued_song, queued_coverart, metadata.clone())) } Err(err) => { Err(err) diff --git a/src/metadata/mod.rs b/src/metadata/mod.rs index 150868c..b880372 100644 --- a/src/metadata/mod.rs +++ b/src/metadata/mod.rs @@ -1,6 +1,6 @@ pub async fn apply_metadata( - song_queue_path: &String, - coverart_queue_path: &String, + queued_song: &crate::queued_item::QueuedSong, + queued_coverart: &crate::queued_item::QueuedCoverArt, metadata: &crate::api::get_metadata_queue::response::Metadata, ) -> Result { // Apply metadata fields @@ -11,7 +11,7 @@ pub async fn apply_metadata( icarus_meta::types::Type::Album => { let meta_type = icarus_meta::types::MetadataType::from_string(metadata.album.clone()); - match icarus_meta::meta::metadata::set_meta_value(t, song_queue_path, meta_type) { + match icarus_meta::meta::metadata::set_meta_value(t, &queued_song.path, meta_type) { Ok(_) => {} Err(_err) => { return Err(_err); @@ -21,7 +21,7 @@ pub async fn apply_metadata( icarus_meta::types::Type::AlbumArtist => { let meta_type = icarus_meta::types::MetadataType::from_string(metadata.album_artist.clone()); - match icarus_meta::meta::metadata::set_meta_value(t, song_queue_path, meta_type) { + match icarus_meta::meta::metadata::set_meta_value(t, &queued_song.path, meta_type) { Ok(_) => {} Err(_err) => { return Err(_err); @@ -31,7 +31,7 @@ pub async fn apply_metadata( icarus_meta::types::Type::Artist => { let meta_type = icarus_meta::types::MetadataType::from_string(metadata.artist.clone()); - match icarus_meta::meta::metadata::set_meta_value(t, song_queue_path, meta_type) { + match icarus_meta::meta::metadata::set_meta_value(t, &queued_song.path, meta_type) { Ok(_) => {} Err(_err) => { return Err(_err); @@ -42,7 +42,7 @@ pub async fn apply_metadata( // TODO: Do something about this discrepancy let meta_type = icarus_meta::types::MetadataType::from_string(metadata.year.to_string()); - match icarus_meta::meta::metadata::set_meta_value(t, song_queue_path, meta_type) { + match icarus_meta::meta::metadata::set_meta_value(t, &queued_song.path, meta_type) { Ok(_) => {} Err(_err) => { return Err(_err); @@ -51,7 +51,7 @@ pub async fn apply_metadata( } icarus_meta::types::Type::Disc => { let meta_type = icarus_meta::types::MetadataType::from_int(metadata.disc); - match icarus_meta::meta::metadata::set_meta_value(t, song_queue_path, meta_type) { + match icarus_meta::meta::metadata::set_meta_value(t, &queued_song.path, meta_type) { Ok(_) => {} Err(_err) => { return Err(_err); @@ -61,7 +61,7 @@ pub async fn apply_metadata( icarus_meta::types::Type::Genre => { let meta_type = icarus_meta::types::MetadataType::from_string(metadata.genre.clone()); - match icarus_meta::meta::metadata::set_meta_value(t, song_queue_path, meta_type) { + match icarus_meta::meta::metadata::set_meta_value(t, &queued_song.path, meta_type) { Ok(_) => {} Err(_err) => { return Err(_err); @@ -71,7 +71,7 @@ pub async fn apply_metadata( icarus_meta::types::Type::Title => { let meta_type = icarus_meta::types::MetadataType::from_string(metadata.title.clone()); - match icarus_meta::meta::metadata::set_meta_value(t, song_queue_path, meta_type) { + match icarus_meta::meta::metadata::set_meta_value(t, &queued_song.path, meta_type) { Ok(_) => {} Err(_err) => { return Err(_err); @@ -80,7 +80,7 @@ pub async fn apply_metadata( } icarus_meta::types::Type::Track => { let meta_type = icarus_meta::types::MetadataType::from_int(metadata.track); - match icarus_meta::meta::metadata::set_meta_value(t, song_queue_path, meta_type) { + match icarus_meta::meta::metadata::set_meta_value(t, &queued_song.path, meta_type) { Ok(_) => {} Err(_err) => { return Err(_err); @@ -89,7 +89,7 @@ pub async fn apply_metadata( } icarus_meta::types::Type::TrackCount => { let meta_type = icarus_meta::types::MetadataType::from_int(metadata.track_count); - match icarus_meta::meta::metadata::set_meta_value(t, song_queue_path, meta_type) { + match icarus_meta::meta::metadata::set_meta_value(t, &queued_song.path, meta_type) { Ok(_) => {} Err(_err) => { return Err(_err); @@ -98,7 +98,7 @@ pub async fn apply_metadata( } icarus_meta::types::Type::DiscCount => { let meta_type = icarus_meta::types::MetadataType::from_int(metadata.disc_count); - match icarus_meta::meta::metadata::set_meta_value(t, song_queue_path, meta_type) { + match icarus_meta::meta::metadata::set_meta_value(t, &queued_song.path, meta_type) { Ok(_) => {} Err(_err) => { return Err(_err); @@ -109,11 +109,11 @@ pub async fn apply_metadata( } // Apply coverart - match icarus_meta::meta::coverart::contains_coverart(song_queue_path) { + match icarus_meta::meta::coverart::contains_coverart(&queued_coverart.path) { Ok((exists, size)) => { if exists { println!("Coverart exists: {size:?} size"); - match icarus_meta::meta::coverart::remove_coverart(song_queue_path) { + match icarus_meta::meta::coverart::remove_coverart(queued_coverart.path) { Ok(_data) => {} Err(err) => { return Err(err); @@ -121,7 +121,7 @@ pub async fn apply_metadata( } } - match icarus_meta::meta::coverart::set_coverart(song_queue_path, coverart_queue_path) { + match icarus_meta::meta::coverart::set_coverart(queued_coverart.path, queued_coverart.path) { Ok(_data) => { if _data.is_empty() { println!("There was an issue"); diff --git a/src/queued_item.rs b/src/queued_item.rs new file mode 100644 index 0000000..5bacd99 --- /dev/null +++ b/src/queued_item.rs @@ -0,0 +1,13 @@ +#[derive(Debug)] +pub struct QueuedSong { + pub id: uuid::Uuid, + pub song: icarus_models::song::Song, + pub path: String, +} + +#[derive(Debug)] +pub struct QueuedCoverArt { + pub id: uuid::Uuid, + pub coverart: icarus_models::coverart::CoverArt, + pub path: String, +}