Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
        }