public static async Task GetTransmImgAsync(LoadItem li) { string getimg = "https://xn--80aa2azak.xn--p1aadc.xn--p1ai/rtrs/ajax/broadcast?type=digital&id="; //HtmlAgilityPack.HtmlDocument HD = new HtmlAgilityPack.HtmlDocument(); //var web = new HtmlWeb //{ // AutoDetectEncoding = false, // OverrideEncoding = Encoding.UTF8 //}; //CancellationTokenSource cts = new CancellationTokenSource(5000); //WebProxy proxy = new WebProxy("proxyname", 8080); //proxy.Credentials = CredentialCache.DefaultCredentials; WebClient client = new WebClient(); client.Proxy = null; client.UseDefaultCredentials = true; string baseHtml = ""; var t = client.DownloadDataTaskAsync(getimg + li.id_trans1); try { if (await Task.WhenAny(t, Task.Delay(5000)) == t) { if (t.Exception != null) { if (t.Exception.InnerExceptions.Count <= 1) { if (t.Exception.InnerException.Message.Contains("404")) { li.er_string = "Мульт не найден"; } } } else { byte[] pageContent = t.Result; UTF8Encoding utf = new UTF8Encoding(); baseHtml = utf.GetString(pageContent); li.er_string = string.Empty; } } else { li.er_string = "Время ожидания истекло"; } } catch (Exception ex) { System.Windows.Forms.MessageBox.Show($"Загрузка завершена с ошибкой\n {ex.Message}", "Ошибка"); return; } li.map_trans1 = JsonConvert.DeserializeObject <mapobj>(baseHtml); t.Dispose(); client.Dispose(); //try //{ // //HD = await web.LoadFromWebAsync(getimg + li.id_trans1,new NetworkCredential()., cts.Token); // HD = await web.LoadFromWebAsync(getimg + li.id_trans1, cts.Token); //} //catch (Exception ex) //{ // if (cts.IsCancellationRequested) // { // li.er_string = "Время ожидания истекло"; // return; // } // if (HD.DocumentNode.InnerHtml.Contains("404")) // { // li.er_string = "Узел не найден"; // return; // } // System.Windows.Forms.MessageBox.Show($"Загрузка завершена с ошибкой {ex.Message}","Ошибка"); // return; //} //li.er_string = "Построение изображения"; //li.map_trans1 = JsonConvert.DeserializeObject<mapobj>(HD.DocumentNode.InnerText); //using (var wb = new WebClient()) //{ // var response = wb.DownloadString(getimg + li.id_trans1); // li.map_trans1 = JsonConvert.DeserializeObject<mapobj>(response); //} //if (li.id_trans2 != 0) //{ // using (var wb = new WebClient()) // { // var response = wb.DownloadString(getimg + li.id_trans2); // li.map_trans2 = JsonConvert.DeserializeObject<mapobj>(response); // } //} }
public static async Task <LoadItem> GetTransmitterAsync(int id) { string q = $"https://xn--80aa2azak.xn--p1aadc.xn--p1ai/rtrs/ajax/digital?multiplex=1&node={id.ToString()}"; // LoadItem li = new LoadItem(); string html = q; HtmlAgilityPack.HtmlDocument HD = new HtmlAgilityPack.HtmlDocument(); var web = new HtmlWeb { AutoDetectEncoding = false, OverrideEncoding = Encoding.UTF8, }; CancellationTokenSource cts = new CancellationTokenSource(5000); HD = await web.LoadFromWebAsync(html, cts.Token); if (cts.IsCancellationRequested) { li.er_string = "Время ожидания истекло"; return(li); } if (HD.DocumentNode.InnerHtml.Contains("error")) { li.er_string = "Узел не найден"; return(li); } var qqwe = HD.DocumentNode.Descendants("label"); //2 или 1 в зависимости от количества плексов int count = 0; foreach (var itemq in qqwe) { count++; var t = itemq.Descendants("input"); var ttt = t.Where(qqq => qqq.Attributes.Contains("data-transmitter-id")).ToList(); string helpers = string.Empty; if (ttt.Count > 0) { helpers = t.Select(x => x.Attributes["data-transmitter-id"].Value).SingleOrDefault(); } else { count = 999; } int buf = 0; if (count == 1) { int.TryParse(helpers, out buf); li.id_trans1 = buf; } else if (count == 2) { int.TryParse(helpers, out buf); li.id_trans2 = buf; } var span = itemq.Descendants("span"); var hz = span.Where(has => has.InnerText.Contains("ТВК")).ToList(); if (hz.Count > 0) { var hz_select = hz.Select(x => x.InnerText).SingleOrDefault(); if (count == 1) { li.web_tvk_1plx = hz_select; } else if (count == 2) { li.web_tvk_2plx = hz_select; } } } if (HD.DocumentNode.Descendants("h4").Any()) { var span_h = HD.DocumentNode.Descendants("h4").SingleOrDefault().InnerText; li.web_fili = span_h; var span_sp = HD.DocumentNode.Descendants("span"); if (span_sp.Count() > 0) { li.web_place = span_sp.First().InnerText; } } return(li); }
public ComboboxItem(LoadItem li, string text) { Value = li; Text = text; }