VLC_WINRT.Utility.Helpers.MusicLibrary.LastFmClient.GetArtistInfo C# (CSharp) Method

GetArtistInfo() public method

public GetArtistInfo ( string artistName ) : Task
artistName string
return Task
        public async Task<Artist> GetArtistInfo(string artistName)
        {
            try
            {
                var lastFmClient = new HttpClient();
                // Get users language/region
                // If their region is not support by LastFM, it won't return an artist biography.
                var region = new Windows.Globalization.GeographicRegion();
                string url =
                    string.Format(
 "http://ws.audioscrobbler.com/2.0/?method=artist.getinfo&artist={1}&api_key={0}&format=json&lang={2}",
                        App.ApiKeyLastFm, artistName, region.Code.ToLower());
                var reponse = await lastFmClient.GetStringAsync(url);
                {
                    var artistInfo = JsonConvert.DeserializeObject<ArtistInformation>(reponse);
                    if (artistInfo == null) return null;
                    if (artistInfo.Artist == null) return null;
                    var artist = new Artist();
                    artist.MapFrom(artistInfo);
                    return artist;
                }
            }
            catch
            {
                Debug.WriteLine("Failed to get artist biography from LastFM. Returning nothing.");
            }
            return null;
        }

Usage Example

        private static async Task <bool> DownloadArtistPictureFromLastFm(MusicLibraryViewModel.ArtistItem artist)
        {
            var lastFmClient = new LastFmClient();
            var lastFmArtist = await lastFmClient.GetArtistInfo(artist.Name);

            if (lastFmArtist == null)
            {
                return(false);
            }
            try
            {
                var clientPic    = new HttpClient();
                var imageElement = lastFmArtist.Images.LastOrDefault(node => !string.IsNullOrEmpty(node.Url));
                if (imageElement == null)
                {
                    return(false);
                }
                HttpResponseMessage responsePic = await clientPic.GetAsync(imageElement.Url);

                byte[] img = await responsePic.Content.ReadAsByteArrayAsync();

                InMemoryRandomAccessStream streamWeb = new InMemoryRandomAccessStream();

                DataWriter writer = new DataWriter(streamWeb.GetOutputStreamAt(0));
                writer.WriteBytes(img);

                await writer.StoreAsync();

                StorageFolder artistPic = await ApplicationData.Current.LocalFolder.CreateFolderAsync("artistPic",
                                                                                                      CreationCollisionOption.OpenIfExists);

                string fileName = artist.Name + "_" + "dPi";

                var file = await artistPic.CreateFileAsync(fileName + ".jpg", CreationCollisionOption.OpenIfExists);

                var raStream = await file.OpenAsync(FileAccessMode.ReadWrite);

                using (var thumbnailStream = streamWeb.GetInputStreamAt(0))
                {
                    using (var stream = raStream.GetOutputStreamAt(0))
                    {
                        await RandomAccessStream.CopyAsync(thumbnailStream, stream);
                    }
                }
                StorageFolder appDataFolder           = ApplicationData.Current.LocalFolder;
                string        supposedPictureUriLocal = appDataFolder.Path + "\\artistPic\\" + artist.Name + "_" + "dPi" + ".jpg";
                DispatchHelper.InvokeAsync(() => artist.Picture = supposedPictureUriLocal);
                return(true);
            }
            catch (Exception)
            {
                Debug.WriteLine("Error getting or saving art from LastFm.");
                return(false);
            }
        }
All Usage Examples Of VLC_WINRT.Utility.Helpers.MusicLibrary.LastFmClient::GetArtistInfo