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