public ListingTrack(SavedTrack st, int index = -1) { SavedTrack = st; FullTrack = st.Track; Index = index; Id = st.Track.Id; }
public static async void OnNextSong(Spotify user, CurrentlyPlayingContext playing) { if (!user.Setting.ShuffleOn.Value) { return; } if (playing.Context == null) { Paging <SavedTrack> tracks = await user.spotify.Library.GetTracks(); int i = rnd.Next(0, tracks.Total.Value); LibraryTracksRequest trackReq = new LibraryTracksRequest(); trackReq.Offset = i; Paging <SavedTrack> targetTrack = await user.spotify.Library.GetTracks(trackReq); SavedTrack t = targetTrack.Items[0]; await user.spotify.Player.AddToQueue(new PlayerAddToQueueRequest(t.Track.Uri)); } else if (playing.Context.Type == "playlist" && user.Setting.ShufflePlaylists.Value) { string id = playing.Context.Href.Split('/').Last(); FullPlaylist playlist = await user.spotify.Playlists.Get(id); int i = rnd.Next(0, playlist.Tracks.Total.Value); PlaylistGetItemsRequest playlistGet = new PlaylistGetItemsRequest(); playlistGet.Offset = i; Paging <PlaylistTrack <IPlayableItem> > targetTrack = await user.spotify.Playlists.GetItems(id, playlistGet); PlaylistTrack <IPlayableItem> t = targetTrack.Items[0]; await user.spotify.Player.AddToQueue(new PlayerAddToQueueRequest(((FullTrack)t.Track).Uri)); } else if (playing.Context.Type == "album" && user.Setting.ShuffleAlbums.Value) { #warning Not Implemented } }
/// <summary> /// Get all the saved tracks on the device and add them to the trackList /// </summary> private void getAllTracks() { bool isEmpty = false; SavedTrack track; ushort index = 0; while (!isEmpty) { // keep reading tracks until one is empty track = new SavedTrack(this, index); if (track.readTrack()) { if (!track.isEmpty) { trackList.Add(track); // don't add the track if it is empty } isEmpty = track.isEmpty; index++; } else { isEmpty = false; // track read failed } } }
public async Task TracksListView_ItemClick(SavedTrack track) { List <SpotifyTrack> tracksToPlay = new List <SpotifyTrack>(); int i = 0; for (; i < Tracks.Count; i++) { if (track == Tracks[i]) { break; } } try { await AppConstants.SpotifyClient.Play(MediaControlBarViewModel.ActiveDeviceId, album.Uri, offset : i); } catch (SpotifyException) { await WebPlayerViewModel.ReconnectPlayer(MediaControlBarViewModel.ActiveDeviceId); return; } }
public SavedTrackWithGenre(SavedTrack track) { Genres = new Collection <string>(); AddedAt = track.AddedAt; Track = track.Track; }
/// <summary> /// Get all the saved tracks on the device and add them to the trackList /// </summary> private void getAllTracks() { bool isEmpty = false; SavedTrack track; ushort index = 0; while (!isEmpty) { // keep reading tracks until one is empty track = new SavedTrack(this, index); if (track.readTrack()) { if (!track.isEmpty) trackList.Add(track); // don't add the track if it is empty isEmpty = track.isEmpty; index++; } else isEmpty = false; // track read failed } }
public async Task TracksListView_ItemClick(SavedTrack track) { SpotifyAlbum fullAlbum = await AppConstants.SpotifyClient.GetAlbum(track.Track.Album.Id); navigationService.NavigateTo(nameof(AlbumDetailPage), fullAlbum); }
public async Task OnNavigatedTo(SpotifyAlbum album) { Tracks = new ObservableCollection <SavedTrack>(); this.album = album; AlbumImageUrl = new Uri(album.GetLargestImage().Url); AlbumName = album.Name; AlbumArtist = string.Join(", ", album.Artists.Select(artist => artist.Name)); DateTimeOffset releaseDate = HelperMethods.ParseReleaseDate(album.ReleaseDate); if (album.ReleaseDatePrecision == "year") { ReleaseDate = releaseDate.Year.ToString(); } else if (album.ReleaseDatePrecision == "month") { ReleaseDate = releaseDate.ToString("y"); } else if (album.ReleaseDatePrecision == "day") { ReleaseDate = releaseDate.ToString("d"); } if (album.Tracks.Total == 1) { NumSongs = $"{album.Tracks.Total} song"; } else { NumSongs = $"{album.Tracks.Total} songs"; } SavedSaveText = "Saved"; TimeSpan albumLength = TimeSpan.Zero; SpotifyPagingObject <SpotifyTrack> tracksPaging = album.Tracks; List <bool> savedTracks = await AppConstants.SpotifyClient.GetSavedTracks(tracksPaging.Items.Select(track => track.Id).ToList()); for (int i = 0; i < tracksPaging.Items.Count; i++) { SavedTrack savedTrack = new SavedTrack() { Track = tracksPaging.Items[i], Saved = savedTracks[i] }; Tracks.Add(savedTrack); albumLength += TimeSpan.FromMilliseconds(savedTrack.Track.Duration); } while (tracksPaging.Next != null) { tracksPaging = await AppConstants.SpotifyClient.GetNextPage(tracksPaging); savedTracks = await AppConstants.SpotifyClient.GetSavedTracks(tracksPaging.Items.Select(track => track.Id).ToList()); for (int i = 0; i < tracksPaging.Items.Count; i++) { SavedTrack savedTrack = new SavedTrack() { Track = tracksPaging.Items[i], Saved = savedTracks[i] }; Tracks.Add(savedTrack); albumLength += TimeSpan.FromMilliseconds(savedTrack.Track.Duration); } } AlbumLength = albumLength.MinimalToString(); }