private List <WebSearchResult> SearchOnPage(int pageNumber, Layout layout) { AvitoPage page = new AvitoPage(_settings, new AvitoPageRequest(_settings, pageNumber, layout.SearchText)); List <WebSearchResult> results = new List <WebSearchResult>(); Filter filter = new Filter(); string[] titleContains = layout.SearchText.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); for (int i = 0; i < titleContains.Length; i++) { titleContains[i] = new LowerText(new TrimText(titleContains[i])); } filter.TitleContains = titleContains; string[] titleDoesNotContain = layout.SearchTextExclude.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); for (int i = 0; i < titleDoesNotContain.Length; i++) { titleDoesNotContain[i] = new LowerText(new TrimText(titleDoesNotContain[i])); } filter.TitleDoesNotContain = titleDoesNotContain; filter.MinPrice = layout.MinPrice; filter.MaxPrice = layout.MaxPrice < 1 ? int.MaxValue : layout.MaxPrice; filter.DatesAfter = layout.DatesAfter; var webSearchResults = page.GetResults(filter); foreach (var result in webSearchResults) { if (result.ImageUrl != null) { var image = ImageUtil.GetImage(result.ImageUrl).GetThumbnailImage(100, 70, null, IntPtr.Zero); result.ImageBase64 = ImageUtil.ImageToBase64String(image); } } results.AddRange(webSearchResults); return(results); }
private void OnSearch(object sender, EventArgs e) { _totalPages = 0; _parsedPages = 0; _form.PageCount = 0; _form.ResultCount = 0; _form.CanSearchNext = false; object state = _form.BeginSearching(); try { Layout layout = _form.GetLayout(); if (new IsEmptyString(layout.SearchText)) { return; } WebPageInfo pageInfo = new AvitoPage(_settings, new AvitoPageRequest(_settings, layout.SearchText)).Info(); if (pageInfo.PageCount == 0) { return; } _form.PageCount = _totalPages = pageInfo.PageCount; for (int i = 1; i <= layout.PagesPerSet; i++) { _parsedPages++; if (_parsedPages > _totalPages) { return; } List <WebSearchResult> newResults = SearchOnPage(i, layout); for (int j = 0; j < newResults.Count; j++) { _form.ResultCount++; _form.AddResultEntry(newResults[j]); } } } finally { _form.EndSearching(state); _form.CanSearchNext = _parsedPages < _totalPages; SortBy(); } }