Beispiel #1
0
        private void Page_onPageDownload(object sender, HTMLPageEventArgs e)
        {
            //dw получаем список раздач с загруженной страницы
            HtmlNodeCollection htmlNodes = e.Page.DocumentNode.SelectNodes(@"//div[@id=""index""]//tr[position()>1]/td[2]");
            //up если нужного узла не будет - null

            //dw необходимо для добавления корректной ссылки на страницу раздачи
            //по умолчанию ссылка парситься без домена первого уровня
            string rutorMainUrl = MainFunc.rutorWorkURL.Replace(@"/soft", "");

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

                //подготавливаем аргументы для события
                RutorListEventArgs eventArgs = new RutorListEventArgs(postLst);
                //вызываем событие. аналог if(onPostReceived!=null)onPostReceived(arg);
                OnPostReceived?.Invoke(this, eventArgs);
            }
            else
            {
                Program.statusBarGlobal.Message = "Ошибка на этапе парсинга страницы";
            }
        }
Beispiel #2
0
        private void Page_OnPageDownload(object sender, HTMLPageEventArgs e)
        {
            HtmlNode mainNode = e.Page.DocumentNode.SelectSingleNode(@"//table[@id=""details""]/tr[1]/td[2]");

            if (mainNode != null)
            {
                //dw agility pack использует объекты по ссылке. Поэтому по сути в дальнейшем коде
                //все ссылаются на mainNode. Дублировать в другой Node довольно проблематично
                //Поэтому когда мы парсим информацию в порядке ее удаления со страницы.
                GetSpoilers(mainNode);
                GetImgs(mainNode);
                GetDescription(mainNode);

                //dw вызываем событие OnPostMaked
                OnPostMaked?.Invoke(this, EventArgs.Empty);
            }
        }