/// <summary> /// Retrieve related Anime and Manga for the Anime /// </summary> /// <param name="anime">Anime instance to populate</param> /// <param name="doc">Html document from which data should be pulled</param> /// <returns>Anime instance</returns> public static Anime RetrieveRelatedAnime(this Anime anime, HtmlDocument doc) { var relatedNodes = doc.DocumentNode .SelectSingleNode("//table[@class='anime_detail_related_anime']"); return(relatedNodes == null ? anime : relatedNodes.ChildNodes.Count > 1 ? anime.ParseRelatedTableRows(relatedNodes) : anime.ParseRelatedTableCells(relatedNodes.FirstChild)); }
/// <summary> /// If the related items is a proper table with multiple ```tr``` rows instead of one ```tr``` row with another embedded ```tr``` then the direct parsing method fails, /// instead this method should be called to parse each individual ```tr``` /// </summary> /// <param name="anime">Anime instance to populate</param> /// <param name="rowsToParse">Node containing the rows</param> /// <returns>Anime instance</returns> private static Anime ParseRelatedTableRows(this Anime anime, HtmlNode rowsToParse) { foreach (var row in rowsToParse.ChildNodes) { if (row.Name == "tr") { anime.ParseRelatedTableCells(row); } } return(anime); }