コード例 #1
0
        public async Task OnNavigatedTo(SpotifyArtist artist)
        {
            PopularTracks  = new ObservableCollection <SpotifyTrack>();
            Albums         = new ObservableCollection <SpotifyAlbum>();
            Singles        = new ObservableCollection <SpotifyAlbum>();
            RelatedArtists = new ObservableCollection <SpotifyArtist>();
            this.artist    = artist;
            var highestResImage = artist.GetLargestImage();

            if (highestResImage == null)
            {
                ArtistImageUrl = new Uri("ms-appx:///Assets/PlaceholderArtist.png");
            }
            else
            {
                ArtistImageUrl = new Uri(highestResImage.Url);
            }
            ArtistName = artist.Name;
            PopularTracks.AddRange(await AppConstants.SpotifyClient.GetArtistsTopTracks(artist.Id, HelperMethods.GetUsersCountry()));
            SpotifyPagingObject <SpotifyAlbum> albums = await AppConstants.SpotifyClient.GetArtistsAlbums(artist.Id, new List <Reverb.SpotifyConstants.SpotifyArtistIncludeGroups>()
            {
                Reverb.SpotifyConstants.SpotifyArtistIncludeGroups.Album
            });

            Albums.AddRange(albums.Items);
            SpotifyPagingObject <SpotifyAlbum> singles = await AppConstants.SpotifyClient.GetArtistsAlbums(artist.Id, new List <Reverb.SpotifyConstants.SpotifyArtistIncludeGroups>()
            {
                Reverb.SpotifyConstants.SpotifyArtistIncludeGroups.Single
            });

            Singles.AddRange(singles.Items);
            RelatedArtists.AddRange(await AppConstants.SpotifyClient.GetArtistsRelatedArtists(artist.Id));
        }
コード例 #2
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();
        }
コード例 #3
0
ファイル: SpotifyClient.cs プロジェクト: golf1052/Reverb
 public async Task <SpotifyPagingObject <T> > GetNextPage <T>(SpotifyPagingObject <T> pagingObject)
 {
     return(await MakeAuthorizedSpotifyRequest <SpotifyPagingObject <T> >(pagingObject.Next, HttpMethod.Get));
 }
コード例 #4
0
        public async Task OnNavigatedTo()
        {
            All    = new ObservableCollection <SpotifyAlbum>();
            ForYou = new ObservableCollection <SpotifyAlbum>();

            SpotifyPagingObject <SpotifyAlbum> all = await AppConstants.SpotifyClient.GetNewReleases(HelperMethods.GetUsersCountry(), 50);

            All.AddRange(all.Items);

            List <SpotifyArtist> userArtists = new List <SpotifyArtist>();
            var userAlbums = await AppConstants.SpotifyClient.GetUserSavedAlbums(50);

            foreach (var album in userAlbums.Items)
            {
                foreach (var artist in album.Album.Artists)
                {
                    if (!userArtists.Any(a => { return(a.Id == artist.Id); }))
                    {
                        userArtists.Add(artist);
                    }
                }
            }
            while (userAlbums.Next != null)
            {
                userAlbums = await AppConstants.SpotifyClient.GetNextPage(userAlbums);

                foreach (var album in userAlbums.Items)
                {
                    foreach (var artist in album.Album.Artists)
                    {
                        if (!userArtists.Any(a => { return(a.Id == artist.Id); }))
                        {
                            userArtists.Add(artist);
                        }
                    }
                }
            }

            List <SpotifyAlbum> forYou      = new List <SpotifyAlbum>();
            DateTimeOffset      currentDate = DateTimeOffset.Now;

            foreach (var artist in userArtists)
            {
                var albums = await AppConstants.SpotifyClient.GetArtistsAlbums(artist.Id, new List <Reverb.SpotifyConstants.SpotifyArtistIncludeGroups>()
                {
                    Reverb.SpotifyConstants.SpotifyArtistIncludeGroups.Album,
                    Reverb.SpotifyConstants.SpotifyArtistIncludeGroups.Single
                });

                foreach (var album in albums.Items)
                {
                    if (HelperMethods.ParseReleaseDate(album.ReleaseDate) >= currentDate.Subtract(TimeSpan.FromDays(14)))
                    {
                        if (!forYou.Any(a => { return(a.Id == album.Id); }))
                        {
                            forYou.Add(album);
                        }
                    }
                }
            }

            forYou.Sort((a1, a2) =>
            {
                DateTimeOffset a1ReleaseDate = HelperMethods.ParseReleaseDate(a1.ReleaseDate);
                DateTimeOffset a2ReleaseDate = HelperMethods.ParseReleaseDate(a2.ReleaseDate);
                return(a2ReleaseDate.CompareTo(a1ReleaseDate));
            });
            ForYou.AddRange(forYou);
        }