Exemplo n.º 1
0
        public static async Task <Post[]> GetNewAsync()
        {
            var client = new WebClientEx(_cookies);
            var html   = await client.DownloadDataTaskAsync(Url);

            var doc = new HtmlDocument();

            doc.Load(new MemoryStream(html), Encoding.UTF8);

            var res = doc
                      .GetElementbyId("vf")
                      .ChildNodes["div"]
                      .ChildNodes["div"]
                      .ChildNodes["table"]
                      .ChildNodes["tbody"]
                      .SelectNodes("tr").Select(item =>
            {
                var content = item.ChildNodes[1].ChildNodes[3].ChildNodes["div"].ChildNodes[1];
                if (content.Name != "strong")
                {
                    return(null);
                }

                var topic   = WebUtility.HtmlDecode(content.ChildNodes["a"].InnerText);
                var topicId = int.Parse(content.ChildNodes["a"].Attributes["href"].Value.Split('=')[1]);

                var lastPostPoster = item.ChildNodes[7].ChildNodes["span"];
                var poster         = WebUtility.HtmlDecode(lastPostPoster.InnerText.Substring(3));
                var posterId       = int.Parse(lastPostPoster.ChildNodes["a"]?.Attributes["href"].Value.Split('=')[1] ??
                                               "-1");

                var forum   = item.ChildNodes[3].ChildNodes["a"].InnerText;
                var pnumber = int.Parse(item.ChildNodes[5].InnerText.Replace(",", "")) + 1;

                var lastPost = item.ChildNodes[7].ChildNodes["a"];
                var postId   = int.Parse(lastPost.Attributes["href"].Value.Split('#')[1].Substring(1));
                var time     = lastPost.InnerText.Split(' ')[1];
                return(new Post(topic, topicId, poster, posterId, forum, pnumber, postId, time));
            })
                      .Where(i => i != null)
                      .ToArray();

            foreach (var item in res)
            {
                item.Content = await GetContentAsync(item.TopicId, item.PostId);
            }

            return(res);
        }
Exemplo n.º 2
0
        public static async Task <string> GetCSRFAsync()
        {
            using (var client = new WebClientEx(_cookies))
            {
                var html = await client.DownloadDataTaskAsync(DiffIsBad);

                var doc = new HtmlDocument();
                doc.Load(new MemoryStream(html), Encoding.UTF8);
                return(doc
                       .DocumentNode
                       .Descendants()
                       .Where(node => node.GetAttributeValue("name", "") == "csrf_token")
                       .Select(node => node.Attributes["value"].Value)
                       .First());
            }
        }
Exemplo n.º 3
0
        public static async Task <string> GetContentAsync(int topicId, int postId)
        {
            var client = new WebClientEx(_cookies);
            var html   = await client.DownloadDataTaskAsync(string.Format(DirectUrl, topicId, postId));

            var doc = new HtmlDocument();

            doc.Load(new MemoryStream(html), Encoding.UTF8);

            return(doc
                   .DocumentNode
                   .Descendants()
                   .Where(node => node.GetAttributeValue("name", "") == "req_message")
                   .Select(node => WebUtility.HtmlDecode(node.InnerText))
                   .FirstOrDefault());
        }