Mercurial > beefweb_mpris
diff src/player.rs @ 3:18f743c980fa
make this a bit more sane
| author | Paper <paper@tflc.us> |
|---|---|
| date | Sat, 04 Apr 2026 17:03:22 -0400 |
| parents | 594c0f9d7972 |
| children | 26f695129c86 |
line wrap: on
line diff
--- a/src/player.rs Sat Apr 04 16:04:31 2026 -0400 +++ b/src/player.rs Sat Apr 04 17:03:22 2026 -0400 @@ -281,7 +281,7 @@ let p = pl.unwrap(); - let playlist_items_result = self.bw.playlist_items(p.active_item.playlist_id.as_str(), p.active_item.index, 1, ["%title%", "%artist%", "%album%", "%discnumber%", "%tracknumber%", "%album artist%", "%path%"].to_vec()).await; + let playlist_items_result = self.bw.playlist_item(p.active_item.playlist_id.as_str(), p.active_item.index, &["%title%", "%artist%", "%album%", "%discnumber%", "%tracknumber%", "%album artist%", "%path%", "%bpm%", "%composer%", "%comment%", "%date%", "%genre%", "%lyricist%"].to_vec()).await; match playlist_items_result { Err(_) => return Err(fdo::Error::Failed("uhoh".to_string())), @@ -296,14 +296,34 @@ let artwork = self.get_artwork(p.active_item.playlist_id.as_str(), p.active_item.index, track.columns.get(6).unwrap()); */ - let builder = mpris_server::Metadata::builder() - .length(secs_to_time(p.active_item.duration)) - .album(track.columns.get(2).unwrap()) - .artist([track.columns.get(1).unwrap()]) - .disc_number(track.columns.get(3).unwrap().parse::<i32>().unwrap()) - .track_number(track.columns.get(4).unwrap().parse::<i32>().unwrap()) - .title(track.columns.get(0).unwrap()) - .album_artist([track.columns.get(5).unwrap()]); + let mut x = mpris_server::Metadata::new(); + + x.set_length(Some(secs_to_time(p.active_item.duration))); + if track.columns.len() >= 13 { + x.set_title(Some(track.columns.get(0).unwrap())); + /* XXX musicbrainz has %artists% we can use for a proper list */ + x.set_artist(Some([track.columns.get(1).unwrap()])); + x.set_album(Some(track.columns.get(2).unwrap())); + match track.columns.get(3).unwrap().parse::<i32>() { + Ok(v) => { x.set_disc_number(Some(v)); }, + _ => (), + }; + match track.columns.get(4).unwrap().parse::<i32>() { + Ok(v) => { x.set_track_number(Some(v)); }, + _ => (), + }; + x.set_album_artist(Some([track.columns.get(5).unwrap()])); + /* Why is this an i32 ??? It would make more sense as f32 or f64 */ + match track.columns.get(7).unwrap().parse::<i32>() { + Ok(v) => { x.set_audio_bpm(Some(v)) }, + _ => (), + }; + x.set_composer(Some([track.columns.get(8).unwrap()])); + x.set_comment(Some([track.columns.get(9).unwrap()])); + x.set_content_created(Some(track.columns.get(10).unwrap())); + x.set_genre(Some(track.columns.get(11).unwrap().split(";"))); + x.set_lyricist(Some([track.columns.get(12).unwrap()])); + } /* return match artwork.await { @@ -311,7 +331,7 @@ _ => Ok(builder.build()), }; */ - return Ok(builder.build()); + return Ok(x); } async fn volume(&self) -> fdo::Result<mpris_server::Volume>
