Install Steam
login
|
language
简体中文 (Simplified Chinese)
繁體中文 (Traditional Chinese)
日本語 (Japanese)
한국어 (Korean)
ไทย (Thai)
Български (Bulgarian)
Čeština (Czech)
Dansk (Danish)
Deutsch (German)
Español - España (Spanish - Spain)
Español - Latinoamérica (Spanish - Latin America)
Ελληνικά (Greek)
Français (French)
Italiano (Italian)
Bahasa Indonesia (Indonesian)
Magyar (Hungarian)
Nederlands (Dutch)
Norsk (Norwegian)
Polski (Polish)
Português (Portuguese - Portugal)
Português - Brasil (Portuguese - Brazil)
Română (Romanian)
Русский (Russian)
Suomi (Finnish)
Svenska (Swedish)
Türkçe (Turkish)
Tiếng Việt (Vietnamese)
Українська (Ukrainian)
Report a translation problem
or do you mean an entire list of games the user owns?
also could you link to that 7 year old question maybe that will provide better context to as what you want to achieve.
or you can go from web view with list of your games and use javascript or php parser to grab your games
for example js workaround
https://steamcommunity.com/discussions/forum/0/1745643248320082993/
... thanks, for trying to help.
I wanted a readable text version of my custom collection categories - not 'just' a list of my owned games. Which - as you wrote - is rather easy to get.
I dug a bit more into the Steam client folder and files and really could not find the 'collection' categories saved client-side (also checking the compiled/binary files).
With almost 3000 games in my library - and having done the footwork to sort them manually, in the client - I was hoping to view them as a list, sorted, in my categories, without having to be on a Steam Desktop Client installed PC.
I have my games listed into categories reflecting the installed size on drive. Something the Steam client only allows as a filter for installed games. Putting the games into collection-categories allows to view them by install-size, without having them installed):
List of Games below 100MB
List of Games below 500MB
List of Games below 1GB
etc
etc
Viewing the list of owned games without having to load the client or be on a 'Gaming PC' was my goal. Steam Mobile also does not have this 'functionality', of course.
I guess, I have to come up with something that is preferably not just taking 100+ screenshots of the opened Steam client library.
The problem: It is binary and not trivial to parse. If you're into coding, there are some projects at Github which give an idea, but for me it was too much hassle.
I ended up writing a Powershell script to convert the game list at https://steamcommunity.com/id/[username]/games?xml=1 to JSON.
No idea if it's what you're looking for, but feel free to use it. Make sure the profileUrl variable is your own. Delete the XML file when you buy new games because it will always use the downloaded copy if it exists. I only selected the appID, name, hoursLast2Weeks and hoursOnRecord datapoints to transfer from XML to JSON but you can add others if you want.
copy/paste this into a file with a ps1 extension. Eg. games2json.ps1
If anyone on the forum reposts this in the future, I'd appreciate a linkback. Not just because it's nice to credit other users but because I might modify this message with improvements.
Appreciate your contribution.
This is exactly the file, I myself looked into.
Yet, it does not store any user-created 'Collection' information, which is the 'key' attribute, I was looking for.
So far, as I can figure out, the 'Collections' created by Steam users are only saved server-side, within each users ID server storage space.
I did not look into local temp files. At some point, I had to give up.
It appears that when you assign games to collections or favourites, they are recorded very minimally locally in this file:
C:\Program Files (x86)\Steam\userdata\[Your SteamID3]\7\remote\sharedconfig.vdf
Inside the structure is like;
So you could iterate through that file with a script, building lists of appids assigned to collections:
Eg.
"TEST COLLECTION"="1286680,860950"
"TEST COLLECTION#2"="860950"
But then you would have to pull data associated with the appids from the website or with the API in order to build your JSON.
What a hassle. I wish Valve would stop using proprietary formats for this stuff and store useful data locally in a more sane and readable way.
Sorry, I only just saw your reply. The few I tried seem problematic in one way or another. Many don't go deep enough and I've yet to find one that will parse appinfo.vdf. I'm going to try porting Valve's php parser to Typescript and Powershell, because it seems to be the best of the lot.
https://store.steampowered.com/account/remotestorageapp/?appid=7
Just out of curiosity I might try to download it programmatically to see if the API works as I think ( -> steammessages_cloud.steamclient.proto; service Cloud, rpc call ClientFileDownload), but that's likely outside the scope of a simple web thingy that you're probably trying to do.
ETA: Sorry, I misspoke. It looks like the client side is behind the server side and not even synced after every client restart. I'd have expected it be stored on client first then uploaded. Weird. 😵💫
Yes, except that there was also a requirement
and you never know how current the local files are.
Regardless, since my curiosity was triggered, I just tried it. I have successfully downloaded the file from the Steam cloud, so now I know I can do it (and I'll probably just make an "experimental" subfolder to keep the code...). However, my personal know-how is limited to "clients", so I can follow the Steam protocol on that:
...
[2024-03-04 15:01:05.779909]: deserialized protobuf message CCloud_ClientFileDownload_Response from 465 bytes: {"appid":7,"file_size":1416,"raw_file_size":1416,"sha_file":"...","time_stamp":"1708218110","url_host":"steamcloud-dub.s3.dualstack.eu-west-1.amazonaws.com","url_path":"...","use_https":true,"request_headers":[{"name":"Host","value":"steamcloud-dub.s3.dualstack.eu-west-1.amazonaws.com"}],"encrypted":false}
...
[2024-03-04 15:01:09.814328]: HTTPClient: "GET" query for "https://steamcloud-dub.s3.dualstack.eu-west-1.amazonaws.com/..." has received a 1416 byte response with code "OK"
I don't know whether an API exists that just works off an API key. Apparently, the thread starter has looked for one, and didn't find one. Of course, I don't know whether he was looking for an API to access game collections, or an API to do cloud downloads...
Also, the "Download file" on the Steam page points back to Steam, while the API above provides a preauthenticated Amazon S3 link. So I'm guessing the webpage uses a different path, which may or may not be easier to follow for people that are more web-centric than I am. However, I suspect that this path still requires valid session cookies, aka a properly authenticated web session -- which, incidentally, I can only get from a client login; I also don't know how to do a web-login...
just by suggesting to download the file to me is something that shouldn't have been posted to begin with as all that did was take away focus from a good solution already provided.
https://gist.github.com/Gesugao-san/464ff0864c2d49e4cc9c7aebeb1ac795