Exemplo n.º 1
0
 public IHtmlDocument Connect(WebClientEx wc, string playersLink)
 {
     ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
     try
     {
         string source = wc.DownloadString(playersLink);
         if (source != null)
         {
             var parser = new HtmlParser();
             return(parser.Parse(source));
         }
         else
         {
             return(null);
         }
     }
     catch (System.Net.WebException e)
     {
         try
         {
             string start    = "https://www.overbuff.com/players/pc/";
             string afterTag = playersLink.Substring(playersLink.IndexOf('%'));
             int    lenName  = playersLink.Length - start.Length - afterTag.Length;
             string name     = playersLink.Substring(start.Length, lenName);
             name        = name[0].ToString().ToUpper() + name.Substring(1);
             playersLink = start + name + afterTag;
             string source = wc.DownloadString(playersLink);
             if (source != null)
             {
                 var parser = new HtmlParser();
                 return(parser.Parse(source));
             }
             else
             {
                 return(null);
             }
         }
         catch (System.Net.WebException ee)
         {
             try
             {
                 string start    = "https://www.overbuff.com/players/pc/";
                 string afterTag = playersLink.Substring(playersLink.IndexOf('%'));
                 int    lenName  = playersLink.Length - start.Length - afterTag.Length;
                 string name     = playersLink.Substring(start.Length, lenName);
                 name        = name.ToUpper();
                 playersLink = start + name + afterTag;
                 string source = wc.DownloadString(playersLink);
                 if (source != null)
                 {
                     var parser = new HtmlParser();
                     return(parser.Parse(source));
                 }
                 else
                 {
                     return(null);
                 }
             }
             catch (Exception eee) { return(null); }
         }
     }
 }
Exemplo n.º 2
0
        public void UpdateMercyAsync()
        {
            OwerParser          pr = new OwerParser();
            WebClientEx         wc = new WebClientEx();
            string              nameNtag;
            Collection <Player> pls = new Collection <Player>();

            using (FileStream fstream = new FileStream("nameNtags.txt", FileMode.Open))
            {
                StreamReader fr = new StreamReader(fstream);
                while (!fr.EndOfStream)
                {
                    nameNtag = fr.ReadLine();
                    string playersLink = "https://www.overbuff.com/players/pc/" + nameNtag.Replace('#', '-') + "?mode=competitive";
                    ///магия после того, как добавил эти две строки рейтинг обновился, но взоможно они ничего и не исправили, нужно тестить еще
                    ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
                    var s = wc.DownloadString(playersLink);
                    ///
                    IHtmlDocument doc    = pr.Connect(wc, playersLink);
                    Player        player = new Player();
                    player.Name    = nameNtag.Substring(0, nameNtag.IndexOf('#'));
                    player.Rate    = pr.GetCompetetiveRate("div.layout-header-secondary dl dd span.color-stat-rating", doc).ToString();
                    player.WinRate = pr.GetWinRate("dl:nth-child(5)", doc).ToString();
                    Dictionary <string, string> dic  = pr.GetHeroRank("div.group.special .stat:nth-child(1) .value span", "div.group.normal div.name a.color-white", doc);
                    Collection <Hero>           hers = new Collection <Hero>();
                    foreach (var itemdic in dic)
                    {
                        Hero her = new Hero();
                        her.Name    = itemdic.Key.ToString();
                        her.WinRate = itemdic.Value;
                        hers.Add(her);
                    }
                    player.Heroes = hers;
                    pls.Add(player);
                }
            }

            var names = pls.Select(c => c.Name).ToArray();
            var rates = pls.Select(c => c.Rate).ToArray();

            for (int i = 0; i < names.Length; i++)
            {
                for (int j = 0; j < names.Length; j++)
                {
                    if (Convert.ToInt32(rates[i]) > Convert.ToInt32(rates[j]))
                    {
                        var a = rates[i];
                        var b = names[i];
                        rates[i] = rates[j];
                        names[i] = names[j];
                        rates[j] = a;
                        names[j] = b;
                    }
                }
            }
            if (dataGridView1.ColumnCount < 1)
            {
                dataGridView1.Columns.Add("Рейтинг", "Рейтинг");
            }

            if (names.Length > dataGridView1.Columns.Count - 1)
            {
                for (int i = 0; i < names.Count(); i++)
                {
                    dataGridView1.Columns.Add(names[i], names[i]);
                    dataGridView1.Rows.Add();
                    dataGridView1.Rows[i].HeaderCell.Value = names[i];
                }
            }
            for (int j = 0; j < rates.Length; j++)
            {
                dataGridView1.Rows[j].Cells[0].Value = rates[j];
            }
            for (int i = 0; i < rates.Length; i++)
            {
                for (int j = 1; j < rates.Length + 1; j++)
                {
                    dataGridView1.Rows[i].Cells[j].Value = Math.Abs(Convert.ToInt32(rates[i]) - Convert.ToInt32(rates[j - 1]));

                    if (Convert.ToInt32(dataGridView1.Rows[i].Cells[j].Value) < 500)
                    {
                        dataGridView1.Rows[i].Cells[j].Style.BackColor = Color.Green;
                    }
                    else
                    {
                        dataGridView1.Rows[i].Cells[j].Style.BackColor = Color.Red;
                    }
                    if (Convert.ToInt32(dataGridView1.Rows[i].Cells[j].Value) == 0)
                    {
                        dataGridView1.Rows[i].Cells[j].Style.BackColor = Color.Black;
                        dataGridView1.Rows[i].Cells[j].Style.ForeColor = Color.Black;
                    }
                }
            }
        }