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;
}
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); } }