Esempio n. 1
0
 public async Task RunGo()
 {
     using (var dbgo = new ksBotSQLContext())
     {
         var users = dbgo.User.Where(x => x.BtagId != null).ToList();
         try
         {
             if (users.Count > 0)
             {
                 //for (var iz = 0; iz < users.Count; iz++)
                 foreach (var n in users)
                 {
                     Console.WriteLine(n.DiscordId + "------" + n.BtagId);
                     System.Threading.Thread.Sleep(ProgHelpers.sleeptimems);
                     await OWstats(n.DiscordId, n.BtagId);
                 }
             }
         }
         catch (Exception ex)
         {
             Console.WriteLine(ex);
             //ex
         }
     }
 }
Esempio n. 2
0
        public async Task OWstats(string i, string st)
        {
            string stnew = "";

            stnew = st.Replace("#", "-");
            string url = ProgHelpers.owapiprovider + stnew + "/stats";

            try
            {
                using (var client = new HttpClient())
                {
                    client.DefaultRequestHeaders.Clear();
                    client.DefaultRequestHeaders.TryAddWithoutValidation("User-Agent", "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:19.0) Gecko/20100101 Firefox/19.0");
                    client.DefaultRequestHeaders.TryAddWithoutValidation("Content-Type", "application/json");

                    try
                    {
                        var responseText = await client.GetStringAsync(url);

                        dynamic data = responseText;
                        JObject o    = JObject.Parse(data);

                        double killavg    = 0;
                        double healavg    = 0;
                        double deathavg   = 0;
                        double winrate    = 0;
                        double timeplayed = 0;
                        string avatarurl  = "";

                        //06.08.2017 OWAPI Workaround, Blizzard removed average kills deaths and healing, but totals are visible, so...
                        double gamesPlayed  = 0;
                        double placehKills  = 0;
                        double placehDeaths = 0;
                        double placehHeal   = 0;

                        int sr = 0;

                        //06.08.2017 OWAPI Workaround
                        if (o.SelectToken("eu.stats.competitive.game_stats.games_played") != null)
                        {
                            gamesPlayed = (double)o.SelectToken("eu.stats.competitive.game_stats.games_played");

                            if (o.SelectToken("eu.stats.competitive.game_stats.eliminations") != null)
                            {
                                placehKills = (double)o.SelectToken("eu.stats.competitive.game_stats.eliminations");
                                killavg     = Math.Round(placehKills / gamesPlayed, 1);
                            }
                            if (o.SelectToken("eu.stats.competitive.game_stats.deaths") != null)
                            {
                                placehDeaths = (double)o.SelectToken("eu.stats.competitive.game_stats.deaths");
                                deathavg     = Math.Round(placehDeaths / gamesPlayed, 1);
                            }
                            if (o.SelectToken("eu.stats.competitive.game_stats.healing_done") != null)
                            {
                                placehHeal = (double)o.SelectToken("eu.stats.competitive.game_stats.healing_done");
                                healavg    = Math.Round(placehHeal / gamesPlayed, 1);
                            }
                        }


                        //if (o.SelectToken("eu.stats.competitive.average_stats.eliminations_avg") != null)
                        //{
                        //    killavg = (double)o.SelectToken("eu.stats.competitive.average_stats.eliminations_avg");
                        //}
                        //if (o.SelectToken("eu.stats.competitive.average_stats.healing_done_avg") != null)
                        //{
                        //    healavg = (double)o.SelectToken("eu.stats.competitive.average_stats.healing_done_avg");
                        //}
                        //if (o.SelectToken("eu.stats.competitive.average_stats.deaths_avg") != null)
                        //{
                        //    deathavg = (double)o.SelectToken("eu.stats.competitive.average_stats.deaths_avg");
                        //}

                        if (o.SelectToken("eu.stats.competitive.overall_stats.comprank") != null)
                        {
                            sr = (int)o.SelectToken("eu.stats.competitive.overall_stats.comprank");
                        }
                        if (o.SelectToken("eu.stats.competitive.overall_stats.win_rate") != null)
                        {
                            winrate = (double)o.SelectToken("eu.stats.competitive.overall_stats.win_rate");
                        }
                        if (o.SelectToken("eu.stats.competitive.overall_stats.avatar") != null)
                        {
                            avatarurl = (string)o.SelectToken("eu.stats.competitive.overall_stats.avatar");
                        }
                        if (o.SelectToken("eu.stats.competitive.game_stats.time_played") != null)
                        {
                            timeplayed = (double)o.SelectToken("eu.stats.competitive.game_stats.time_played");
                        }


                        using (var db = new ksBotSQLContext())
                        {
                            var result = db.User.SingleOrDefault(b => b.DiscordId == i);
                            if (result != null)
                            {
                                //result.Apihero1 = hero1;
                                //result.Apihero2 = hero2;
                                //result.Apihero3 = hero3;
                                result.ApicurrentSr  = sr;
                                result.ApikillAvg    = killavg;
                                result.ApideathAvg   = deathavg;
                                result.ApihealAvg    = healavg;
                                result.ApiavatarUrl  = avatarurl;
                                result.ApiwinRate    = winrate;
                                result.ApitimePlayed = timeplayed;

                                await db.SaveChangesAsync();

                                Console.WriteLine("OWAPI-UPDATE OK");
                                return;
                            }
                        }
                    }
                    catch (Exception)
                    {
                        Console.WriteLine("OWAPI 404 EX");
                    }
                }
            }
            catch (Exception)
            {
                Console.WriteLine("OWAPI-UPDATE -- EX");
                //return null;
            }
        }