using System; using System.Data; using System.Linq; using System.Text.RegularExpressions; namespace Sony.Filtr.Contracts.Entities { [Serializable] public class Artist { public const string Version = "1"; public Artist(string name) { Name = name; } public Artist(IDataRecord reader) { Name = reader.GetString(0); if (!reader.IsDBNull(1)) ImageUrl = reader.GetString(1); if (!reader.IsDBNull(2)) LastFMImageID = reader.GetString(2); if (!reader.IsDBNull(3)) IsSonyArtist = reader.GetBoolean(3); if (!reader.IsDBNull(4)) Listeners = reader.GetInt32(4); if (!reader.IsDBNull(5)) PlayCount = reader.GetInt32(5); } private string ExtractArtistImageID(string imageUrl) { var match = Regex.Match(imageUrl, @"http://userserve-ak.last.fm/serve/64/(.*)\."); //Looks like http://userserve-ak.last.fm/serve/64/71794894.png, could be other extensions if (match.Groups.Count > 1) return match.Groups[1].Value; return null; } public string Name { get; set; } public string ImageUrl { get; set; } public bool IsSonyArtist { get; set; } public int Listeners { get; set; } public int PlayCount { get; set; } private string _lastFMImageID = null; public string LastFMImageID { get { if (_lastFMImageID == null && !string.IsNullOrWhiteSpace(ImageUrl)) { _lastFMImageID = ExtractArtistImageID(ImageUrl); } return _lastFMImageID; } set { _lastFMImageID = value; } } } }