Add deserialization support for appinfo.vdf V29
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@56b1fec7f5ce6be961c3e44cf9baf117e363ad91
Fixes ValvePython/steam#462
Requires ValvePython/vdf#61
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
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@aa210d8264d4b062f1d81606a285d29bc992e3cb.
@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. :)
@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.