示例#1
0
        public ImageSize(ImageInfoSizes size)
        {
            switch (size)
            {
            case ImageInfoSizes.Small:
                Width  = 30;
                Height = 30;
                break;

            case ImageInfoSizes.Medium:
                Width  = 64;
                Height = 64;
                break;

            case ImageInfoSizes.Large:
                Width  = 126;
                Height = 126;
                break;

            case ImageInfoSizes.ExtraLarge:
                Width  = 252;
                Height = 252;
                break;

            case ImageInfoSizes.Mega:
                Width  = 500;
                Height = 500;
                break;

            default:
                Width  = -1;
                Height = -1;
                break;
            }
        }
示例#2
0
        public static LastFmArtist Parse(JObject jsonObj)
        {
            LastFmArtist art      = new LastFmArtist();
            JToken       artToken = jsonObj["artist"];

            art.Name = artToken.HasProperty("name") ? artToken.Value <string>("name") : "Undefined";
            art.Mbid = artToken.HasProperty("mbid") ? artToken.Value <string>("mbid") : "Undefined";

            art.Members = new List <LastFmMembers>();
            if (artToken.HasProperty("bandmembers"))
            {
                foreach (JToken m in artToken["bandmembers"]["member"].Children())
                {
                    art.Members.Add(new LastFmMembers
                    {
                        Name     = m.Value <string>("name"),
                        YearFrom = m.Value <int>("yearfrom"),
                        YearTo   = m.Value <int>("yearto")
                    });
                }
            }

            art.Url        = artToken.HasProperty("url") ? artToken.Value <string>("url") : "Undefined";
            art.Streamable = artToken.HasProperty("streamable") && artToken.Value <string>("streamable") != "0";
            art.OnTour     = artToken.HasProperty("ontour") && artToken.Value <string>("ontour") != "0";

            art.Images = new List <ImageInfo>();
            if (artToken.HasProperty("image"))
            {
                foreach (var img in artToken["image"])
                {
                    ImageInfoSizes size = ImageInfoSizes.Small;
                    Enum.TryParse(img.Value <string>("size"), true, out size);

                    art.Images.Add(new ImageInfo
                    {
                        Size = new ImageSize(size),
                        Link = img.Value <string>("#text"),
                    });
                }
            }

            art.Stats = new LastFmStats();
            if (artToken.HasProperty("stats"))
            {
                art.Stats.Listeners = artToken["stats"].HasProperty("listeners")
                    ? artToken["stats"].Value <string>("listeners")
                    : "0";
                art.Stats.PlayCount = artToken["stats"].HasProperty("playcount")
                    ? artToken["stats"].Value <string>("playcount")
                    : "0";
            }
            ;

            art.Tags = new List <string>();
            if (artToken.HasProperty("tags"))
            {
                foreach (var tag in artToken["tags"]["tag"])
                {
                    art.Tags.Add(tag["name"].ToString());
                }
            }

            if (artToken.HasProperty("bio"))
            {
                art.Year = int.Parse(artToken["bio"]["yearformed"].ToString());
            }

            return(art);
        }
示例#3
0
        public static LastFmAlbum Parse(JObject jObject)
        {
            LastFmAlbum alb  = new LastFmAlbum();
            JToken      data = jObject["album"];

            alb.Title    = data.GetStringValue("name");
            alb.Artist   = data.GetStringValue("artist");
            alb.LastFmId = data.GetStringValue("id");
            alb.Mbid     = data.GetStringValue("mbid");
            alb.Url      = data.GetStringValue("url");
            alb.Release  = data.GetStringValue("releasedate");

            alb.Stats = new LastFmStats
            {
                Listeners = data.GetStringValue("listeners"),
                PlayCount = data.GetStringValue("playcount")
            };

            alb.Images = new List <ImageInfo>();
            if (data.HasProperty("image"))
            {
                foreach (var img in data["image"])
                {
                    ImageInfoSizes size = ImageInfoSizes.Small;
                    Enum.TryParse(img.Value <string>("size"), true, out size);

                    alb.Images.Add(new ImageInfo
                    {
                        Size = new ImageSize(size),
                        Link = img.Value <string>("#text"),
                    });
                }
            }

            alb.Tags = new List <string>();
            if (data.HasProperty("toptags"))
            {
                foreach (var tag in data["toptags"]["tag"])
                {
                    alb.Tags.Add(tag["name"].ToString());
                }
            }

            alb.Tracks = new List <LastFmAlbumTrack>();
            if (data.HasProperty("tracks"))
            {
                foreach (var t in data["tracks"]["track"])
                {
                    int r;
                    if (!int.TryParse(t["@attr"]["rank"].ToString(), out r))
                    {
                        r = -1;
                    }

                    int d;
                    if (!int.TryParse(t["duration"].ToString(), out d))
                    {
                        d = 0;
                    }

                    alb.Tracks.Add(new LastFmAlbumTrack
                    {
                        Rank       = r,
                        AlbumName  = alb.Title,
                        ArtistMbid = t["artist"]["mbid"].ToString(),
                        ArtistName = t["artist"]["name"].ToString(),
                        Duration   = d,
                        Title      = t["name"].ToString()
                    });
                }
            }

            return(alb);
        }