|
|
@ -93,8 +93,6 @@ namespace MediaBrowser.Controller.Providers.Music
|
|
|
|
//Execute the Artist search against our name and assume first one is the one we want
|
|
|
|
//Execute the Artist search against our name and assume first one is the one we want
|
|
|
|
var url = RootUrl + string.Format("method=artist.search&artist={0}&api_key={1}&format=json", UrlEncode(item.Name), ApiKey);
|
|
|
|
var url = RootUrl + string.Format("method=artist.search&artist={0}&api_key={1}&format=json", UrlEncode(item.Name), ApiKey);
|
|
|
|
|
|
|
|
|
|
|
|
LastfmArtistSearchResults searchResult;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
try
|
|
|
|
{
|
|
|
|
{
|
|
|
|
using (var json = await HttpClient.Get(new HttpRequestOptions
|
|
|
|
using (var json = await HttpClient.Get(new HttpRequestOptions
|
|
|
@ -106,22 +104,33 @@ namespace MediaBrowser.Controller.Providers.Music
|
|
|
|
|
|
|
|
|
|
|
|
}).ConfigureAwait(false))
|
|
|
|
}).ConfigureAwait(false))
|
|
|
|
{
|
|
|
|
{
|
|
|
|
searchResult = JsonSerializer.DeserializeFromStream<LastfmArtistSearchResults>(json);
|
|
|
|
using (var reader = new StreamReader(json, true))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
var jsonString = await reader.ReadToEndAsync().ConfigureAwait(false);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Sometimes they send back an empty response or just the text "null"
|
|
|
|
|
|
|
|
if (!jsonString.StartsWith("{", StringComparison.OrdinalIgnoreCase))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
return null;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var searchResult = JsonSerializer.DeserializeFromString<LastfmArtistSearchResults>(jsonString);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (searchResult != null && searchResult.results != null && searchResult.results.artistmatches != null && searchResult.results.artistmatches.artist.Count > 0)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
var artist = searchResult.results.artistmatches.artist.FirstOrDefault(i => i.name != null && string.Compare(i.name, item.Name, CultureInfo.CurrentCulture, CompareOptions.IgnoreNonSpace) == 0) ??
|
|
|
|
|
|
|
|
searchResult.results.artistmatches.artist.First();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return artist.mbid;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
catch (HttpException e)
|
|
|
|
catch (HttpException)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
return null;
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (searchResult != null && searchResult.results != null && searchResult.results.artistmatches != null && searchResult.results.artistmatches.artist.Count > 0)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
var artist = searchResult.results.artistmatches.artist.FirstOrDefault(i => i.name != null && string.Compare(i.name, item.Name, CultureInfo.CurrentCulture, CompareOptions.IgnoreNonSpace) == 0) ??
|
|
|
|
|
|
|
|
searchResult.results.artistmatches.artist.First();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return artist.mbid;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return null;
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|