Пример #1
0
 public ListingTrack(SavedTrack st, int index = -1)
 {
     SavedTrack = st;
     FullTrack  = st.Track;
     Index      = index;
     Id         = st.Track.Id;
 }
Пример #2
0
        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
            }
        }
Пример #3
0
            /// <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
                    }
                }
            }
Пример #4
0
        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;
            }
        }
Пример #5
0
 public SavedTrackWithGenre(SavedTrack track)
 {
     Genres  = new Collection <string>();
     AddedAt = track.AddedAt;
     Track   = track.Track;
 }
Пример #6
0
        /// <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
            }
        }
Пример #7
0
        public async Task TracksListView_ItemClick(SavedTrack track)
        {
            SpotifyAlbum fullAlbum = await AppConstants.SpotifyClient.GetAlbum(track.Track.Album.Id);

            navigationService.NavigateTo(nameof(AlbumDetailPage), fullAlbum);
        }
Пример #8
0
        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();
        }