internal List <LinkData> GetLives() { var rezult = new List <LinkData>(); if (_req == null) { _req = new HttpRequest(); _req.CharacterSet = Encoding.UTF8; _req.UserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.59 Safari/537.36 OPR/41.0.2353.46"; //if (UsingProxy) // _req.Proxy = ProxyClient.Parse(ProxySingleManager.GetProxy()); } string respone = _req.Get($"{_url}/su/live/popular").ToString(); var pr = new HtmlParser(); var doc = pr.Parse(respone); var lives = doc.QuerySelectorAll("div.event-info"); foreach (IElement element in lives) { var id = element.Attributes["data-event-treeid"].Value; var linkdata = new LinkData(); linkdata.Id = id; try { linkdata.Teams = element.Children[2].TextContent.Replace(" @ ", " - "); linkdata.Score = element.Children[element.ChildElementCount - 2].FirstElementChild.TextContent; if (element.Children[element.ChildElementCount - 2].ChildElementCount == 2) { linkdata.TimeData = element.Children[element.ChildElementCount - 2].LastElementChild.TextContent; } } catch (Exception e) { continue; } rezult.Add(linkdata); } if (_bd == null) { _bd = new UnicDataDecorator(UnicData.Load("bd.data")); UnicDataDecorator.UpdateBase += UnicDataDecorator_UpdateBase; } var dt = new List <LinkData>(); foreach (LinkData linkData in rezult) { var teams = linkData.Teams.Replace(" - ", "|").Split('|'); if (teams.Length != 2) { continue; } linkData.Team1Id = _bd.GetNumber(teams[0]); if (linkData.Team1Id == -1) { continue; } linkData.Team2Id = _bd.GetNumber(teams[1]); if (linkData.Team2Id == -1) { dt.Add(linkData); } } Logger.AddLog($"Всего lives: {rezult.Count}. Из них отобранно {dt.Count}", Logger.LogTarget.Marafon); return(dt); }
private void UpdateLink(FonbetResponse data) { #if DEBUG //Делаем замер, за сколько наша линия перестраиваеться Stopwatch sw = new Stopwatch(); sw.Start(); #endif bool changed = false; //Дописываем новый вид спорта foreach (var sport in data.Sports) { _line.Sports[sport.Id] = sport; } //добавляем новые события foreach (var dataEvent in data.Events) { if (dataEvent.Place == "live") { if (!_line.Events.ContainsKey(dataEvent.Id)) { dataEvent.Factors = new Dictionary <int, CustomFactor>(); if (dataEvent.Level == 1) { dataEvent.Team1Id = _bd.GetNumber(dataEvent.Team1); dataEvent.Team2Id = _bd.GetNumber(dataEvent.Team2); } _line.Events.Add(dataEvent.Id, dataEvent); changed = true; } } else if (dataEvent.Place == "notActive") { _line.Events.Remove(dataEvent.Id); changed = true; } else { } } //Обновляем доп информацию о событиях foreach (EventMisc eventMisc in data.EventMiscs) { if (!_line.Events.ContainsKey(eventMisc.Id)) { Console.WriteLine($"Нет такого id {eventMisc.Id} для eventMisc"); continue; } _line.Events[eventMisc.Id].EventMisc = eventMisc; changed = true; } //Добавляем/обновляем новые ставкви foreach (CustomFactor factor in data.CustomFactors) { if (!_line.Events.ContainsKey(factor.E)) { Console.WriteLine($"Нет такого id {factor.E} для Factora"); continue; } var ev = _line.Events[factor.E]; if (factor.V == 0 && ev.Factors.ContainsKey(factor.F)) { ev.Factors.Remove(factor.F); changed = true; } else { if (factor.V != 0) { ev.Factors[factor.F] = factor; changed = true; } } } //Блокируем/разблокируем события foreach (var block in data.EventBlocks) { if (!_line.Events.ContainsKey(block.EventId)) { Console.WriteLine($"Странно. нет такого события: {block.EventId}"); continue; } if (block.State == "unblocked") { _line.Events[block.EventId].IsBlock = false; foreach (var customFactor in _line.Events[block.EventId].Factors) { customFactor.Value.IsBlocked = false; } changed = true; } else if (block.State == "blocked") { _line.Events[block.EventId].IsBlock = true; #if DEBUG Console.WriteLine($"Событие №{block.EventId} было заблокированно. {_line.Events[block.EventId].Team1}-{_line.Events[block.EventId].Team2}"); #endif var bl = _line.Events[block.EventId].Factors; foreach (var factor in bl) { factor.Value.IsBlocked = true; } changed = true; } else if (block.State == "partial") { foreach (var blockFactor in block.Factors) { if (_line.Events[block.EventId].Factors.ContainsKey(blockFactor)) { #if DEBUG Console.WriteLine($"Ставка №{blockFactor} было заблокированна. {_line.Events[block.EventId].Team1}-{_line.Events[block.EventId].Team2}"); #endif _line.Events[block.EventId].Factors[blockFactor].IsBlocked = true; } else { Console.WriteLine($" в {block.EventId} нет такого фактора {blockFactor}. Не могу заблокировать"); } } changed = true; } else { } } IsChanged = changed; #if DEBUG sw.Stop(); Console.WriteLine($"Линия была обновленна за {sw.Elapsed}"); System.Threading.Thread.Sleep(1000); #endif }