예제 #1
0
        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));
            }
        }
예제 #2
0
        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();
 }