Skip to content
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

Add deserialization support for appinfo.vdf V29 #464

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

Matoking
Copy link

appinfo.vdf V29 was introduced in Steam beta. This new version introduces a space-saving optimization: instead of encoding each key name in the binary VDF segment directly, an int64 identifier is instead used for each key, with a table at the end of the 'appinfo.vdf' file providing the mapping to actual key names.

Also see
SteamDatabase/SteamAppInfo@56b1fec

Fixes #462

Requires ValvePython/vdf#61

@WinterPhoenix
Copy link

I made a fork that incorporates this PR as well as several other pending PRs in this repo. I don't really particularly want to be the new maintainer for this, but if I'm still using it I may as well.

https://github.com/solsticegamestudios/steam

appinfo.vdf V29 was introduced in Steam beta. This new version
introduces a space-saving optimization: instead of encoding each key
name in the binary VDF segment directly, an int64 identifier is instead
used for each key, with a table at the end of the 'appinfo.vdf' file
providing the mapping to actual key names.

Also see
SteamDatabase/SteamAppInfo@56b1fec

Fixes ValvePython#462

Co-authored-by: Eamonn Rea <[email protected]>
@Matoking
Copy link
Author

Matoking commented Aug 3, 2024

Updated the PR to ignore invalid Unicode characters in field names. Many of them can be set by Steam app developers, with Steam either not performing server-side validation or being lenient on what's allowed. A similar fix was done in ValvePython/vdf@aa210d8.

@Matoking
Copy link
Author

Matoking commented Aug 14, 2024

@WinterPhoenix FYI, the forked repositories don't allow submission of issues. I had the same issue when I initially forked Protontricks meaning I had to contact GitHub support to get the repository unlinked from the parent repository and restore the rest of the repo functionality.

Also, I don't know if you want to claim the possibly orphaned projects on PyPI, but there is a process for that. This is probably the main issue for projects like Protontricks as they depend on vdf and/or steam, as well as distro package maintainers who would probably prefer to package the canonical Python package on PyPI instead of relying on manual research to discover what the currently maintained out-of-band fork is.

Anyway, if you want to go that route, I can volunteer to be a co-maintainer for the vdf library. I don't claim to know much about the source code so I might have limited ability to contribute more comprehensive fixes. I think that would still be preferable to the current situation, though. :)

@WinterPhoenix
Copy link

@Matoking I apparently just didn't have Issues enabled on them for some reason. Should be good now.

As for PyPI... I'll request the name transfer at some point. Some stuff like Actions should be fixed up first I think.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[BUG] SyntaxError: Invalid magic, got b')DV\x07'
3 participants