Beispiel #1
0
        private static async Task <Track[]> GetAllAlbumTracks(MyAlbumsApi albumApi, Album album)
        {
            var offset = 0;
            var tracks = new List <Track>();

            while (offset < album.TotalTracks)
            {
                var tracksResponse = await albumApi.GetAlbumTracks(album.Id, 20, offset);

                tracks.AddRange(tracksResponse);
                offset += tracksResponse.Length;
            }

            return(tracks.ToArray());
        }
Beispiel #2
0
        public async Task <Track> FindSongForName(string name)
        {
            // HttpClient and AccountsService can be reused.
            // Tokens are automatically cached and refreshed
            var httpClient = new HttpClient();

            var accountsService = new AccountsService(httpClient);

            // Get an artist by Spotify Artist Id
            var artistsApi = new ArtistsApi(httpClient, accountsService);

            var searchResult = await artistsApi.SearchArtists("The Guy Who Sings Your Name");

            var artists = searchResult.Artists.Items;

            if (!artists.Any())
            {
                throw new Exception("Could not find any artists");
            }

            var guyWhoSingsYourNameOverAndOverAgain = artists.First();

            var artistId = guyWhoSingsYourNameOverAndOverAgain.Id;

            var accessToken = await accountsService.GetAccessToken();

            var albumApi = new MyAlbumsApi(httpClient, accessToken);

            var albumsByArtistId = await albumApi.GetAlbumsByArtistId(artistId);

            foreach (var album in albumsByArtistId)
            {
                var albumTracks = await GetAllAlbumTracks(albumApi, album);

                foreach (var albumTrack in albumTracks)
                {
                    if (albumTrack.Name.Contains(name))
                    {
                        return(albumTrack);
                    }
                }
            }

            return(new Track());
        }