mirror of
https://github.com/Sarsoo/IF.Lastfm.git
synced 2024-10-17 07:13:09 +01:00
61 lines
1.8 KiB
C#
61 lines
1.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using Newtonsoft.Json;
|
|
using Newtonsoft.Json.Linq;
|
|
|
|
namespace IF.Lastfm.Core.Objects
|
|
{
|
|
public class Album
|
|
{
|
|
#region Properties
|
|
|
|
public string Name { get; set; }
|
|
public IEnumerable<Track> Tracks { get; set; }
|
|
|
|
public string ArtistName { get; set; }
|
|
public string ArtistId { get; set; }
|
|
|
|
public DateTime ReleaseDateUtc { get; set; }
|
|
|
|
public int ListenerCount { get; set; }
|
|
public int TotalPlayCount { get; set; }
|
|
|
|
public string Mbid { get; set; }
|
|
|
|
public IEnumerable<Tag> TopTags { get; set; }
|
|
|
|
public Uri Url { get; set; }
|
|
|
|
#endregion
|
|
|
|
/// <summary>
|
|
/// TODO datetime parsing
|
|
/// TODO images
|
|
/// </summary>
|
|
/// <param name="token"></param>
|
|
/// <returns></returns>
|
|
public static Album ParseJToken(JToken token)
|
|
{
|
|
var a = new Album();
|
|
|
|
a.ArtistName = token.Value<string>("artist");
|
|
a.ArtistId = token.Value<string>("id");
|
|
a.ListenerCount = token.Value<int>("listeners");
|
|
a.Mbid = token.Value<string>("mbid");
|
|
a.Name = token.Value<string>("name");
|
|
a.TotalPlayCount = token.Value<int>("playcount");
|
|
|
|
a.Url = new Uri(token.Value<string>("url"), UriKind.Absolute);
|
|
|
|
var tracksToken = token.SelectToken("tracks").SelectToken("track");
|
|
a.Tracks = tracksToken.Children().Select(trackToken => Track.ParseJToken(trackToken, a.Name));
|
|
|
|
var tagsToken = token.SelectToken("toptags").SelectToken("tag");
|
|
a.TopTags = tagsToken.Children().Select(Tag.ParseJToken);
|
|
|
|
return a;
|
|
}
|
|
}
|
|
}
|