Merge pull request #39 from zumicts/master

Parse biography and similar artist tokens for artists
This commit is contained in:
Rikki Tooley 2014-12-17 09:40:21 +00:00
commit 38932a19c0
3 changed files with 64 additions and 3 deletions

View File

@ -98,6 +98,7 @@
<Compile Include="Objects\BuyLink.cs" /> <Compile Include="Objects\BuyLink.cs" />
<Compile Include="Objects\CountryCode.cs" /> <Compile Include="Objects\CountryCode.cs" />
<Compile Include="Objects\ILastFmObject.cs" /> <Compile Include="Objects\ILastFmObject.cs" />
<Compile Include="Objects\LastWiki.cs" />
<Compile Include="Objects\LastImageSet.cs" /> <Compile Include="Objects\LastImageSet.cs" />
<Compile Include="Objects\LastShout.cs" /> <Compile Include="Objects\LastShout.cs" />
<Compile Include="Objects\LastStation.cs" /> <Compile Include="Objects\LastStation.cs" />

View File

@ -14,11 +14,12 @@ public class LastArtist : ILastfmObject
public string Id { get; set; } public string Id { get; set; }
public string Name { get; set; } public string Name { get; set; }
public LastWiki Bio { get; set; }
public string Mbid { get; set; } public string Mbid { get; set; }
public Uri Url { get; set; } public Uri Url { get; set; }
public bool OnTour { get; set; } public bool OnTour { get; set; }
public IEnumerable<LastTag> Tags { get; set; } public IEnumerable<LastTag> Tags { get; set; }
public List<LastArtist> Similar { get; set; }
public LastImageSet MainImage { get; set; } public LastImageSet MainImage { get; set; }
#endregion #endregion
@ -39,7 +40,13 @@ internal static LastArtist ParseJToken(JToken token)
a.Url = new Uri(url, UriKind.Absolute); a.Url = new Uri(url, UriKind.Absolute);
a.OnTour = Convert.ToBoolean(token.Value<int>("ontour")); a.OnTour = Convert.ToBoolean(token.Value<int>("ontour"));
var bioToken = token.SelectToken("bio");
if (bioToken != null)
{
a.Bio = LastWiki.ParseJToken(bioToken);
}
var tagsToken = token.SelectToken("tags"); var tagsToken = token.SelectToken("tags");
if (tagsToken != null) if (tagsToken != null)
{ {
@ -59,7 +66,28 @@ internal static LastArtist ParseJToken(JToken token)
var imageCollection = LastImageSet.ParseJToken(images); var imageCollection = LastImageSet.ParseJToken(images);
a.MainImage = imageCollection; a.MainImage = imageCollection;
} }
a.Similar = new List<LastArtist>();
var similarToken = token.SelectToken("similar");
if (similarToken != null)
{
var similarArtists = similarToken.SelectToken("artist");
if (similarArtists != null && similarArtists.Children().Any())
{
// array notation isn't used on the api when only one object is available
if (similarArtists.Type != JTokenType.Array)
{
var item = ParseJToken(similarArtists);
a.Similar.Add(item);
}
else
{
var items = similarArtists.Children().Select(ParseJToken);
a.Similar.AddRange(items);
}
}
}
return a; return a;
} }

View File

@ -0,0 +1,32 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json.Linq;
namespace IF.Lastfm.Core.Objects
{
public class LastWiki : ILastfmObject
{
#region Properties
public DateTime Published { get; set; }
public string Summary { get; set; }
public string Content { get; set; }
public int YearFormed { get; set; }
#endregion
internal static LastWiki ParseJToken(JToken token)
{
return new LastWiki
{
Published = token.Value<DateTime>("published"),
Summary = token.Value<string>("summary").Trim(),
Content = token.Value<string>("content").Trim(),
YearFormed = token.Value<int>("yearformed")
};
}
}
}