예제 #1
0
        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);
            //    }
            //}
        }
예제 #2
0
        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);
        }
예제 #3
0
 public ComboboxItem(LoadItem li, string text)
 {
     Value = li;
     Text  = text;
 }