public List <Game> GetLibraryGames(SteamSettings settings) { var userName = string.Empty; if (settings.IdSource == SteamIdSource.Name) { userName = settings.AccountName; } else { userName = settings.AccountId.ToString(); } if (settings.PrivateAccount) { return(GetLibraryGames(userName, settings.APIKey)); } else { return(GetLibraryGames(userName)); } }
public SteamGameMetadata UpdateGameWithMetadata(Game game, SteamSettings settings) { var metadata = DownloadGameMetadata(int.Parse(game.ProviderId), settings.PreferScreenshotForBackground); game.Name = metadata.ProductDetails["common"]["name"].Value ?? game.Name; game.Links = new ObservableCollection <Link>() { new Link("Forum", @"https://steamcommunity.com/app/" + game.ProviderId), new Link("News", @"http://store.steampowered.com/news/?appids=" + game.ProviderId), new Link("Store", @"http://store.steampowered.com/app/" + game.ProviderId), new Link("Wiki", @"http://pcgamingwiki.com/api/appid.php?appid=" + game.ProviderId) }; if (metadata.StoreDetails?.categories?.FirstOrDefault(a => a.id == 30) != null) { game.Links.Add(new Link("Workshop", GetGameWorkshopUrl(int.Parse(game.ProviderId)))); } if (metadata.StoreDetails != null) { game.Description = metadata.StoreDetails.detailed_description; game.Genres = new ComparableList <string>(metadata.StoreDetails.genres?.Select(a => a.description)); game.Developers = new ComparableList <string>(metadata.StoreDetails.developers); game.Publishers = new ComparableList <string>(metadata.StoreDetails.publishers); var cultInfo = new CultureInfo("en-US", false).TextInfo; game.Tags = new ComparableList <string>(metadata.StoreDetails.categories?.Select(a => cultInfo.ToTitleCase(a.description))); game.ReleaseDate = metadata.StoreDetails.release_date.date; game.CriticScore = metadata.StoreDetails.metacritic?.score; } var tasks = new ObservableCollection <GameTask>(); var launchList = metadata.ProductDetails["config"]["launch"].Children; foreach (var task in launchList.Skip(1)) { var properties = task["config"]; if (properties.Name != null) { if (properties["oslist"].Name != null) { if (properties["oslist"].Value != "windows") { continue; } } } // Ignore action without name - shoudn't be visible to end user if (task["description"].Name != null) { var newTask = new GameTask() { Name = task["description"].Value, Arguments = task["arguments"].Value ?? string.Empty, Path = task["executable"].Value, IsBuiltIn = true, WorkingDir = "{InstallDir}" }; tasks.Add(newTask); } } var manual = metadata.ProductDetails["extended"]["gamemanualurl"]; if (manual.Name != null) { tasks.Add((new GameTask() { Name = "Manual", Type = GameTaskType.URL, Path = manual.Value, IsBuiltIn = true })); } game.OtherTasks = tasks; if (!string.IsNullOrEmpty(metadata.BackgroundImage)) { game.BackgroundImage = metadata.BackgroundImage; } return(metadata); }
public SteamMetadataProvider(ServicesClient playniteServices, SteamSettings settings) { this.settings = settings; this.playniteServices = playniteServices; }
public SteamMetadataProvider() { settings = new SteamSettings(); }