public async Task LoadGames() { Library.Games.Clear(); string profileLink = $"{Url}/badges"; int totalPages = 1; int currentPage = 0; do { currentPage++; string response = await UserWebClient.GetHttp($"{profileLink}?p={currentPage}"); HtmlDocument document = new HtmlDocument(); document.LoadHtml(response); if (!ProcessBadgesOnPage(document)) { break; } if (currentPage != 1) { continue; } HtmlNodeCollection pages = document.DocumentNode.SelectNodes("//a[@class='pagelink']"); string href = pages?.Last().Attributes["href"]?.Value; string maxPages = href?.Split('=').Last(); int.TryParse(maxPages, out totalPages); }while (currentPage < totalPages); }
public async Task CheckIdlingStatus(GameStatus gameStatus) { if (!IsIdling) { return; } foreach (Game game in Games.Where(x => x.Status == gameStatus)) { HtmlDocument document = new HtmlDocument(); string response = await UserWebClient.GetHttp($"{UserSettings.ProfileUrl}/gamecards/{game.AppId}"); document.LoadHtml(response); HtmlNode cardsNode = document.DocumentNode.SelectSingleNode(".//span[@class='progress_info_bold']"); string cards = cardsNode?.InnerText.Split(' ').First(); HtmlNode playtimeNode = document.DocumentNode.SelectSingleNode(".//div[@class='badge_title_stats_playtime']"); string playtime = WebUtility.HtmlDecode(playtimeNode?.InnerText).Trim().Split(' ').First(); int.TryParse(cards, out int remainingCards); double.TryParse(playtime, NumberStyles.Any, new NumberFormatInfo(), out double hoursPlayed); game.UpdateStats(remainingCards, hoursPlayed); if (!game.HasDrops) { game.StopIdling(); game.Status = GameStatus.Finished; continue; } if (game.Status == GameStatus.FastIdling && game.FastIdleTries > 0) { game.FastIdleTries--; if (game.FastIdleTries == 0 && game.RemainingCards == game.OriginalRemainingCards) { game.Status = GameStatus.NormalIdling; } } } if (Games.All(x => x.Status == GameStatus.Stopped || x.Status == GameStatus.Finished)) { IsIdling = false; IsPaused = false; } }