Example #1
0
        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 = UriWork.OriginalString.Replace(@"/soft", "");

            if (htmlNodes != null)
            {
                List <ItemList> postsList;
                postsList = htmlNodes.Select((el, i) => new ItemList
                {
                    // HtmlDecode необходим чтобы привести HTML escape последовательности
                    // в нормальный вид
                    Name   = HttpUtility.HtmlDecode(el.LastChild.InnerText),
                    Href   = rutorMainUrl + el.LastChild.GetAttributeValue("href", null),
                    Index  = i,
                    Magnet = el.ChildNodes[1].GetAttributeValue("href", null),
                }).ToList();

                ItemListArgs eventArgs = new ItemListArgs(postsList);
                //вызываем событие. аналог if(onPostReceived!=null)onPostReceived(arg);
                ListReceived?.Invoke(this, eventArgs);
            }
            else
            {
                Program.statusBarGlobal.Message = "Ошибка на этапе парсинга страницы";
            }
        }
Example #2
0
        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
            {
                Program.statusBarGlobal.Message = "Ошибка подключения при запросе списка торрентов";
            }
        }