Beispiel #1
0
        /// <summary>
        /// Получает полноценный пост, по найденному посту
        /// </summary>
        /// <param name="item">Найденный пост</param>
        /// <returns></returns>
        public ReadyPost GetItem(FoundPost item)
        {
            DownloaderThroughTor downloader = new DownloaderThroughTor();
            HtmlDocument         document   = downloader.Page(new Uri(item.Uri));

            HtmlNode mainNode = document.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   = item;
                readyPost.FoundedTime = DateTime.Now;

                return(readyPost);
            }
            else
            {
                MessageService.ShowError("Ошибка на этапе парсинга раздачи. mainNode = null");
                return(null);
            }
        }
Beispiel #2
0
        /// <summary>
        /// Возвращает готовый пост. Async
        /// </summary>
        /// <param name="item">Найденный пост, который необходимо распарсить</param>
        public void StartGetItem(FoundPost item)
        {
            DownloaderThroughTor downloaderItem = new DownloaderThroughTor();

            downloaderItem.FinishDownload += DownloaderItem_FinishDownload;

            _parentItem = item;

            Uri uri = new Uri(item.Uri);

            downloaderItem.StartDownloadAsync(uri);
        }
        public void StartGetItemTest()
        {
            ParserRutor parser    = new ParserRutor();
            ReadyPost   actual    = null;
            bool        eventCall = false;

            DataBaseControl  db       = new DataBaseControl();
            List <FoundPost> list     = db.GetLastFounded(TTrakers.Rutor, 10);
            FoundPost        itemList = list.First();

            parser.ReadyPostsReceived += delegate(object s, ReadyPostArgs e)
            {
                actual    = e.ReadyPostRecieved;
                eventCall = true;
            };
            parser.StartGetItem(itemList);
            CommonFunction.SleepTimer(12, ref eventCall);

            Assert.IsNotNull(actual);
        }
        public void AddReadyTest()
        {
            autoParsingContext db        = new autoParsingContext();
            FoundPost          foundPost = db.FoundPost.First();
            ReadyPost          readyPost = null;
            bool eventCall = false;

            ParserRutor parserRutor = new ParserRutor();

            parserRutor.ReadyPostsReceived += delegate(object s, ReadyPostArgs e)
            {
                readyPost = e.ReadyPostRecieved;
                eventCall = true;
            };
            parserRutor.StartGetItem(foundPost);
            CommonFunction.SleepTimer(12, ref eventCall);

            DataBaseControl dataBaseControl = new DataBaseControl();

            Assert.IsNotNull(readyPost);
            int actual = dataBaseControl.AddReady(readyPost);

            Assert.AreEqual(9, actual);
        }