using System; using System.Collections; using System.Collections.Generic; using System.Linq; using IF.Lastfm.Core.Api.Helpers; using Newtonsoft.Json.Linq; namespace IF.Lastfm.Core.Objects { /// /// Todo bio, tour, similar, stats, streamable /// public class Artist { #region Properties public string Name { get; set; } public string Mbid { get; set; } public Uri Url { get; set; } public bool OnTour { get; set; } public IEnumerable Tags { get; set; } public LastImageCollection Images { get; set; } #endregion internal static Artist ParseJToken(JToken token) { var a = new Artist(); a.Name = token.Value("name"); a.Mbid = token.Value("mbid"); a.Url = new Uri(token.Value("url"), UriKind.Absolute); a.OnTour = Convert.ToBoolean(token.Value("ontour")); var tagsToken = token.SelectToken("tags"); if (tagsToken != null) { a.Tags = tagsToken.SelectToken("tag").Children().Select(Tag.ParseJToken); } var images = token.SelectToken("image"); if (images != null) { var imageCollection = LastImageCollection.ParseJToken(images); a.Images = imageCollection; } return a; } internal static string GetNameFromJToken(JToken artistToken) { var name = artistToken.Value("name"); if (string.IsNullOrEmpty(name)) { name = artistToken.Value("#text"); } return name; } } }