Description
Description
Some Steam apps (the one I'm aware of is 1628350 "Steam Linux Runtime - Sniper") have changed their ['apps'][id]['manifests'][branch]
from a plain manifest ID (ASCII decimal string) to a key/value dictionary with members gid
, size
and download
, causing CDNClient.get_manifests
to crash.
Steps to Reproduce the behavior
Run https://gist.github.com/smcv/8430646f3cf5e502711ddf3ea620eaea with --interactive
. You might need a Steam account that has added 1628350 "Steam Linux Runtime - Sniper" to the Steam library - it's free, and is used by Proton 8.0.
Expected behavior
The script can download and display VERSION.txt
from each branch of each of the Steam Linux Runtime depots.
Screenshots
For 1391110 "Steam Linux Runtime - Soldier" my script is still working:
App ID: 1391110 (Steam Linux Runtime - Soldier)
Branch: public
Build ID: 10940185
Updated: 2023-04-26T15:48:12+00:00
Depot: 1391111
Manifest: 5271457197581595980
#Name Version Runtime Runtime_Version Comment
depot 0.20230405.47174 # Overall version number
pressure-vessel 0.20230405.0 scout # pressure-vessel-bin.tar.gz
scripts 0.20230405.0 # from steam-runtime-tools
soldier 0.20230405.47174 soldier 0.20230405.47174 # soldier_platform_0.20230405.47174/
but for 1628350 "Steam Linux Runtime - Sniper" it now crashes:
App ID: 1628350 (Steam Linux Runtime - Sniper)
Branch: public
Build ID: 10940192
Updated: 2023-04-26T15:50:07+00:00
Depot: 1628351
Manifest: {'gid': '820291660013951810', 'size': '703682881', 'download': '188124800'}
Traceback (most recent call last):
File "src/gevent/greenlet.py", line 908, in gevent._gevent_cgreenlet.Greenlet.run
File "REDACTED/python-steam/steam/client/cdn.py", line 785, in async_fetch_manifest
app_id, depot_id, int(manifest_gid), branch_name, branch_pass
^^^^^^^^^^^^^^^^^
TypeError: int() argument must be a string, a bytes-like object or a real number, not 'dict'
2023-05-05T16:09:39Z <Greenlet at 0x7f0665bee200: async_fetch_manifest(1628350, 1628351, {'gid': '820291660013951810', 'size': '703682881',, True, 1628351, branch_name='public', branch_pass=None)> failed with TypeError
Traceback (most recent call last):
File "REDACTED/python-steam/./describe-depots.py", line 204, in <module>
main()
File "REDACTED/python-steam/./describe-depots.py", line 183, in main
Main(**vars(args)).run()
File "REDACTED/python-steam/./describe-depots.py", line 158, in run
for manifest in cdn.get_manifests(
File "REDACTED/python-steam/steam/client/cdn.py", line 857, in get_manifests
result = task.get()
File "src/gevent/greenlet.py", line 831, in gevent._gevent_cgreenlet.Greenlet.get
File "src/gevent/greenlet.py", line 373, in gevent._gevent_cgreenlet.Greenlet._raise_exception
File "/usr/lib/python3/dist-packages/gevent/_compat.py", line 66, in reraise
raise value.with_traceback(tb)
File "src/gevent/greenlet.py", line 908, in gevent._gevent_cgreenlet.Greenlet.run
File "REDACTED/python-steam/steam/client/cdn.py", line 785, in async_fetch_manifest
app_id, depot_id, int(manifest_gid), branch_name, branch_pass
TypeError: int() argument must be a string, a bytes-like object or a real number, not 'dict'
Versions Report
python -m steam.versions_report
(Run python -m steam.versions_report and paste the output below)steam: 1.4.4
Dependencies:
vdf: 3.4
protobuf: 4.21.12
requests: 2.28.1
cachetools: 5.2.0
gevent: 22.10.2
gevent-eventemitter: Not Installed
pycryptodomex: 3.11.0
enum34: Not Installed
win-inet-pton: Not Installed
Python runtime:
executable: /usr/bin/python3
version: 3.11.2 (main, Mar 13 2023, 12:18:29) [GCC 12.2.0]
platform: linux
System info:
system: Linux
machine: x86_64
release: 6.1.0-7-amd64
version: #1 SMP PREEMPT_DYNAMIC Debian 6.1.20-1 (2023-03-19)