mirror of
https://github.com/Sarsoo/IF.Lastfm.git
synced 2024-10-17 07:13:09 +01:00
Check for token type instead of handling an exception
This commit is contained in:
parent
878e7c0e63
commit
ceb16a96fa
@ -40,29 +40,33 @@ internal static Album ParseJToken(JToken token)
|
|||||||
{
|
{
|
||||||
var a = new Album();
|
var a = new Album();
|
||||||
|
|
||||||
try
|
var artistToken = token["artist"];
|
||||||
|
if (artistToken.Type == JTokenType.String)
|
||||||
{
|
{
|
||||||
a.ArtistName = token.Value<string>("artist");
|
a.ArtistName = token.Value<string>("artist");
|
||||||
a.ArtistId = token.Value<string>("id");
|
a.ArtistId = token.Value<string>("id");
|
||||||
|
}
|
||||||
|
else if (artistToken.Type == JTokenType.Object)
|
||||||
|
{
|
||||||
|
a.ArtistName = artistToken.Value<string>("name");
|
||||||
|
a.ArtistId = artistToken.Value<string>("mbid");
|
||||||
|
}
|
||||||
|
|
||||||
var tracksToken = token.SelectToken("tracks").SelectToken("track");
|
var tracksToken = token.SelectToken("tracks");
|
||||||
if (tracksToken != null)
|
if (tracksToken != null)
|
||||||
{
|
{
|
||||||
a.Tracks = tracksToken.Children().Select(trackToken => Track.ParseJToken(trackToken, a.Name));
|
var trackToken = tracksToken.SelectToken("track");
|
||||||
|
if (trackToken != null)
|
||||||
|
{
|
||||||
|
a.Tracks = tracksToken.Children().Select(t => Track.ParseJToken(t, a.Name));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var tagsToken = token.SelectToken("toptags").SelectToken("tag");
|
var tagsToken = token.SelectToken("toptags");
|
||||||
if (tagsToken != null)
|
if (tagsToken != null)
|
||||||
{
|
{
|
||||||
a.TopTags = tagsToken.Children().Select(Tag.ParseJToken);
|
var tagToken = tagsToken.SelectToken("tag");
|
||||||
}
|
a.TopTags = tagToken.Children().Select(Tag.ParseJToken);
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
// for when artist is not a string but a Artist object
|
|
||||||
var artist = token.SelectToken("artist").ToObject<Artist>();
|
|
||||||
a.ArtistName = artist.Name;
|
|
||||||
a.ArtistId = artist.Mbid;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
a.ListenerCount = token.Value<int>("listeners");
|
a.ListenerCount = token.Value<int>("listeners");
|
||||||
|
Loading…
Reference in New Issue
Block a user