From 45cd239e33ceb988b6654fdc9acb13a70ea33f36 Mon Sep 17 00:00:00 2001 From: kdeng00 Date: Fri, 13 Jun 2025 19:49:05 -0400 Subject: [PATCH 1/5] Added some creates --- Cargo.lock | 1 + Cargo.toml | 1 + 2 files changed, 2 insertions(+) diff --git a/Cargo.lock b/Cargo.lock index 04dff48..6bb66fb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1175,6 +1175,7 @@ dependencies = [ "reqwest", "serde", "serde_json", + "time", "tokio", "uuid", ] diff --git a/Cargo.toml b/Cargo.toml index 1c5aace..d2052b5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,6 +10,7 @@ futures = { version = "0.3.31" } reqwest = { version = "0.12.19", features = ["json", "stream"] } serde = { version = "1.0.218", features = ["derive"] } serde_json = { version = "1.0.139" } +time = { version = "0.3.41", features = ["macros", "serde"] } uuid = { version = "1.16.0", features = ["v4", "serde"] } icarus_models = { git = "ssh://git@git.kundeng.us/phoenix/icarus_models.git", tag = "v0.4.3" } icarus_envy = { git = "ssh://git@git.kundeng.us/phoenix/icarus_envy.git", tag = "v0.2.2-devel-84ea6e4c22-006" } -- 2.43.0 From 6dcbd270d94328a123759c834b55397f7e98e38c Mon Sep 17 00:00:00 2001 From: kdeng00 Date: Fri, 13 Jun 2025 19:50:26 -0400 Subject: [PATCH 2/5] Added code to get metadata queue --- src/main.rs | 105 +++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 95 insertions(+), 10 deletions(-) diff --git a/src/main.rs b/src/main.rs index 6a41d11..5720fd9 100644 --- a/src/main.rs +++ b/src/main.rs @@ -18,11 +18,12 @@ async fn main() -> Result<(), Box> { Ok(song_queue_item) => { if !song_queue_item.data.is_empty() { println!("Song queue item: {:?}", song_queue_item); + let song_queue_id = song_queue_item.data[0].id; println!("Fetching song queue data"); match api::fetch_song_queue_data::get_data( &app_base_url, - &song_queue_item.data[0].id, + &song_queue_id, ) .await { @@ -41,15 +42,35 @@ async fn main() -> Result<(), Box> { println!("Saved at: {:?}", save_path); - // TODO: Get queued song's metadata - // TODO: Get queued coverart - // TODO: Get queued coverart's data - // TODO: Apply metadata to the queued song - // TODO: Update the queued song with the updated queued song - // TODO: Create song - // TODO: Create coverart - // TODO: Wipe data from queued song - // TODO: Wipe data from queued coverart + match api::get_metadata_queue::get(&app_base_url, &song_queue_id).await { + Ok(response) => { + match response.json::().await { + Ok(response) => { + let id = &response.data[0].id; + let metadata = &response.data[0].metadata; + let created_at = &response.data[0].created_at; + println!("Id: {:?}", id); + println!("Metadata: {:?}", metadata); + println!("Created at: {:?}", created_at); + // TODO: Get queued song's metadata + // TODO: Get queued coverart + // TODO: Get queued coverart's data + // TODO: Apply metadata to the queued song + // TODO: Update the queued song with the updated queued song + // TODO: Create song + // TODO: Create coverart + // TODO: Wipe data from queued song + // TODO: Wipe data from queued coverart + } + Err(err) => { + eprintln!("Error: {:?}", err); + } + } + } + Err(err) => { + eprintln!("Error: {:?}", err); + } + } } Err(err) => { eprintln!("Error fetching song queue data: {:?}", err); @@ -159,4 +180,68 @@ mod api { } } } + + pub mod get_metadata_queue { + pub async fn get(base_url: &String, song_queue_id: &uuid::Uuid) -> Result { + let client = reqwest::Client::new(); + let endpoint = String::from("api/v2/song/metadata/queue"); + let api_url = format!("{}/{}", base_url, endpoint); + client.get(api_url).query(&[("song_queue_id", song_queue_id)]).send().await + } + + pub mod response { + use serde::{Deserialize, Serialize}; + + /* + * "id": "31ed2464-f311-47b0-90ed-8d5925c20fb1", + "metadata": { + "album": "Are You Experienced?", + "album_artist": "The Jimi Hendrix Experience", + "artist": "The Jimi Hendrix Experience", + "disc": 1, + "disc_count": 1, + "duration": 213, + "genre": "Psychadelic Rock", + "id": "09b36815-b69d-41ae-888f-f2cffdd15c4d", + "title": "Hey Joe", + "track": 1, + "track_count": 17, + "year": 1967 + }, + "created_at": "2025-06-13T23:19:50.980388Z", + "song_queue_id": "09b36815-b69d-41ae-888f-f2cffdd15c4d" + */ + + #[derive(Debug, Deserialize, Serialize)] + pub struct Metadata { + pub id: uuid::Uuid, + pub album: String, + pub album_artist: String, + pub artist: String, + pub disc: i32, + pub disc_count: i32, + pub duration: i64, + pub genre: String, + pub title: String, + pub track: i32, + pub track_count: i32, + pub year: i32, + } + + #[derive(Debug, Deserialize, Serialize)] + pub struct QueueItem { + pub id: uuid::Uuid, + pub metadata: Metadata, + #[serde(with = "time::serde::rfc3339")] + pub created_at: time::OffsetDateTime, + pub song_queue_id: uuid::Uuid, + } + + #[derive(Debug, Deserialize, Serialize)] + pub struct Response { + pub message: String, + pub data: Vec, + } + } + } } -- 2.43.0 From c4a83ee1498486566bab46c63583f639f64914ed Mon Sep 17 00:00:00 2001 From: kdeng00 Date: Fri, 13 Jun 2025 19:53:03 -0400 Subject: [PATCH 3/5] Formatted code --- src/main.rs | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/main.rs b/src/main.rs index 5720fd9..5782c65 100644 --- a/src/main.rs +++ b/src/main.rs @@ -42,7 +42,12 @@ async fn main() -> Result<(), Box> { println!("Saved at: {:?}", save_path); - match api::get_metadata_queue::get(&app_base_url, &song_queue_id).await { + match api::get_metadata_queue::get( + &app_base_url, + &song_queue_id, + ) + .await + { Ok(response) => { match response.json::().await { Ok(response) => { @@ -182,11 +187,18 @@ mod api { } pub mod get_metadata_queue { - pub async fn get(base_url: &String, song_queue_id: &uuid::Uuid) -> Result { + pub async fn get( + base_url: &String, + song_queue_id: &uuid::Uuid, + ) -> Result { let client = reqwest::Client::new(); let endpoint = String::from("api/v2/song/metadata/queue"); let api_url = format!("{}/{}", base_url, endpoint); - client.get(api_url).query(&[("song_queue_id", song_queue_id)]).send().await + client + .get(api_url) + .query(&[("song_queue_id", song_queue_id)]) + .send() + .await } pub mod response { -- 2.43.0 From d6be0895b8fc3d6a4530d0da74433679a477a66f Mon Sep 17 00:00:00 2001 From: kdeng00 Date: Fri, 13 Jun 2025 19:54:40 -0400 Subject: [PATCH 4/5] Code cleanup --- src/main.rs | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/src/main.rs b/src/main.rs index 5782c65..66714c5 100644 --- a/src/main.rs +++ b/src/main.rs @@ -204,26 +204,6 @@ mod api { pub mod response { use serde::{Deserialize, Serialize}; - /* - * "id": "31ed2464-f311-47b0-90ed-8d5925c20fb1", - "metadata": { - "album": "Are You Experienced?", - "album_artist": "The Jimi Hendrix Experience", - "artist": "The Jimi Hendrix Experience", - "disc": 1, - "disc_count": 1, - "duration": 213, - "genre": "Psychadelic Rock", - "id": "09b36815-b69d-41ae-888f-f2cffdd15c4d", - "title": "Hey Joe", - "track": 1, - "track_count": 17, - "year": 1967 - }, - "created_at": "2025-06-13T23:19:50.980388Z", - "song_queue_id": "09b36815-b69d-41ae-888f-f2cffdd15c4d" - */ - #[derive(Debug, Deserialize, Serialize)] pub struct Metadata { pub id: uuid::Uuid, -- 2.43.0 From b8f6a54a8164630d4be66c505daf3adb39563a26 Mon Sep 17 00:00:00 2001 From: kdeng00 Date: Fri, 13 Jun 2025 20:24:37 -0400 Subject: [PATCH 5/5] Slight changes to comments --- src/main.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main.rs b/src/main.rs index 66714c5..58c76a0 100644 --- a/src/main.rs +++ b/src/main.rs @@ -57,10 +57,9 @@ async fn main() -> Result<(), Box> { println!("Id: {:?}", id); println!("Metadata: {:?}", metadata); println!("Created at: {:?}", created_at); - // TODO: Get queued song's metadata // TODO: Get queued coverart // TODO: Get queued coverart's data - // TODO: Apply metadata to the queued song + // TODO: Apply metadata to the queued song (modifying file) // TODO: Update the queued song with the updated queued song // TODO: Create song // TODO: Create coverart -- 2.43.0