private void DownloaderItem_FinishDownload(object sender, DownloaderHtmlPageArgs e) { HtmlNode mainNode = e.Page.DocumentNode.SelectSingleNode(@"//table[@id=""details""]/tr[1]/td[2]"); if (mainNode != null) { // Важно чтобы сначала вызывался парсинг спойлеров, а затем только парсинг описание // Порядок вызова остальных функций не важен. Читай комментарий в функции со спойлерами ReadyPost readyPost = new ReadyPost(); readyPost.Spoilers = ParsingSpoilers(mainNode, readyPost); readyPost.Imgs = ParsingImgs(mainNode, readyPost); readyPost.Description = HttpUtility.HtmlDecode(mainNode.InnerHtml); readyPost.Name = ParsingName(mainNode); readyPost.TorrentUrl = ParsingTorrentUrl(mainNode); readyPost.FoundPost = _parentItem; readyPost.FoundedTime = DateTime.Now; ReadyPostArgs eventArgs = new ReadyPostArgs(readyPost); ReadyPostsReceived?.Invoke(this, eventArgs); } else { MessageService.ShowError("Ошибка на этапе парсинга раздачи. mainNode = null"); } }
private void Downloader_FinishDownload(object sender, DownloaderHtmlPageArgs e) { // если нужного узла не будет - null HtmlNodeCollection htmlNodes = e.Page.DocumentNode.SelectNodes(@"//div[@id=""index""]//tr[position()>1]/td[2]"); // необходимо для добавления корректной ссылки на страницу раздачи // по умолчанию ссылка парситься без домена первого уровня string rutorMainUrl = UriSoft.OriginalString.Replace(@"/soft", ""); if (htmlNodes != null) { var foundQuery = from el in htmlNodes select new FoundPost { Name = HttpUtility.HtmlDecode(el.LastChild.InnerText), Uri = rutorMainUrl + el.LastChild.GetAttributeValue("href", null), Magnet = el.ChildNodes[1].GetAttributeValue("href", null), FoundedTime = DateTime.Now, TorrentTracker_idTorrentTracker = (int)TTrakers.Rutor, }; List <FoundPost> foundPosts = foundQuery.Reverse().ToList(); FoundPostArgs eventArgs = new FoundPostArgs(foundPosts); FoundPostsReceived?.Invoke(this, eventArgs); } else { MessageService.ShowError("Ошибка на этапе парсинга списка раздач. htmlNodes = null"); } }
private void Client_DownloadDataCompleted(object sender, DownloadDataCompletedEventArgs e) { if (e.Error == null) { byte[] dataArray = e.Result; //ставим правильную кодировку для данных, инчае будут string page = Encoding.UTF8.GetString(dataArray); //корикозябры вместо кириллицы HtmlDocument doc = new HtmlDocument(); doc.LoadHtml(page); //делаем страницу из string DownloaderHtmlPageArgs args = new DownloaderHtmlPageArgs(doc); FinishDownload?.Invoke(this, args); //вызываем событие, аналог if(OnPageDow!=null) } else { MessageService.ShowError("Ошибка подключения при запросе списка торрентов."); } }