mirror of
https://github.com/Sarsoo/IF.Lastfm.git
synced 2024-10-17 07:13:09 +01:00
Merge pull request #39 from zumicts/master
Parse biography and similar artist tokens for artists
This commit is contained in:
commit
38932a19c0
@ -98,6 +98,7 @@
|
||||
<Compile Include="Objects\BuyLink.cs" />
|
||||
<Compile Include="Objects\CountryCode.cs" />
|
||||
<Compile Include="Objects\ILastFmObject.cs" />
|
||||
<Compile Include="Objects\LastWiki.cs" />
|
||||
<Compile Include="Objects\LastImageSet.cs" />
|
||||
<Compile Include="Objects\LastShout.cs" />
|
||||
<Compile Include="Objects\LastStation.cs" />
|
||||
|
@ -14,11 +14,12 @@ public class LastArtist : ILastfmObject
|
||||
|
||||
public string Id { get; set; }
|
||||
public string Name { get; set; }
|
||||
public LastWiki Bio { get; set; }
|
||||
public string Mbid { get; set; }
|
||||
public Uri Url { get; set; }
|
||||
public bool OnTour { get; set; }
|
||||
public IEnumerable<LastTag> Tags { get; set; }
|
||||
|
||||
public List<LastArtist> Similar { get; set; }
|
||||
public LastImageSet MainImage { get; set; }
|
||||
|
||||
#endregion
|
||||
@ -39,7 +40,13 @@ internal static LastArtist ParseJToken(JToken token)
|
||||
a.Url = new Uri(url, UriKind.Absolute);
|
||||
|
||||
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");
|
||||
if (tagsToken != null)
|
||||
{
|
||||
@ -59,7 +66,28 @@ internal static LastArtist ParseJToken(JToken token)
|
||||
var imageCollection = LastImageSet.ParseJToken(images);
|
||||
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;
|
||||
}
|
||||
|
||||
|
32
src/IF.Lastfm.Core/Objects/LastWiki.cs
Normal file
32
src/IF.Lastfm.Core/Objects/LastWiki.cs
Normal 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")
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user