public List <AdModel> GetReport(string link, uint maxAdsForNumber, double minPrice, double maxPrice) { var res = GetLinks(link); res = res.DistinctBy(s => s.TempId).ToList(); var blackNumberManager = new BlackNumberManager(); blackNumberManager.BulkAdd(res); var blackNumbers = blackNumberManager.GetBlackNumbers(maxAdsForNumber); var forReport = res.Where(s => s.IsPrivate).ToList(); forReport = forReport.Where(s => s.PhoneNumbers.All(c => !blackNumbers.Contains(c))).ToList(); forReport = forReport.Where(s => s.Price > minPrice && s.Price < maxPrice).ToList(); return(forReport.OrderBy(s => s.Link).ToList()); }
private static void TestBlackNumberManager() { var manager = new BlackNumberManager(); using (var sw = new FileStream("blackNumbers.txt", FileMode.Open)) { manager.LoadFromStream(sw); } var linkPattern = "https://www.olx.ua/nedvizhimost/arenda-kvartir/dolgosrochnaya-arenda-kvartir/dnepropetrovsk/";// "https://www.olx.ua/nedvizhimost/arenda-kvartir/dolgosrochnaya-arenda-kvartir/"; //"https://www.olx.ua/nedvizhimost/arenda-kvartir/dolgosrochnaya-arenda-kvartir/dnepropetrovsk/?search%5Bfilter_float_number_of_rooms%3Afrom%5D=2&search%5Bfilter_float_number_of_rooms%3Ato%5D=3";//"http://www.olx.ua/nedvizhimost/arenda-kvartir/dolgosrochnaya-arenda-kvartir/dnepropetrovsk/"; //"http://www.olx.ua/nedvizhimost/arenda-domov/dnepropetrovsk/"; //System.Console.WriteLine("Pages count: {0}", GetPagesCount(linkPattern)); var previewAdModels = GetPreviewModels(linkPattern); manager.BulkAdd(previewAdModels); System.Console.WriteLine(manager.GetShortReport()); using (var sw = new StreamWriter("long_report.txt")) { sw.Write(manager.GetLongReport()); } using (var sw = new FileStream("blackNumbers.txt", FileMode.OpenOrCreate)) { manager.SaveToStream(sw); } }