Exemple #1
0
        public async Task <bool> CanCardDrops()
        {
            try
            {
                var document = new HtmlDocument();
                var response = await CookieClient.GetHttpAsync(Settings.Default.myProfileURL + "/gamecards/" + StringId);

                // Response should be empty. User should be unauthorised.
                if (string.IsNullOrEmpty(response))
                {
                    return(false);
                }

                document.LoadHtml(response);

                var hoursNode = document.DocumentNode.SelectSingleNode("//div[@class=\"badge_title_stats_playtime\"]");
                var hours     = Regex.Match(hoursNode.InnerText, @"[0-9\.,]+").Value;

                var cardNode = hoursNode.ParentNode.SelectSingleNode(".//span[@class=\"progress_info_bold\"]");
                var cards    = cardNode == null ? string.Empty : Regex.Match(cardNode.InnerText, @"[0-9]+").Value;

                UpdateStats(cards, hours);
                return(RemainingCard != 0);
            }
            catch (Exception ex)
            {
                Logger.Exception(ex, "Badge -> CanCardDrops, for id = " + AppId);
            }

            return(false);
        }
Exemple #2
0
        public async Task <bool> CanCardDrops()
        {
            try
            {
                var document = new HtmlDocument();
                var response = await CookieClient.GetHttpAsync(Settings.Default.myProfileURL + "/gamecards/" + StringId);

                document.LoadHtml(response);

                var hoursNode = document.DocumentNode.SelectSingleNode("//div[@class=\"badge_title_stats\"]").ChildNodes["br"].PreviousSibling;
                var hours     = Regex.Match(hoursNode.InnerText, @"[0-9\.,]+").Value;

                var cardNode = hoursNode.ParentNode.SelectSingleNode(".//span[@class=\"progress_info_bold\"]");
                var cards    = cardNode == null ? string.Empty : Regex.Match(cardNode.InnerText, @"[0-9]+").Value;

                RemainingCard = string.IsNullOrWhiteSpace(cards) ? 0 : int.Parse(cards);
                HoursPlayed   = string.IsNullOrWhiteSpace(hours) ? 0 : double.Parse(hours, new NumberFormatInfo());

                return(RemainingCard != 0);
            }
            catch (Exception ex)
            {
                Logger.Exception(ex, "Badge -> CanCardDrops, for id = " + AppId);
            }
            return(false);
        }
        private async Task <string> GetAppNameByID(int AppID)
        {
            //Try get Name from Cached INI
            StringBuilder temp = new StringBuilder(1000);

            GetPrivateProfileString("SteamAppCachedName", AppID.ToString(), "", temp, 1000, "./SteamAppCached.ini");
            string CachedName = temp.ToString();

            if (CachedName != "")
            {
                return(CachedName);
            }
            //If this AppID has not been cached.
            TargetAwait++;
            this.pictureBox1.Visible = true;
            var DocStr = await CookieClient.GetHttpAsync("https://store.steampowered.com/api/appdetails?appids=" + AppID.ToString() + "&filters=basic", 3, true);

            CurAwait++;
            if (TargetAwait <= CurAwait)
            {
                this.pictureBox1.Visible = false;
            }
            JObject MainJson = JsonConvert.DeserializeObject <JObject>(DocStr);
            JObject jb       = MainJson.GetValue(AppID.ToString()).ToObject <JObject>();

            if (jb.GetValue("success").ToObject <bool>() == true)
            {
                string AppName = jb.GetValue("data").ToObject <JObject>().GetValue("name").ToString();
                WritePrivateProfileString("SteamAppCachedName", AppID.ToString(), AppName, "./SteamAppCached.ini");
                return(AppName);
            }
            else
            {
                TargetAwait++;
                this.pictureBox1.Visible = true;
                DocStr = await CookieClient.GetHttpAsync("https://store.steampowered.com/api/appdetails?appids=" + AppID.ToString() + "&cc=us&filters=basic", 3, true);

                CurAwait++;
                if (TargetAwait <= CurAwait)
                {
                    this.pictureBox1.Visible = false;
                }
                JObject MainJson2 = JsonConvert.DeserializeObject <JObject>(DocStr);
                JObject jb2       = MainJson2.GetValue(AppID.ToString()).ToObject <JObject>();
                if (jb2.GetValue("success").ToObject <bool>() == true)
                {
                    string AppName = jb2.GetValue("data").ToObject <JObject>().GetValue("name").ToString();
                    WritePrivateProfileString("SteamAppCachedName", AppID.ToString(), AppName, "./SteamAppCached.ini");
                    return(AppName);
                }
                else
                {
                    return("无效ID:" + AppID.ToString() + ",游戏可能锁区,请右键自行输入名称");
                }
            }
        }
Exemple #4
0
        public async Task LoadBadgesAsync()
        {
            // Settings.Default.myProfileURL = http://steamcommunity.com/id/USER
            var profileLink = Settings.Default.myProfileURL + "/badges";
            var pages       = new List <string>()
            {
                "?p=1"
            };
            var document   = new HtmlDocument();
            int pagesCount = 1;

            try
            {
                // Load Page 1 and check how many pages there are
                var pageURL  = string.Format("{0}/?p={1}", profileLink, 1);
                var response = await CookieClient.GetHttpAsync(pageURL);

                // Response should be empty. User should be unauthorised.
                if (string.IsNullOrEmpty(response))
                {
                    RetryCount++;
                    if (RetryCount == 18)
                    {
                        ResetClientStatus();
                        return;
                    }
                    throw new Exception("");
                }
                document.LoadHtml(response);

                // If user is authenticated, check page count. If user is not authenticated, pages are different.
                var pageNodes = document.DocumentNode.SelectNodes("//a[@class=\"pagelink\"]");
                if (pageNodes != null)
                {
                    pages.AddRange(pageNodes.Select(p => p.Attributes["href"].Value).Distinct());
                    pages = pages.Distinct().ToList();
                }

                string lastpage = pages.Last().ToString().Replace("?p=", "");
                pagesCount = Convert.ToInt32(lastpage);

                // Get all badges from current page
                ProcessBadgesOnPage(document);

                // Load other pages
                for (var i = 2; i <= pagesCount; i++)
                {
                    lblDrops.Text = string.Format(localization.strings.reading_badge_page + " {0}/{1}, " + localization.strings.please_wait, i, pagesCount);

                    // Load Page 2+
                    pageURL  = string.Format("{0}/?p={1}", profileLink, i);
                    response = await CookieClient.GetHttpAsync(pageURL);

                    // Response should be empty. User should be unauthorised.
                    if (string.IsNullOrEmpty(response))
                    {
                        RetryCount++;
                        if (RetryCount == 18)
                        {
                            ResetClientStatus();
                            return;
                        }
                        throw new Exception("");
                    }
                    document.LoadHtml(response);

                    // Get all badges from current page
                    ProcessBadgesOnPage(document);
                }
            }
            catch (Exception ex)
            {
                Logger.Exception(ex, "Badge -> LoadBadgesAsync, for profile = " + Settings.Default.myProfileURL);
                // badge page didn't load
                picReadingPage.Image = null;
                picIdleStatus.Image  = null;
                lblDrops.Text        = localization.strings.badge_didnt_load.Replace("__num__", "10");
                lblIdle.Text         = "";

                // Set the form height
                var graphics = CreateGraphics();
                var scale    = graphics.DpiY * 1.625;
                Height           = Convert.ToInt32(scale);
                ssFooter.Visible = false;

                ReloadCount            = 1;
                tmrBadgeReload.Enabled = true;
                return;
            }

            RetryCount = 0;
            SortBadges(Settings.Default.sort);

            picReadingPage.Visible = false;
            UpdateStateInfo();

            if (CardsRemaining == 0)
            {
                IdleComplete();
            }
        }
Exemple #5
0
        public async Task LoadBadgesAsync()
        {
            // Settings.Default.myProfileURL = http://steamcommunity.com/id/USER
            var profileLink = Settings.Default.myProfileURL + "/badges";
            var document    = new HtmlDocument();
            int pagesCount  = 1;

            try
            {
                // Load Page 1 and check how many pages there are
                var pageURL  = string.Format("{0}/?p={1}", profileLink, 1);
                var response = await CookieClient.GetHttpAsync(pageURL);

                // Response should be empty. User should be unauthorised.
                if (string.IsNullOrEmpty(response))
                {
                    ResetClientStatus();
                    return;
                }
                document.LoadHtml(response);

                // If user is authenticated, check page count. If user is not authenticated, pages are different.
                var pageNodes = document.DocumentNode.SelectNodes("//a[@class=\"pagelink\"]");
                if (pageNodes != null)
                {
                    pagesCount = pageNodes.Count;
                }

                // Get all badges from current page
                ProcessBadgesOnPage(document);

                // Load other pages
                for (var i = 2; i <= pagesCount; i++)
                {
                    lblDrops.Text = string.Format("Reading badge page {0}/{1}, please wait...", i, pagesCount);

                    // Load Page 2+
                    pageURL  = string.Format("{0}/?p={1}", profileLink, i);
                    response = await CookieClient.GetHttpAsync(pageURL);

                    // Response should be empty. User should be unauthorised.
                    if (string.IsNullOrEmpty(response))
                    {
                        ResetClientStatus();
                        return;
                    }
                    document.LoadHtml(response);

                    // Get all badges from current page
                    ProcessBadgesOnPage(document);
                }
            }
            catch (Exception ex)
            {
                Logger.Exception(ex, "Badge -> LoadBadgesAsync, for profile = " + Settings.Default.myProfileURL);
                // badge page didn't load
                picReadingPage.Image   = null;
                lblDrops.Text          = "Badge page didn't load, will retry in 10 seconds";
                ReloadCount            = 10;
                tmrBadgeReload.Enabled = true;
                return;
            }

            SortBadges(Settings.Default.sort);

            picReadingPage.Visible = false;
            UpdateStateInfo();

            if (CardsRemaining == 0)
            {
                IdleComplete();
            }
        }
        public async Task LoadBadgesAsync()
        {
            // Settings.Default.myProfileURL = http://steamcommunity.com/id/USER
            var profileLink = Settings.Default.myProfileURL + "/badges";
            var pages       = new List <string>()
            {
                "?p=1"
            };
            var document   = new HtmlDocument();
            int pagesCount = 1;

            try
            {
                // Load Page 1 and check how many pages there are
                var pageURL  = string.Format("{0}/?p={1}", profileLink, 1);
                var response = await CookieClient.GetHttpAsync(pageURL);

                // Response should be empty. User should be unauthorised.
                if (string.IsNullOrEmpty(response))
                {
                    RetryCount++;
                    if (RetryCount == 18)
                    {
                        return;
                    }
                    throw new Exception("");
                }
                document.LoadHtml(response);

                // If user is authenticated, check page count. If user is not authenticated, pages are different.
                var pageNodes = document.DocumentNode.SelectNodes("//a[@class=\"pagelink\"]");
                if (pageNodes != null)
                {
                    pages.AddRange(pageNodes.Select(p => p.Attributes["href"].Value).Distinct());
                    pages = pages.Distinct().ToList();
                }

                string lastpage = pages.Last().ToString().Replace("?p=", "");
                pagesCount = Convert.ToInt32(lastpage);

                // Get all badges from current page
                ProcessBadgesOnPage(document);

                // Load other pages
                for (var i = 2; i <= pagesCount; i++)
                {
                    // Load Page 2+
                    pageURL  = string.Format("{0}/?p={1}", profileLink, i);
                    response = await CookieClient.GetHttpAsync(pageURL);

                    // Response should be empty. User should be unauthorised.
                    if (string.IsNullOrEmpty(response))
                    {
                        RetryCount++;
                        if (RetryCount == 18)
                        {
                            return;
                        }
                        throw new Exception("");
                    }
                    document.LoadHtml(response);

                    // Get all badges from current page
                    ProcessBadgesOnPage(document);
                }
            }
            catch (Exception ex)
            {
                Logger.Exception(ex, "Game -> LoadBadgesAsync, for profile = " + Settings.Default.myProfileURL);
                // badge page didn't load

                // Set the form height
                var graphics = CreateGraphics();
                var scale    = graphics.DpiY * 1.625;
                Height = Convert.ToInt32(scale);

                ReloadCount = 1;
                return;
            }

            RetryCount = 0;
            //UpdateStateInfo();
        }
Exemple #7
0
        public async Task LoadBadgesAsync()
        {
            var profileLink = Settings.Default.myProfileURL + "/badges";
            var document    = new HtmlDocument();
            var pages       = new List <string>()
            {
                "?p=1"
            };

            try
            {
                for (var i = 0; i < pages.Count; i++)
                {
                    var response = await CookieClient.GetHttpAsync(profileLink + pages[i]);

                    document.LoadHtml(response);

                    var pageNodes = document.DocumentNode.SelectNodes("//a[@class=\"pagelink\"]");
                    if (pageNodes != null)
                    {
                        pages.AddRange(pageNodes.Select(p => p.Attributes["href"].Value).Distinct());
                        pages = pages.Distinct().ToList();
                    }

                    foreach (var badge in document.DocumentNode.SelectNodes("//div[@class=\"badge_row is_link\"]"))
                    {
                        var appIdNode = badge.SelectSingleNode(".//a[@class=\"badge_row_overlay\"]").Attributes["href"].Value;
                        var appid     = Regex.Match(appIdNode, @"gamecards/(\d+)/").Groups[1].Value;

                        if (string.IsNullOrWhiteSpace(appid) || Settings.Default.blacklist.Contains(appid) || appid == "368020" || appid == "335590")
                        {
                            continue;
                        }

                        var hoursNode = badge.SelectSingleNode(".//div[@class=\"badge_title_stats_playtime\"]");
                        var hours     = hoursNode == null ? string.Empty : Regex.Match(hoursNode.InnerText, @"[0-9\.,]+").Value;

                        var nameNode = badge.SelectSingleNode(".//div[@class=\"badge_title\"]");
                        var name     = WebUtility.HtmlDecode(nameNode.FirstChild.InnerText).Trim();

                        var cardNode = badge.SelectSingleNode(".//span[@class=\"progress_info_bold\"]");
                        var cards    = cardNode == null ? string.Empty : Regex.Match(cardNode.InnerText, @"[0-9]+").Value;

                        var badgeInMemory = AllBadges.FirstOrDefault(b => b.StringId == appid);
                        if (badgeInMemory != null)
                        {
                            badgeInMemory.UpdateStats(cards, hours);
                        }
                        else
                        {
                            AllBadges.Add(new Badge(appid, name, cards, hours));
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Exception(ex, "Badge -> LoadBadgesAsync, for profile = " + Settings.Default.myProfileURL);
                // badge page didn't load
                picReadingPage.Image   = null;
                lblDrops.Text          = "Badge page didn't load, will retry in 10 seconds";
                ReloadCount            = 10;
                tmrBadgeReload.Enabled = true;
                return;
            }

            SortBadges(Settings.Default.sort);

            picReadingPage.Visible = false;
            UpdateStateInfo();

            if (CardsRemaining == 0)
            {
                IdleComplete();
            }
        }