Wrote some code and not sure if it will run
This commit is contained in:
196
src/main.rs
196
src/main.rs
@@ -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 {
|
||||
|
Reference in New Issue
Block a user