private async Task StreamCurrentlyPlayingAsync(CancellationToken ct) { var currentPlayback = new SpotifyTogglePlaybackResult { Title = "Loading current play state..." }; Available(currentPlayback); while (true) { var playback = await _client.GetCurrentPlaybackAsync(ct); if (playback == null) { currentPlayback.Title = "Nothing playing"; } else { var progress = TimeSpan.FromMilliseconds(playback.ProgressMs ?? 0); var duration = TimeSpan.FromMilliseconds(playback.Item.DurationMs); var action = playback.IsPlaying ? "Pause" : "Play"; currentPlayback.IsPlaying = playback.IsPlaying; currentPlayback.Title = $"{action} '{playback.Item.Name}' on {playback.Device?.Name}"; currentPlayback.Description = $"{progress:mm\\:ss}"; currentPlayback.PlaybackProgress = $"{progress:mm\\:ss}"; currentPlayback.TrackDuration = $"{duration:mm\\:ss}"; currentPlayback.AlbumName = playback.Item.Album.Name; currentPlayback.ArtistName = playback.Item.Artists.FirstOrDefault()?.Name; currentPlayback.ReleaseDate = playback.Item.Album.ReleaseDate; currentPlayback.ActiveTrackName = playback.Item.Name; currentPlayback.CoverArt = playback.Item.Album.Images.FirstOrDefault(i => i.Width == 300)?.Url ?? playback.Item.Album.Images.FirstOrDefault()?.Url; currentPlayback.PreviewUri = PreviewUri.NowPlaying; } Updated(currentPlayback); await Task.Delay(TimeSpan.FromSeconds(1), ct); ct.ThrowIfCancellationRequested(); } }