private static StatsPageData AnalyzeDocument(string HTMLCode) { HtmlDocument doc = new HtmlDocument(); doc.LoadHtml(HTMLCode); StatsPageData page = new StatsPageData(Header.AnalyzeHeader(HTMLCode)); try { var mainNode = doc.DocumentNode.Descendants().First(x => x.GetAttributeValue("class", "") == "js-scrollfix-bottom-rel"); foreach (var spaceit_pad in mainNode.ChildNodes.Where(x => x.GetAttributeValue("class", "") == "spaceit_pad")) { var text = spaceit_pad.InnerText.Replace(" ", "").Replace("-", ""); var summaryType = (AnimeStatsType)Enum.Parse(typeof(AnimeStatsType), text.Split(':')[0]); page.SummaryStats.Add(summaryType, Utility.GetIntFromString(text.Split(':')[1])); } mainNode = mainNode.ChildNodes.First(x => x.Name == "table"); foreach (var tr in mainNode.Descendants("tr")) { var text = tr.Descendants("small").First().InnerText; var index = tr.Descendants("td").First().InnerText; page.ScoreStats.Add(Utility.GetIntFromString(index), Utility.GetIntFromString(text)); } } catch (Exception ex) { Console.WriteLine(ex.Message + ex.StackTrace); } return(page); }
public void AnimeStatsPage_ParsedCorrectly() { string testLink = "https://myanimelist.net/anime/5114/Fullmetal_Alchemist__Brotherhood/stats"; StatsPageData page = MALParser.AnimePage.Stats.Parse(testLink); Assert.AreEqual(page.SummaryStats.Count, 6); Assert.AreEqual(page.ScoreStats.Count, 10); }
public StatsPageData GetStatsPage() { if (m_stats != null) { return(m_stats); } if (m_header.Link_Stats == null) { throw new Exception("There's no stats page for this anime."); } m_stats = Stats.Parse(m_header.Link_Stats.Path);; return(m_stats); }
public async Task <StatsPageData> GetStatsPageAsync() { if (m_stats != null) { return(m_stats); } if (m_header.Link_Stats == null) { throw new Exception("There's no stats page for this anime."); } m_stats = await Stats.ParseAsync(m_header.Link_Stats.Path); return(m_stats); }