/// <summary> /// Fetches the lastfm data. /// </summary> /// <param name="item">The item.</param> /// <param name="musicBrainzId">The music brainz id.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>Task.</returns> protected override async Task FetchLastfmData(BaseItem item, string musicBrainzId, bool force, CancellationToken cancellationToken) { // Get artist info with provided id var url = RootUrl + string.Format("method=artist.getInfo&mbid={0}&api_key={1}&format=json", UrlEncode(musicBrainzId), ApiKey); LastfmGetArtistResult result; using (var json = await HttpClient.Get(new HttpRequestOptions { Url = url, ResourcePool = LastfmResourcePool, CancellationToken = cancellationToken, EnableHttpCompression = false }).ConfigureAwait(false)) { using (var reader = new StreamReader(json)) { var jsonText = await reader.ReadToEndAsync().ConfigureAwait(false); // Fix their bad json jsonText = jsonText.Replace("\"#text\"", "\"url\""); result = JsonSerializer.DeserializeFromString <LastfmGetArtistResult>(jsonText); } } if (result != null && result.artist != null) { LastfmHelper.ProcessArtistData(item, result.artist); } }
/// <summary> /// Fetches the lastfm data. /// </summary> /// <param name="item">The item.</param> /// <param name="musicBrainzId">The music brainz id.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>Task.</returns> protected override async Task FetchLastfmData(BaseItem item, string musicBrainzId, bool force, CancellationToken cancellationToken) { var artist = (Artist)item; // See if we can avoid an http request by finding the matching MusicArtist entity var musicArtist = Artist.FindMusicArtist(artist, LibraryManager); if (musicArtist != null && !force) { LastfmHelper.ProcessArtistData(musicArtist, artist); } else { await base.FetchLastfmData(item, musicBrainzId, force, cancellationToken).ConfigureAwait(false); } }