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