-
Notifications
You must be signed in to change notification settings - Fork 15
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
SteamDir::apps()
not returning complete list of apps
#6
Comments
Can you share:
I bought the game to try and repro and didn't run into any issues. Note: I didn't test on windows, but it should work fine there too.
[package]
name = "repro"
version = "0.1.0"
edition = "2021"
[dependencies]
steamlocate = "1.0.1"
fn main() {
let mut steam_dir = steamlocate::SteamDir::locate().unwrap();
println!("{:#?}", steam_dir.app(&348550).unwrap());
} Anonymized output:
|
I'm running Windows 10 right now, and I'm using steamlocate My relevant code is this, which is essentially a copy-paste of your example above: fn main() {
let mut steam_dir = SteamDir::locate().unwrap();
println!("{:#?}", steam_dir.app(&348550).unwrap());
} the above code yields |
would you like the contents of the appmanifest? It seems that this issue occurs with many titles in my library, but not the entirety of the library, just a very large portion. That makes me think it may be an issue with the appmanifest contents themselves |
The two main relevant files will be "libraryfolders"
{
"contentstatsid" "-123123123123"
"0"
{
"path" "/path/to/steam_home/Steam"
...
"apps"
{
...
"348550" "2253444850"
...
}
}
"1"
{
"path" "/path/to/second/lib"
...
"apps"
{
...
}
}
} So you can see I have two libraries and we see the entry for the game you mention in the first along with its size in bytes, and then there is also the manifest "AppState"
{
"appid" "348550"
...
"name" "GUILTY GEAR XX ACCENT CORE PLUS R"
...
} I believe that |
My |
If you want to post them in full and scramble any seemingly personal ids you can. You can also email me a copy of both of them if you don't feel comfortable posting them publicly, and I can dig in more (email is on my github profile). Vdf is not well defined and the parser we use for the table is known to be problematic, so it could be that parser failing |
I sent libraryfolders.vdf over through email, hoping that contains the thing triggering out possible parser bug |
At a glance though, I didnt notice anything different from other VDF file examples, it seems to conform to the format. Maybe some of the whitespace characters are causing a problem |
Thanks for sending that over! I received it and there doesn't seem to be anything abnormal about it (and testing it out indicates that it picks up the paths to the libraries just fine. From what you said before where it was only picking up some of your games it sounds like the issue is parsing some specific app manifests, so the likely problematic file would be the app manifests for any apps that should show up and don't Just to give some context this library currently uses 2 different VDF parsers. The one that was originally used for everything and is known to be problematic, Even something simple like having the string That's a lot of history to say that likely the issue is with the app manifest parsing, and that at least the problem wasn't my parser 😄. If you want you can send me your app manifest file and I can check to see if it fails parsing with |
I sent over an app manifest, hopefully thats where the issue is |
Thanks for working with me on all of this. I know it can be hard to keep up with issues that require a lot of back and forth :) It's a VDF parse error from the empty string issue I mentioned above 🎉! The good news is that it parses fine with "AppState"
{
// ...
"UserConfig"
{
// ...
"betakey" "" // <-- empty string here fails parsing with `steamy-vdf`
}
} Let me know if you want a workaround of some sorts. It's worth noting that putting a value in the empty string, or removing the line that has the empty string causes |
Nice! Glad the issue was found, I hopefully will be able to contribute to moving parsing over to |
This should be fixed in the |
I tried using this crate to try and find a specific game (Guilty Gear XX Accent Core +R) with the ID 348550 and could not find it in the list returned by
apps()
orapp(&384550)
, I looked in the steam library folder and theappmanifest_384550.acf
is there and appears valid. I skimmed the code in this repository and couldn't seem to find any obvious bugs. Is there a possible solution?The text was updated successfully, but these errors were encountered: