private TaskMessageCollectorCache ToCache8(Task arg2) { var arg1 = new TaskMessageCollectorCache(); var access = BCT.Context.BulletinDb.Accesses.Find(arg2.AccessId); if (access != null) { arg1.AccessId = access.Id; arg1.Login = access.Login; arg1.Password = access.Password; arg1.LastMessage = access.LastMessage; } return(arg1); }
static void TestCollectMessages() { var avito = new Avito(); var task = new TaskMessageCollectorCache { AccessId = new Guid("7D4D06F2-8C3A-4E7B-82A2-A815427BB7A2"), Login = "******", Password = "******" }; FirefoxHelper.ExecuteWithVisual(browser => { browser.Navigate().GoToUrl("https://www.avito.ru/moskva/bytovaya_elektronika"); var msgs = avito.CollectMessages(browser, task); if (msgs.Any()) { var access = AccessHelper.GetAccess(task.AccessId); access.LastMessage = msgs.Max(q => q.PublicationDate); AccessHelper.Save(access); MessageServiceHelper.Save(msgs); } }, null, 100); }
public override IEnumerable <MessageCache> CollectMessages(FirefoxDriver driver, TaskMessageCollectorCache taskModel) { var result = Enumerable.Empty <MessageCache>(); try { if (!Auth(driver, taskModel.Login, taskModel.Password)) { return(result); } //Сбор сообщений var messages = new List <MessageCache>(); driver.Navigate().GoToUrl($"http://www.avito.ru/profile/messenger"); WaitPage(driver, 10000, $"www.avito.ru/profile/messenger"); var pageSource = driver.PageSource; var commonPattern = "class=\"messenger-channel([\\s\\S\\r\\n]*?messenger-channel-text-overflow[\\s\\S\\r\\n]*?)</div>"; var datetimePattern = "class=\"messenger-channel-datetime\"[\\s\\S\\r\\n]*?datetime=\"(.*?)\""; var textPattern = "messenger-channel-text-overflow[\\s\\S\\r\\n]*?<span>(.*?)</span>"; var textPattern2 = "messenger-channel-text-overflow[\\s\\S\\r\\n]*?<!-- react-text: \\d+ -->(.*?)<!-"; var matches = RegexHelper.Execute(commonPattern, pageSource); foreach (var match in matches) { var messageSource = match.Value; var datetimeStr = RegexHelper.GetValue(datetimePattern, messageSource); var datetime = DateTime.Parse(datetimeStr); if (taskModel.LastMessage != null && datetime < taskModel.LastMessage) { continue; } var text = RegexHelper.GetValue(textPattern, messageSource); if (string.IsNullOrEmpty(text)) { text = RegexHelper.GetValue(textPattern2, messageSource); } if (string.IsNullOrEmpty(text)) { text = messageSource; } var cache = new MessageCache(); cache.AccessId = taskModel.AccessId; cache.Text = text; cache.PublicationDate = datetime; messages.Add(cache); } result = messages; } catch (Exception ex) { } return(result); }