From 452cb9c70856d449c8ccb7a98b8df09a2afda894 Mon Sep 17 00:00:00 2001 From: mars Date: Sun, 20 Nov 2022 00:28:49 -0700 Subject: [PATCH 1/3] Music player reads mpris:length instead of xesam:length --- apps/music-player/src/main.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/music-player/src/main.rs b/apps/music-player/src/main.rs index 212cf68..9872c00 100644 --- a/apps/music-player/src/main.rs +++ b/apps/music-player/src/main.rs @@ -41,7 +41,7 @@ impl<'a> From> for Metadata { .get("xesam:trackNumber") .and_then(|v| TryFrom::try_from(v).ok()), length: map - .get("xesam:length") + .get("mpris:length") .and_then(|v| i64::try_from(v).ok()) .map(|us| us as f32 / 1_000_000.0), // 1,000,000 microseconds in a second }; From d99c64f33e8e2ac351edc46d3bc0125b05031db0 Mon Sep 17 00:00:00 2001 From: mars Date: Sun, 20 Nov 2022 00:33:05 -0700 Subject: [PATCH 2/3] Track position --- apps/music-player/src/main.rs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/apps/music-player/src/main.rs b/apps/music-player/src/main.rs index 9872c00..bbdffb8 100644 --- a/apps/music-player/src/main.rs +++ b/apps/music-player/src/main.rs @@ -80,6 +80,7 @@ async fn player_main( use futures_util::StreamExt; let mut playback_status = player.receive_playback_status_changed().await.fuse(); let mut metadata_tracker = player.receive_metadata_changed().await.fuse(); + let mut position_tracker = player.receive_position_changed().await.fuse(); let mut metadata = Metadata::new(magpie, player.metadata().await?); @@ -104,6 +105,17 @@ async fn player_main( magpie.send_json_message(0, &InMsg::PlaybackStatusChanged(status)); } } + position = position_tracker.next() => { + let position = match position { + Some(v) => v, + None => break, + }; + + let position = position.get().await?; + let position = position as f32 / 1_000_000.0; // Microseconds to seconds + let progress = ProgressChanged { position }; + magpie.send_json_message(0, &InMsg::ProgressChanged(progress)); + } new_metadata = metadata_tracker.next() => { let new_metadata = match new_metadata { Some(v) => v, From d5b168ebc9d757b1daa93e4b073efeb9368719d3 Mon Sep 17 00:00:00 2001 From: mars Date: Sun, 20 Nov 2022 00:37:11 -0700 Subject: [PATCH 3/3] Music player resets position on track change --- apps/music-player/src/main.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/apps/music-player/src/main.rs b/apps/music-player/src/main.rs index bbdffb8..47deb51 100644 --- a/apps/music-player/src/main.rs +++ b/apps/music-player/src/main.rs @@ -67,6 +67,8 @@ impl Metadata { if self.track != new.track { messenger.send_json_message(0, &InMsg::TrackChanged(new.track.clone())); + let progress = ProgressChanged { position: 0.0 }; + messenger.send_json_message(0, &InMsg::ProgressChanged(progress)); } *self = new;