private void ParseCurrentLives() { WebClient wb = new WebClient(); wb.Encoding = Encoding.UTF8; var respone = wb.DownloadString($"{url}/su/live/popular"); var parser = new HtmlParser(); var doc = parser.Parse(respone); var mainContainer = doc.GetElementById("container_AVAILABLE"); foreach (IElement child in mainContainer.Children) { if (child.ChildElementCount < 2) { continue; } foreach (IElement liga in child.Children[1].Children) { if (liga.ChildElementCount == 0) { continue; } if (liga.Children[1].ChildElementCount == 0) { continue; } foreach (IElement ev in liga.Children[1].Children) { string[] teams; SiteRow rw = new SiteRow(); rw.Site = ParserType.Marafon; try { rw.Sport = child.Children[0].TextContent.Trim(); rw.Groupe = liga.Children[0].TextContent.Trim(); rw.Match = ev.Children[2].TextContent.Replace(" @ ", " - ").Trim(); teams = rw.Match.Replace(" - ", "|").Split('|'); if (teams.Length != 2) { continue; } rw.TeamName = teams[0]; } catch { continue; } _rezult.Add(rw); var rw1 = rw.Clone(); rw1.TeamName = teams[1]; _rezult.Add(rw1); } } } }
public static void SendMessage(SiteRow row) { try { MailMessage mail = new MailMessage(); mail.From = new System.Net.Mail.MailAddress("*****@*****.**"); // The important part -- configuring the SMTP client SmtpClient smtp = new SmtpClient(); smtp.Port = 587; smtp.EnableSsl = true; smtp.DeliveryMethod = SmtpDeliveryMethod.Network; smtp.UseDefaultCredentials = false; smtp.Credentials = new NetworkCredential(mail.From.Address, "comapare92"); smtp.Host = "smtp.outlook.com"; //recipient address mail.To.Add(new MailAddress(row.Email)); //Formatted mail body mail.IsBodyHtml = true; string st = CompareStringDiffPlex.Compare(row.PreHTML, row.PostHTML); mail.Body = st; smtp.Send(mail); } catch (Exception ex) { Console.WriteLine("Exception caught in CreateTestMessage2(): {0}", ex.ToString()); } }
internal static void LottoDs_addRow(SiteRow row) { if (_DSSiteData.Site.FindByUrl(row.Url) == null) { _DSSiteData.Site.AddSiteRow(row); DsSiteSave(); DsSiteLoad(); } }
static public void FromInputSiteToRow(SiteInputMapping elem, ref SiteRow row) { row.Url = elem.Url; row.Email = elem.Email; row.Ore = elem.Ore; row.Tag = elem.Tag; row.Active = (byte)(elem.Active ? 1 : 0); row.State = false; }
//gestione job private static void AddSchedule(SiteRow row) { var r = new Registry(); _ = r.Schedule(async() => await InteractiveDB.AddUpdateSiteAsync(row) ).WithName(row.Url) .ToRunNow() #if DEBUG .AndEvery(5) .Minutes();
public SiteMapping(SiteRow tablotto) { Url = tablotto.Url; State = tablotto.IsStateNull() ? false : tablotto.State; PreHtml = tablotto.IsPreHTMLNull() ? "" : tablotto.PreHTML; PostHTML = tablotto.IsPostHTMLNull() ? "" : tablotto.PostHTML; Email = tablotto.IsEmailNull() ? "*****@*****.**" : tablotto.Email; Ore = tablotto.Ore; Tag = tablotto.IsTagNull() ? "" : tablotto.Tag; Active = tablotto.IsActiveNull() ? false : tablotto.Active == 1; }
//Site internal static SiteRow DsSiteData_newRow(SiteInputMapping elem) { SiteRow rows = _DSSiteData.Site.FindByUrl(elem.Url); if (rows != null) { return(rows); } rows = DsSiteData_newRow(); FromInputSiteToRow(elem, ref rows); return(rows); } //Site
} //Site internal static SiteRow DsSiteData_newRow(string Url) { SiteRow rows = _DSSiteData.Site.FindByUrl(Url); if (rows != null) { return(rows); } else { return(DsSiteData_newRow()); } }
private List <SiteRow> ParsePage(string link, string Groupe) { List <SiteRow> rezult = new List <SiteRow>(); WebClient wb = new WebClient(); wb.Encoding = Encoding.UTF8; var respone = wb.DownloadString("https://olimp.com/" + link); HtmlDocument doc = new HtmlDocument(); doc.LoadHtml(respone); var trs = doc.DocumentNode.SelectNodes("//tr[@class=\"hi\"]"); if (trs == null) { //если нету в этой части ставок return(new List <SiteRow>()); } foreach (var tr in trs) { if (tr.ChildNodes[3].Attributes["width"] == null) { continue; } SiteRow sr = new SiteRow(); sr.TimeStart = DateTime.Parse(tr.ChildNodes[1].InnerText); sr.Groupe = Groupe; sr.Site = Shared.Enums.ParserType.Olimp; string[] teams = tr.ChildNodes[3].InnerText.Trim().Replace(" - ", "|").Split('|'); if (teams.Length != 2) { continue; } sr.TeamName = teams[0].Trim(); rezult.Add(sr); var sr1 = sr.Clone(); sr1.TeamName = teams[1].Trim(); rezult.Add(sr1); } return(rezult); }
public static bool AddSite(SiteInputMapping elem) { try { SiteRow row = DbManagement.DsSiteData_newRow(elem); DbManagement.LottoDs_addRow(row); DbManagement.SiteAllRow(); return(true); } catch (Exception EX) { throw EX; } }
private void ImportData() { if (!File.Exists("bd.data")) { return; } List <UnicData> db = UnicData.Load("bd.data"); List <UnicData> rezultList = new List <UnicData>(); List <string> filesData = new List <string>() { "Fonbet.data", "Marafon.data", "Olimp.data", "Zenit.data" }; foreach (string fileName in filesData) { List <SiteRow> data = SiteRow.Load(fileName); foreach (SiteRow siteRow in data) { UnicData rez = FindData(siteRow.TeamName, db); if (rez != null) { var team2 = siteRow.Match.Replace(siteRow.TeamName, "").Replace(" - ", "").Trim(); UnicData rez2 = FindData(siteRow.TeamName, db); if (rez2 != null) { rezultList.Add(rez); } } } } rezultList = rezultList.OrderBy(x => x.Id).ToList(); rezultList = ToUnic(rezultList); UnicData.Save("bd_Import.data", rezultList); Loger.Add($"База для импорта готова. В ней {rezultList.Count} записей"); }
private void LoadData() { try { FonbetData = SiteRow.Load("Fonbet.data"); OlimpData = SiteRow.Load("Olimp.data"); MarafonData = SiteRow.Load("Marafon.data"); ZenitData = SiteRow.Load("Zenit.data"); PariMatchData = SiteRow.Load("PariMatch.data"); Base = new ObservableCollection <UnicData>(UnicData.Load("bd.data").OrderBy(x => x.Id)); } catch { Base = new ObservableCollection <UnicData>(); } Base.CollectionChanged += Base_CollectionChanged; if (Base.Count != 0) { foreach (UnicData key in Base) { foreach (SiteRow t in FonbetData) { if (t.TeamName == key.Value) { t.IsUsed = true; } } foreach (SiteRow t in OlimpData) { if (t.TeamName == key.Value) { t.IsUsed = true; } } foreach (SiteRow t in MarafonData) { if (t.TeamName == key.Value) { t.IsUsed = true; } } foreach (SiteRow t in ZenitData) { if (t.TeamName == key.Value) { t.IsUsed = true; } } foreach (SiteRow t in PariMatchData) { if (t.TeamName == key.Value) { t.IsUsed = true; } } } } Fonbet = new ObservableCollection <SiteRow>(FonbetData.OrderBy(x => x.Sport).ThenBy(x => x.TimeStart)); Olimp = new ObservableCollection <SiteRow>(OlimpData.OrderBy(x => x.Sport).ThenBy(x => x.TimeStart)); Marafon = new ObservableCollection <SiteRow>(MarafonData.OrderBy(x => x.Sport).ThenBy(x => x.TimeStart)); Zenit = new ObservableCollection <SiteRow>(ZenitData.OrderBy(x => x.Sport).ThenBy(x => x.TimeStart)); PariMatch = new ObservableCollection <SiteRow>(PariMatchData.OrderBy(x => x.Sport).ThenBy(x => x.TimeStart)); }
public SiteRowChangeEvent(SiteRow row, global::System.Data.DataRowAction action) { this.eventRow = row; this.eventAction = action; }
public List <SiteRow> ParseAnonsLive() { var rezult = new List <SiteRow>(); WebClient wb = new WebClient(); wb.Encoding = Encoding.UTF8; var respone = wb.DownloadString($"{url}/betting"); HtmlDocument doc = new HtmlDocument(); doc.LoadHtml(respone); var rows = doc.DocumentNode.SelectNodes("//tr").Where(x => x.Id != null && x.Id.Contains("t") && x.Id.ToString().Count() <= 4).ToList(); foreach (var row in rows) { int i = 3; var x = row.ChildNodes[1].ChildNodes.Count; if (x != 5) { i = 5; } var rw = new SiteRow(); rw.Site = Shared.Enums.ParserType.Olimp; rw.Sport = row.ChildNodes[1].ChildNodes[3].InnerText.Split('.').First().Trim(); var teams = row.ChildNodes[1].ChildNodes[3].InnerText.Replace(rw.Sport + ". ", "").Replace(" - ", "|").Split('|'); rw.TimeStart = DateTime.Parse(row.ChildNodes[1].ChildNodes[8].ChildNodes[0].InnerText.Replace("Начало ", "").Trim()); rw.TeamName = teams[0]; rw.Groupe = ""; rw.Match = $"{rw.TeamName} - {teams[1]}"; rezult.Add(rw); var rw1 = rw.Clone(); rw1.TeamName = teams[1]; rezult.Add(rw1); } //Получаем Live var uri = new Uri(url).Host; respone = wb.DownloadString($"http://olimpapi.cc/api/v3/app_api_index.php?action=slice&live=1&time_shift=0&lang_id=0&platforma=site-api&_=0"); var json = JObject.Parse(respone); if (json["data"] != null) { foreach (JToken token in json["data"]) { if (token["cn"].ToString().Contains("Статистика")) { continue; } foreach (JToken ev in token["it"]) { var rw = new SiteRow(); rw.Site = Shared.Enums.ParserType.Olimp; rw.Sport = token["sn"].ToString(); rw.Groupe = ""; rw.TeamName = ev["c1"].ToString(); rw.Match = ev["n"].ToString(); rw.TimeStart = UnixTimeStampToDateTime(Convert.ToDouble(ev["t"])).AddHours(3); rezult.Add(rw); var rw1 = rw.Clone(); rw1.TeamName = ev["c2"].ToString(); rezult.Add(rw1); } } } return(rezult); }
public static async Task <bool> AddUpdateSiteAsync(SiteRow row) { try { // return true; if (row.Active == 0) { return(false); } if (String.IsNullOrEmpty(row.Url)) { return(false); } if (row.Url.ToLower().CompareTo(@"https://acpol2.army.mil/vacancy/vacancy_list.asp") == 0) { Console.WriteLine("CARICO " + row.Url); var ris = await SendRequestAsync(row.Url, "POST", new Dictionary <string, string> { { "FormAction2", "2" } }); if (row.IsPreHTMLNull() || row.PreHTML == String.Empty) { row.PreHTML = ElaboraCampDearby(ris); } else { row.PostHTML = row.PreHTML; row.PreHTML = ElaboraCampDearby(ris); } row.State = (row.PostHTML == row.PreHTML || row.PostHTML != string.Empty); } else { Console.WriteLine("CARICO " + row.Url); var ris = await SendRequestAsync(row.Url, "GET", new Dictionary <string, string> { { "FormAction2", "2" } }); if (row.IsPreHTMLNull() || row.PreHTML == String.Empty) { row.PreHTML = ElaboraByTag(ris, row.Tag); } else { row.PostHTML = row.PreHTML; row.PreHTML = ElaboraByTag(ris, row.Tag); if (row.PostHTML != row.PreHTML) { //send mail Mail.SendMessage(row); } } } DsSiteSave(); return(true); } catch (Exception EX) { Console.WriteLine(EX.ToString()); return(false); } }
public List <SiteRow> ParseAnonsLive() { var rezultList = new List <SiteRow>(); WebClient wb = new WebClient(); wb.Encoding = Encoding.GetEncoding(1251); var response = wb.DownloadString($"{_url}/live.html"); var parser = new HtmlParser(); IHtmlDocument document = parser.Parse(response); var table = document.GetElementById("sheduled"); if (table == null) { throw new ArgumentException("Нет таблицы с прелайвом"); } foreach (var key in table.Children[1].Children[0].Children) { if (key.ClassName.StartsWith("sport")) { var sport = key.Children[0].TextContent; foreach (var item in key.Children[1].Children) { if (string.IsNullOrWhiteSpace(item.Id)) { continue; } var liga = item.PreviousSibling.TextContent; foreach (var ev in item.Children) { var sr = new SiteRow(); sr.Sport = sport; sr.Groupe = liga; sr.Site = Shared.Enums.ParserType.PariMatch; int day = Int32.Parse(ev.Attributes["data-date"].Value); var dt = DateTime.Now; if (dt.Day > day) { dt = dt.AddMonths(1); } sr.TimeStart = DateTime.Parse(day + "/" + dt.Date.Month + "/" + dt.Date.Year + " " + ev.LastElementChild.Children[0].Children[0].TextContent).AddHours(1); sr.Match = ev.LastElementChild.Children[0].Children[1].TextContent; if (sr.Match.Contains("угловые") || sr.Match.Contains("карточки")) { continue; } var teams = sr.Match.Replace(" - ", "|").Split('|'); sr.TeamName = teams[0]; rezultList.Add(sr); var sr1 = sr.Clone(); sr1.TeamName = teams[1]; rezultList.Add(sr1); } } } } return(rezultList); }
public List <SiteRow> ParseAnonsLive() { List <SiteRow> rezult = new List <SiteRow>(); WebClient wb = new WebClient(); wb.Encoding = Encoding.UTF8; var response = wb.DownloadString(url + "/live"); HtmlDocument doc = new HtmlDocument(); doc.LoadHtml(response); var table = doc.DocumentNode.SelectSingleNode("//table[@class=\"live-index-schedule-table\"]"); if (table == null) { throw new ArgumentNullException($"{typeof(Zenit)}: Ошибка получения таблицы с Анонсом."); } var rows = table.FirstChild.ChildNodes.Where(x => x.Name == "tr").ToList(); for (int i = 0; i < rows.Count; i++) { string ligaName = rows[i].InnerText.Trim(); string SportName = ligaName.Split('.').First(); ligaName = ligaName.Replace(SportName + ".", ""); while (true) { if (i == rows.Count - 1) { break; } i++; if (rows[i].Attributes["class"].Value == "live-index-schedule-row") { i--; break; // вываливаемся из while } SiteRow sr = new SiteRow(); sr.Sport = SportName; sr.Groupe = ligaName; sr.Match = rows[i].ChildNodes[3].InnerText; sr.TimeStart = DateTime.Parse(rows[i].ChildNodes[1].InnerText.Replace(" ", "/2017 ")); sr.Site = Shared.Enums.ParserType.Zenit; string[] teams = sr.Match.Replace(" - ", "|").Split('|'); sr.TeamName = teams[0]; rezult.Add(sr); var sr1 = sr.Clone(); sr1.TeamName = teams[1]; rezult.Add(sr1); } } var uri = new Uri(url).Host; response = wb.DownloadString($"https://m.{uri}/mbzenit/ajax/live/livedata?mob-all-live"); var json = JObject.Parse(response); if (json["result"]?["games"] != null) { foreach (JToken jToken in json["result"]["games"]) { SiteRow sr = new SiteRow(); var liga = json["result"]["league"].FirstOrDefault( x => x.First["id"].ToString() == jToken.First["lid"].ToString()); var sport = json["result"]["sport"].FirstOrDefault( x => x.First["id"].ToString() == liga.First["sid"]?.ToString()); sr.Sport = sport.First["name"].ToString().Replace("Он-лайн. ", ""); if (string.IsNullOrWhiteSpace(sr.Sport)) { sr.Sport = "Nan"; } sr.Groupe = liga.First["name"].ToString(); sr.Match = $"{jToken.First["c1"]} - {jToken.First["c2"]}"; sr.TimeStart = UnixTimeStampToDateTime(Convert.ToDouble(jToken.First["time"])).AddHours(3); sr.Site = Shared.Enums.ParserType.Zenit; sr.TeamName = jToken.First["c1"].ToString(); rezult.Add(sr); var sr1 = sr.Clone(); sr1.TeamName = jToken.First["c2"].ToString(); rezult.Add(sr1); } } return(rezult); }
public List <SiteRow> ParseAnonsLive() { string adress = GetApiAdress(); WebClient wb = new GZipWebClient(); wb.Encoding = Encoding.UTF8; var respone = wb.DownloadString($"https:{adress}/line/currentLine/ru/"); var json = JObject.Parse(respone); var rezult = new List <SiteRow>(); var events = json["events"].Where(x => x["level"].ToString() == "1").ToList(); foreach (var ev in events) { if (ev["state"]?["willBeLive"]?.ToString() == "True") { } else { continue; } SiteRow rw = new SiteRow(); rw.Site = ParserType.Fonbet; rw.TeamName = ev["team1"].ToString(); rw.TimeStart = UnixTimeStampToDateTime(SetDouble(ev["startTime"].ToString())).AddHours(3); var sport = json["sports"].Where(x => x["id"].ToString() == ev["sportId"].ToString()).ToList().First(); rw.Groupe = sport["name"].ToString(); rw.Sport = rw.Groupe.Split('.').First().Trim(); rw.Match = $"{rw.TeamName} - {ev["team2"]}"; rezult.Add(rw); var rw2 = rw.Clone(); rw2.TeamName = ev["team2"].ToString(); rezult.Add(rw2); } wb = new GZipWebClient(); respone = wb.DownloadString($"https:{adress}/live/currentLine/ru/"); json = JObject.Parse(respone); events = json["events"].Where(x => x["level"].ToString() == "1").ToList(); foreach (JToken ev in events) { SiteRow rw = new SiteRow(); rw.Site = ParserType.Fonbet; rw.TeamName = ev["team1"].ToString(); rw.TimeStart = UnixTimeStampToDateTime(SetDouble(ev["startTime"].ToString())).AddHours(3); var sport = json["sports"].Where(x => x["id"].ToString() == ev["sportId"].ToString()).ToList().First(); rw.Groupe = sport["name"].ToString(); rw.Sport = rw.Groupe.Split('.').First().Trim(); rw.Match = $"{rw.TeamName} - {ev["team2"]}"; rezult.Add(rw); var rw2 = rw.Clone(); rw2.TeamName = ev["team2"].ToString(); rezult.Add(rw2); } rezult = rezult.OrderBy(x => x.TimeStart).ToList(); return(rezult); }
private List <SiteRow> parsePage(string link) { var rezult = new List <SiteRow>(); WebClient wb = new WebClient(); wb.Encoding = Encoding.UTF8; var respone = wb.DownloadString(link); HtmlDocument doc = new HtmlDocument(); doc.LoadHtml(respone); var name_node = doc.DocumentNode.SelectSingleNode("//a[@class=\"sport-category-label\"]"); var blocks = doc.DocumentNode.SelectNodes("//div[@class=\"category-container\"]").ToList(); foreach (var block in blocks) { string groupe = block.ChildNodes[1].ChildNodes[1].ChildNodes[1].ChildNodes[3].InnerText.Trim(); var teams = block.ChildNodes[3].ChildNodes[3].ChildNodes[1].ChildNodes; foreach (var row in teams) { if (row.Name == "tbody" && row.Attributes["data-event-treeid"] != null) { var current = row.ChildNodes[1].ChildNodes[1].ChildNodes[1].ChildNodes; SiteRow rw = new SiteRow(); rw.Sport = name_node.InnerText.Trim(); rw.Groupe = groupe; rw.Site = Shared.Enums.ParserType.Marafon; var dt = current[1].ChildNodes[3].InnerText.Trim(); if (dt.Contains("ноя")) { dt = dt.Replace(" ноя", ".11.2016"); } else if (dt.Contains("дек")) { dt = dt.Replace(" дек", ".12.2016"); } else if (dt.Contains("янв")) { dt = dt.Replace(" янв ", ".01."); } else if (dt.Contains("фев")) { dt = dt.Replace(" фев ", ".01."); } else { } rw.TimeStart = DateTime.Parse(dt); rw.TeamName = current[1].ChildNodes[1].ChildNodes[1].ChildNodes[3].InnerText.Trim(); rezult.Add(rw); var rw1 = rw.Clone(); rw1.TeamName = current[3].ChildNodes[1].ChildNodes[1].ChildNodes[3].InnerText.Trim(); rezult.Add(rw1); } } } return(rezult); }
public List <SiteRow> ParseAnonsLive(DateTime date) { var rezult = new List <SiteRow>(); WebClient wb = new WebClient(); wb.Encoding = Encoding.UTF8; var uri = $"{url}/su/live/announces?form_name=form&calendar=" + date.ToString("dd.MM.yyyy") + "&announce_sort=BY_TIME&sport_select=ALL&pageAction=default"; var response = wb.DownloadString(uri); var json = JArray.Parse(response); HtmlDocument doc = new HtmlDocument(); if (json.First["content"] == null) { return(new List <SiteRow>()); } doc.LoadHtml(json.First["content"].ToString()); var nodes = doc.DocumentNode.SelectNodes("//tr[@class=\"announce\"]"); foreach (var key in nodes) { var t = key.ChildNodes[1].ChildNodes[1].ChildNodes; var rw = new SiteRow(); var dt = t[1].InnerText.Trim(); if (dt.Contains("ноя")) { dt = dt.Replace(" ноя", ".11.2017 "); } else if (dt.Contains("дек")) { dt = dt.Replace(" дек", ".12.2017 "); } else if (dt.Contains("янв")) { dt = dt.Replace(" янв ", ".01.2017 "); } else if (dt.Contains("фев")) { dt = dt.Replace(" фев ", ".02.2017 "); } else if (dt.Contains("мар")) { dt = dt.Replace(" мар ", ".03.2017 "); } else if (dt.Contains("апр")) { dt = dt.Replace(" апр ", ".04.2017 "); } else if (dt.Contains("май")) { dt = dt.Replace(" май ", ".05.2017 "); } else { } rw.TimeStart = DateTime.Parse(dt); rw.Site = Shared.Enums.ParserType.Marafon; rw.Sport = t[3].InnerText.Split('.').First().Trim(); var teams = t[3].ChildNodes[1].InnerText.Replace(" ", "").Replace(" - ", "|").Split('|'); if (teams.Count() != 2) { teams = t[3].ChildNodes[1].InnerText.Replace(" ", "").Replace(" @ ", "|").Split('|'); } if (teams.Length != 2) { continue; } rw.Groupe = t[3].ChildNodes[0].InnerText.Replace(rw.Sport + ". ", "").Trim(); rw.TeamName = teams[0]; rw.Match = $"{rw.TeamName} - {teams[1]}"; rezult.Add(rw); var rw1 = rw.Clone(); rw1.TeamName = teams[1]; rezult.Add(rw1); } return(rezult); }
private void LoadAsync() { System.Net.ServicePointManager.ServerCertificateValidationCallback = delegate { return(true); }; #if !DEBUG try { #endif Marafon betm = new Marafon(_urls[0]); List <SiteRow> sm = betm.ParseAnonsLive(); DateTime ser = DateTime.UtcNow; if (ser.AddHours(3).Day != ser.Day) { List <SiteRow> s1 = betm.ParseAnonsLive(DateTime.Now.AddDays(-1)); sm.AddRange(s1); } SiteRow.Save("Marafon.data", sm); Loger.Add($"Marafon загружен. количество: {sm.Count}"); #if !DEBUG } catch (Exception ex) { Loger.Add($"При загрузке данных произошла ошибка: {ex.Message}"); } try { #endif Fonbet betf = new Fonbet(_urls[1]); List <SiteRow> sf = betf.ParseAnonsLive(); SiteRow.Save("Fonbet.data", sf); Loger.Add($"Fonbet загружен. количество: {sf.Count}"); #if !DEBUG } catch (Exception ex) { Loger.Add($"При загрузке данных произошла ошибка: {ex.Message}"); } try { #endif Olimp beto = new Olimp(_urls[2]); List <SiteRow> so = beto.ParseAnonsLive(); SiteRow.Save("Olimp.data", so); Loger.Add($"Olimp загружен. количество: {so.Count}"); #if !DEBUG } catch (Exception ex) { Loger.Add($"При загрузке данных произошла ошибка: {ex.Message}"); } #endif try { Zenit bet = new Zenit(_urls[3]); List <SiteRow> s = bet.ParseAnonsLive(); SiteRow.Save("Zenit.data", s); Loger.Add($"Zenit загружен. количество: {s.Count}"); } catch (Exception ex) { Loger.Add($"При загрузке данных произошла ошибка: {ex.Message}"); } try { PariMatch bet = new PariMatch(_urls[4]); List <SiteRow> s = bet.ParseAnonsLive(); SiteRow.Save("PariMatch.data", s); Loger.Add($"PariMatch загружен. количество: {s.Count}"); } catch (Exception ex) { Loger.Add($"При загрузке данных произошла ошибка: {ex.Message}"); } IsLoad = false; }