Exemplo n.º 1
0
 private string AddRecommendedSeedApiParmeters(RecommendedTracksSeed getRecommendedSongs)
 {
     return($"{(!getRecommendedSongs.SeedTrackUris.IsNullOrEmpty() ? $"seed_tracks={ HttpUtility.UrlEncode(ConvertToCommaDelimitedString(getRecommendedSongs.SeedTrackUris))}&" : string.Empty)}{(!getRecommendedSongs.SeedArtistUris.IsNullOrEmpty() ? $"seed_artists={ HttpUtility.UrlEncode(ConvertToCommaDelimitedString(getRecommendedSongs.SeedArtistUris))}&" : string.Empty)}{(!string.IsNullOrWhiteSpace(getRecommendedSongs.Market) ? $"{getRecommendedSongs.Market}" : string.Empty)}");
 }
Exemplo n.º 2
0
        public async Task <List <Domain.Track> > GetRecommendedTracksAsync(PartyGoer partyGoer, RecommendedTracksSeed recommendedTrackSeeds)
        {
            List <string> seedTrackUris  = recommendedTrackSeeds?.SeedTrackUris;
            List <string> seedArtistUris = recommendedTrackSeeds?.SeedArtistUris;

            if (seedTrackUris?.Count + seedArtistUris?.Count > 5 || seedTrackUris?.Count + seedArtistUris?.Count == 0)
            {
                throw new ArgumentException("The count of seeds need to be between 1 and 5");
            }

            recommendedTrackSeeds.SeedTrackUris = seedTrackUris.Select(p => p.Replace("spotify:track:", "").Split("+").First()).ToList();

            var response = await SendHttpRequestAsync(partyGoer.GetSpotifyId(), _apiEndpoints[ApiEndpointType.GetRecommendedTracks], AddRecommendedSeedApiParmeters(recommendedTrackSeeds), true);

            RecommendedTracks tracks = await response.Content.ReadFromJsonAsync <RecommendedTracks>();

            List <Domain.Track> recommendedSongs = new List <Domain.Track>();

            foreach (SpotifyModels.Track track in tracks.Tracks)
            {
                if (track.Markets.Contains(partyGoer.GetMarket()) && track != null)
                {
                    recommendedSongs.Add(new Domain.Track
                    {
                        AlbumImageUrl = null,
                        Artists       = track.Artists.Select(p => new SpotifyModels.Artist {
                            Id = p.Id, Name = p.Name
                        }).ToList(),
                        Explicit = track.Explicit,
                        Length   = track.Duration,
                        Name     = track.Name,
                        Id       = track.Id
                    });
                }
            }

            return(recommendedSongs.ToList());
        }