Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Retrieve a list of installed games from the Steam API

I'm working on a Steam Roulette program, and I'm trying to create filters. One of the filters I'd like to implement is (if the user data was loaded with SteamWorks), is to return a list of games (preferably in App ID form) that he/she has installed on his computer that I can then compare to my original full list to remove unneeded values; like a filter to get rid of games the user doesn't have installed on his machine from the list of possible games that can be picked.

In case:

Steam Roulette was an online trend, in the form of a web application in which the user picks a random game out of his/her Steam library and plays it.

Right now, I'm retrieving user details using the Web API using the Steam ID retrieved with SteamUser.GetSteamID().ToString() and feeding it into:

string apiURL = "http://api.steampowered.com/IPlayerService/GetOwnedGames/v0001/?key=" + APIKey + "&steamid=" + id + "&format=json&include_appinfo=1";

And reading the returned .json information from there to generate a list of games that the program can pick from.


Is there any SteamWorks function I can use to retrieve a list of games that is installed on the computer, as opposed to all the games that the player owns/has, without reading the steam libraries for their respective folders?

If no possible function exist, is there any way to manually (outside the API) get a list of installed games?

like image 361
Timothy C. Avatar asked Nov 12 '15 00:11

Timothy C.


2 Answers

I was looking into doing this myself. Unfortunately the steam api does not return a value that could reliably tell you if it's installed on your pc. However looking through the folder where your games are installed (mine is "C:\Program Files (x86)\Steam\steamapps\common") I found that each game folder contains a text file with it's steam app id. So you could recursively look in each folder and build a list of IDs first. Then, use the app ID list with the JSON getOwnedGames for the full name and other info.

like image 20
thornzero Avatar answered Oct 01 '22 14:10

thornzero


This file C:\Program Files (x86)\Steam\steamapps\libraryfolders.vdf

Contains the paths to all local steam libraries. (excluding the one in the default library)

Then get just get the value in the steam_appid.txt that's located in each game's folder ({library}\steamapps\common\{game}\steam_appid.txt) and you will have a list of all installed games' steam app id.

Vdf files are valve proprietary files (like JSON). You can use Vdf.NET to parse the vdf files similar to JSON.

like image 172
Mitchell Van Manen Avatar answered Oct 01 '22 14:10

Mitchell Van Manen