/// <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); }
/// <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); }