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)); }
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(); }
public async Task <SpotifyPagingObject <T> > GetNextPage <T>(SpotifyPagingObject <T> pagingObject) { return(await MakeAuthorizedSpotifyRequest <SpotifyPagingObject <T> >(pagingObject.Next, HttpMethod.Get)); }
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); }