Beispiel #1
0
        /// <summary>
        /// Populate Seiyuu information for a character
        /// </summary>
        /// <param name="character">Character to which the Seiyuu information should be added</param>
        /// <param name="seiyuuInfoNodes">HtmlNodes containing the Seiyuu information</param>
        /// <returns>Character instance</returns>
        private static CharacterInformation PopulateSeiyuu(this CharacterInformation character,
                                                           IEnumerable <HtmlNode> seiyuuInfoNodes)
        {
            foreach (var detail in seiyuuInfoNodes)
            {
                var picNode = detail.ChildNodes[3]
                              .ChildNodes["div"]
                              .ChildNodes["a"]
                              .ChildNodes["img"];

                var tmpSeiyuu = new SeiyuuInformation
                {
                    Language   = detail.ChildNodes["td"].ChildNodes["small"].InnerText,
                    Name       = detail.ChildNodes["td"].ChildNodes["a"].InnerText,
                    Url        = MalRouteBuilder.MalCleanUrl(detail.ChildNodes["td"].ChildNodes["a"].Attributes["href"].Value),
                    PictureUrl = (picNode.Attributes["data-src"] ?? picNode.Attributes["src"])?.Value
                };

                int id;
                if (int.TryParse(tmpSeiyuu.Url.Split('/')[4], out id))
                {
                    tmpSeiyuu.Id = id;
                }

                character.Seiyuu.Add(tmpSeiyuu);
            }
            return(character);
        }
Beispiel #2
0
        /// <summary>
        /// Retrieve character's seiyuu
        /// </summary>
        /// <param name="character">Character instance to populate</param>
        /// <param name="doc">Html document from which data should be pulled</param>
        /// <returns>Character instance</returns>
        public static Character RetrieveSeiyuu(this Character character, HtmlDocument doc)
        {
            var tables = doc.DocumentNode
                         .SelectNodes("//table")
                         .Skip(3);

            foreach (var table in tables)
            {
                var seiyuu = new SeiyuuInformation();
                var info   = table
                             .ChildNodes["tr"]
                             .ChildNodes
                             .Where(x => x.Name == "td")
                             .ToList();

                seiyuu.PictureUrl = info[0]
                                    .ChildNodes["div"]
                                    .ChildNodes["a"]
                                    .ChildNodes["img"]
                                    .Attributes["src"]
                                    .Value;

                seiyuu.Name = info[1]
                              .ChildNodes["a"]
                              .InnerText;

                seiyuu.Url = MalRouteBuilder.MalCleanUrl(info[1]
                                                         .ChildNodes["a"]
                                                         .Attributes["href"]
                                                         .Value);

                int id;
                if (int.TryParse(seiyuu.Url.Split('/')[4], out id))
                {
                    seiyuu.Id = id;
                }

                character.Seiyuu.Add(seiyuu);
            }

            return(character);
        }