comparison 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
comparison
equal deleted inserted replaced
2:594c0f9d7972 3:18f743c980fa
279 _ => (), 279 _ => (),
280 }; 280 };
281 281
282 let p = pl.unwrap(); 282 let p = pl.unwrap();
283 283
284 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; 284 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;
285 285
286 match playlist_items_result { 286 match playlist_items_result {
287 Err(_) => return Err(fdo::Error::Failed("uhoh".to_string())), 287 Err(_) => return Err(fdo::Error::Failed("uhoh".to_string())),
288 _ => (), 288 _ => (),
289 }; 289 };
294 294
295 /* 295 /*
296 let artwork = self.get_artwork(p.active_item.playlist_id.as_str(), p.active_item.index, track.columns.get(6).unwrap()); 296 let artwork = self.get_artwork(p.active_item.playlist_id.as_str(), p.active_item.index, track.columns.get(6).unwrap());
297 */ 297 */
298 298
299 let builder = mpris_server::Metadata::builder() 299 let mut x = mpris_server::Metadata::new();
300 .length(secs_to_time(p.active_item.duration)) 300
301 .album(track.columns.get(2).unwrap()) 301 x.set_length(Some(secs_to_time(p.active_item.duration)));
302 .artist([track.columns.get(1).unwrap()]) 302 if track.columns.len() >= 13 {
303 .disc_number(track.columns.get(3).unwrap().parse::<i32>().unwrap()) 303 x.set_title(Some(track.columns.get(0).unwrap()));
304 .track_number(track.columns.get(4).unwrap().parse::<i32>().unwrap()) 304 /* XXX musicbrainz has %artists% we can use for a proper list */
305 .title(track.columns.get(0).unwrap()) 305 x.set_artist(Some([track.columns.get(1).unwrap()]));
306 .album_artist([track.columns.get(5).unwrap()]); 306 x.set_album(Some(track.columns.get(2).unwrap()));
307 match track.columns.get(3).unwrap().parse::<i32>() {
308 Ok(v) => { x.set_disc_number(Some(v)); },
309 _ => (),
310 };
311 match track.columns.get(4).unwrap().parse::<i32>() {
312 Ok(v) => { x.set_track_number(Some(v)); },
313 _ => (),
314 };
315 x.set_album_artist(Some([track.columns.get(5).unwrap()]));
316 /* Why is this an i32 ??? It would make more sense as f32 or f64 */
317 match track.columns.get(7).unwrap().parse::<i32>() {
318 Ok(v) => { x.set_audio_bpm(Some(v)) },
319 _ => (),
320 };
321 x.set_composer(Some([track.columns.get(8).unwrap()]));
322 x.set_comment(Some([track.columns.get(9).unwrap()]));
323 x.set_content_created(Some(track.columns.get(10).unwrap()));
324 x.set_genre(Some(track.columns.get(11).unwrap().split(";")));
325 x.set_lyricist(Some([track.columns.get(12).unwrap()]));
326 }
307 327
308 /* 328 /*
309 return match artwork.await { 329 return match artwork.await {
310 Ok(x) => Ok(builder.art_url(urlencoding::encode(format!("file://{}", x).as_str())).build()), 330 Ok(x) => Ok(builder.art_url(urlencoding::encode(format!("file://{}", x).as_str())).build()),
311 _ => Ok(builder.build()), 331 _ => Ok(builder.build()),
312 }; 332 };
313 */ 333 */
314 return Ok(builder.build()); 334 return Ok(x);
315 } 335 }
316 336
317 async fn volume(&self) -> fdo::Result<mpris_server::Volume> 337 async fn volume(&self) -> fdo::Result<mpris_server::Volume>
318 { 338 {
319 let vr = self.bw.volume().await; 339 let vr = self.bw.volume().await;