valvepython / steamctl Goto Github PK
View Code? Open in Web Editor NEW🤸 Take control of Steam from your terminal
Home Page: https://pypi.org/project/steamctl/
License: MIT License
🤸 Take control of Steam from your terminal
Home Page: https://pypi.org/project/steamctl/
License: MIT License
steamctl webapi call ..... | head -1
Traceback (most recent call last):
File "/steamctl-python/e3/bin/steamctl", line 11, in <module>
load_entry_point('steamctl', 'console_scripts', 'steamctl')()
File "/steamctl-python/steamctl/__main__.py", line 44, in main
rcode = cmd_func(args=args)
File "/steamctl-python/steamctl/commands/webapi/cmds.py", line 144, in cmd_webapi_call
json.dump(json.loads(resp), sys.stdout, indent=4, sort_keys=True)
File "/usr/lib/python3.6/json/__init__.py", line 180, in dump
fp.write(chunk)
BrokenPipeError: [Errno 32] Broken pipe
Exception ignored in: <_io.TextIOWrapper name='<stdout>' mode='w' encoding='UTF-8'>
BrokenPipeError: [Errno 32] Broken pipe
Is the "apps licenses" command in the README Command list not available?
$ steamctl apps licenses
usage: steamctl apps [-h] <subcommand> ...
steamctl apps: error: argument <subcommand>: invalid choice: 'licenses' (choose from 'list', 'product_info', 'item_def')
Description
The webapi call SetAppBuildLive is producing 405 GET errors.
Steps to Reproduce the behavior
Run steamctl webapi call ISteamApps.SetAppBuildLive appid=%APPID% buildid=%BUILDID% betakey=public key=%WEBAPIKEY%
Expected behavior
Expected the ability to move around builds.
What actually happend
Series of 405 errors stating that no POST requests were made -- only GET.
Logs
[DEBUG] steamctl: Parsed args: {'versions_report': None, 'log_level': 'debug', 'anonymous': False, 'user': None, 'command': 'webapi', '_cmd_func': 'steamctl.commands.webapi.cmds:cmd_webapi_call', 'subcommand': 'call', 'apikey': None, 'format': 'json', 'method': None, 'version': None, 'endpoint': 'ISteamApps.SetAppBuildLive', 'params': [['appid', '%APPID%'], ['buildid', '%BUILDID%'], ['betakey', '%BRANCHID%']]}
[DEBUG] steamctl.utils.storage: Opening file (r): C:\Users\<username>\AppData\Local\steamctl\steamctl\apikey.txt
[DEBUG] urllib3.connectionpool: Starting new HTTPS connection (1): api.steampowered.com:443
[DEBUG] urllib3.connectionpool: https://api.steampowered.com:443 "GET /ISteamApps/SetAppBuildLive/v1/?appid=%APPID%&buildid=%BUILDID%&betakey=%BRANCHID%&key=%WEBAPIKEY%&format=json HTTP/1.1" 405 147
[ERROR] steamctl.commands.webapi.cmds: ISteamApps.SetAppBuildLive failed: 405 Client Error: Method Not Allowed for url: https://api.steampowered.com/ISteamApps/SetAppBuildLive/v1/?appid=%APPID%&buildid=%BUILDID%&betakey=&%BRANCHID%&key=%WEBAPIKEY%&format=json
Versions Report
steamctl: 0.9.3
Dependencies:
steam: 1.3.0
appdirs: 1.4.4
argcomplete: 2.0.0
tqdm: 4.64.0
arrow: 1.2.2
pyqrcode: 1.2.1
beautifulsoup4: 4.11.1
vpk: 1.4.0
vdf: 3.4
gevent-eventemitter: 2.1
gevent: 21.12.0
greenlet: 1.1.2
pyyaml: Not Installed
pycryptodomex: 3.15.0
protobuf: 3.20.1
Python runtime:
executable: C:\Users\<username>\AppData\Local\Programs\Python\Python310\python.exe
version: 3.10.6 (tags/v3.10.6:9c7b4bd, Aug 1 2022, 21:53:49) [MSC v.1932 64 bit (AMD64)]
platform: win32
System info:
system: Windows
machine: AMD64
release: 10
version: 10.0.19044
Happens every time i try to use any option when logged in
C:\Users\switchuwu>steamctl -l debug depot info --app 730
[DEBUG] steamctl: Parsed args: {'versions_report': None, 'log_level': 'debug', 'anonymous': False, 'user': None, 'command': 'depot', '_cmd_func': 'steamctl.commands.depot.gcmds:cmd_depot_info', 'subcommand': 'info', 'cell_id': None, 'os': 'any', 'file': None, 'app': 730, 'depot': None, 'manifest': None, 'branch': 'public', 'password': None, 'skip_depot': None, 'skip_login': False, 'skip_licenses': False}
[DEBUG] SteamClient: Reading CM servers from 'C:\Users\switchuwu\AppData\Local\steamctl\steamctl\client\cm_servers.json'
[DEBUG] CMServerList: Added 80 new CM addresses.
[DEBUG] steamctl.utils.storage: Opening file (r): C:\Users\switchuwu\AppData\Local\steamctl\steamctl\cs_servers.json
[DEBUG] CachingCDNClient: No steam licenses found on SteamClient instance
[DEBUG] steamctl.utils.storage: Opening file (r): C:\Users\switchuwu\AppData\Local\steamctl\steamctl\client\lastuser
[INFO] SteamClient: Reusing previous username:
[INFO] SteamClient: Hint: use 'steamctl --user ...' to change
[DEBUG] steamctl.utils.storage: Opening file (r): C:\Users\switchuwu\AppData\Local\steamctl\steamctl\client\lastuser
[INFO] SteamClient: Attempting login with remembered credentials
[DEBUG] steamctl.utils.storage: Opening file (r): C:\Users\switchuwu\AppData\Local\steamctl\steamctl\client<Username>.key
[DEBUG] SteamClient: Re-login result is: <EResult.Fail: 2>
[ERROR] steamctl.commands.depot.gcmds: (EResult.Fail) Failed to login: <EResult.Fail: 2>
Hello,
Problem: i am using steamctl in a batch program, in case of errors, so far i only/always got exit code value 1, what means i can not handle errors without parsing language/translation-specific-free-text stderr.
Solution: use different exit codes for every single error type: if the error text would change, change the exit code too. Reading the steamctl code, i saw something already implemented, but not used.
Alternative: parsing the stderr. The problem is, i would have to redirect stderr into stdout and mingle programatically-readable text (json) with only-human-readable-text (language-specific/translatable error text). Handling this needs much more from everybody implementing steamctl in their codes, instead of handling this only in 1 place: in steamctl code.
Thank you!
$ steamctl workshop search 9192939495969
[ERROR] Query failed: 'publishedfiledetails'
Traceback (most recent call last):
File "/home/crsov/.local/bin/steamctl", line 8, in <module>
sys.exit(main())
File "/home/crsov/.local/lib/python3.7/site-packages/steamctl/__main__.py", line 49, in main
rcode = cmd_func(args=args)
File "/home/crsov/.local/lib/python3.7/site-packages/steamctl/commands/authenticator/cmds.py", line 319, in cmd_authenticator_status
status = sa.status()
AttributeError: 'NoneType' object has no attribute 'status'
Os - solus linux
shell - zsh
running with sudo - no
tab compention on? - no it is OFF
installeed via - pip
Steam guard activated - yes
when logging 2fa code is right - yes
does had an incorrect 2fa warn - no
using backup 2fa codes - yes
# steamctl depot info -a 1042420
[INFO] Attempting anonymous login
[INFO] Login to Steam successful
[INFO] Checking licenses
[INFO] Checking change list
[INFO] Getting manifests for 'public' branch
Traceback (most recent call last):
File "/dev/steam-python/e3/bin/steamctl", line 11, in <module>
load_entry_point('steamctl', 'console_scripts', 'steamctl')()
File "/dev/steamctl-python/steamctl/__main__.py", line 50, in main
rcode = cmd_func(args=args)
File "/dev/steamctl-python/steamctl/commands/depot/gcmds.py", line 113, in cmd_depot_info
with init_clients(args) as (s, cdn, manifests):
File "/usr/lib/python3.6/contextlib.py", line 81, in __enter__
return next(self.gen)
File "/dev/steamctl-python/steamctl/commands/depot/gcmds.py", line 91, in init_clients
for manifest in cdn.get_manifests(args.app, filter_func=branch_filter, decrypt=False):
File "/dev/steamctl-python/steam/client/cdn.py", line 676, in get_manifests
depots = self.get_app_depot_info(app_id)
File "/dev/steamctl-python/steamctl/clients.py", line 181, in get_app_depot_info
self.app_depots[app_id] = appinfo['depots']
KeyError: 'depots'
Some context: ValvePython/steam#216
When using $ steamcmd [..] +app_info_print <appid>
the output includes branch information, e.g.
{
"740": {
"common": {
"name": "Counter-Strike Global Offensive - Dedicated Server",
"type": "Tool",
"oslist": "windows,linux",
"gameid": "740"
},
[...]
"depots": {
[...]
"branches": {
"public": {
"buildid": "6185846",
"timeupdated": "1612401231"
},
"1.37.7.7": {
"buildid": "6114110",
"description": "1.37.7.7",
"timeupdated": "1611875026"
},
"1.37.7.8": {
"buildid": "6148700",
"description": "1.37.7.8",
"timeupdated": "1611874917"
},
[...]
}
}
}
}
Is it currently possible to retrieve the buildid
for a specific branch currently using steamctl
?
Currently download_to
blindly downloads the file. Potentially, speed can be improved by verifying existing file content.
Currently every subcommand prompts for login information when needed.
With the growing number of subcommand that is annoying, especially when trying to use steamctl
as part of script
steamctl login
, which will handle all login prompts.steamctl login
to get a working set of credentialssteamctl login
will support environmental variables for ease of use in scriptsSpawned from: SteamRE/DepotDownloader#155
Should probably be handled in the download_to
:
Line 107 in 5c9272d
Description
Trying to get info on some depot doesn't work. No access token available
error. I already reported it to SteamRE/DepotDownloader#349, so if you don't mind, refer to it. I think steamctl has the same reason.
Steps to Reproduce the behavior
steamctl --user *** --password *** depot info -a 1030830 -d 1523211
Expected behavior
Depot info should be shown
What actually happend
No access token available
Logs
[DEBUG] steamctl: Parsed args: {'versions_report': None, 'log_level': 'debug', 'anonymous': False, 'user': '***', 'password': None, 'command': 'depot', '_cmd_func': 'steamctl.commands.depot.gcmds:cmd_depot_info', 'subcommand': 'info', 'cell_id': None, 'os': 'any', 'file': None, 'app': 1030830, 'depot': 1523211, 'manifest': None, 'branch': 'public', 'skip_depot': None, 'skip_login': False, 'skip_licenses': False}
[DEBUG] SteamClient: Reading CM servers from 'C:\\Users\\Madobe\\AppData\\Local\\steamctl\\steamctl\\client\\cm_servers.json'
[DEBUG] CMServerList: Added 80 new CM addresses.
[DEBUG] steamctl.utils.storage: Opening file (r): C:\Users\Madobe\AppData\Local\steamctl\steamctl\cs_servers.json
[DEBUG] CachingCDNClient: Trying to fetch content servers from Steam API
[DEBUG] urllib3.connectionpool: Starting new HTTPS connection (1): api.steampowered.com:443
[DEBUG] urllib3.connectionpool: https://api.steampowered.com:443 "GET /IContentServerDirectoryService/GetServersForSteamPipe/v1/?cell_id=7&max_servers=20&format=json HTTP/1.1" 200 616
[DEBUG] steamctl.utils.storage: Opening file (w): C:\Users\Madobe\AppData\Local\steamctl\steamctl\cs_servers.json
[DEBUG] CachingCDNClient: No steam licenses found on SteamClient instance
[DEBUG] steamctl.utils.storage: Opening file (r): C:\Users\Madobe\AppData\Local\steamctl\steamctl\client\lastuser
[INFO] SteamClient: Attempting login with remembered credentials
[DEBUG] steamctl.utils.storage: Opening file (r): C:\Users\Madobe\AppData\Local\steamctl\steamctl\client\***.key
[DEBUG] SteamClient: Attempting login
[DEBUG] SteamClient: Connect initiated.
[DEBUG] Connection: Attempting connection to ('162.254.192.75', 27018)
[DEBUG] Connection: Connected.
[DEBUG] SteamClient: Emit event: 'connected'
[DEBUG] SteamClient: Incoming: <Msg(<EMsg.ChannelEncryptRequest: 1303> | ChannelEncryptRequest)>
[DEBUG] SteamClient: Emit event: <EMsg.ChannelEncryptRequest: 1303>
[DEBUG] SteamClient: Securing channel
[DEBUG] SteamClient: Outgoing: <Msg(<EMsg.ChannelEncryptResponse: 1304> | ChannelEncryptResponse)>
[DEBUG] SteamClient: Incoming: <Msg(<EMsg.ChannelEncryptResult: 1305> | ChannelEncryptResult)>
[DEBUG] SteamClient: Emit event: <EMsg.ChannelEncryptResult: 1305>
[DEBUG] SteamClient: Channel secured
[DEBUG] SteamClient: Emit event: 'channel_secured'
[DEBUG] SteamClient: Outgoing: <MsgProto(<EMsg.ClientLogon: 5514> | CMsgClientLogon)>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.Multi: 1> | CMsgMulti)>
[DEBUG] SteamClient: Emit event: <EMsg.Multi: 1>
[DEBUG] SteamClient: Multi: Unpacking
[DEBUG] SteamClient: Multi: Decompressing payload (3691 -> 11017)
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientServersAvailable: 5501> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientServersAvailable: 5501>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientServersAvailable: 5501> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientServersAvailable: 5501>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientLogOnResponse: 751> | CMsgClientLogonResponse)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientLogOnResponse: 751>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientAccountInfo: 768> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientAccountInfo: 768>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientAccountInfo: 768> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientAccountInfo: 768>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientEmailAddrInfo: 5456> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientEmailAddrInfo: 5456>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientFriendsList: 767> | CMsgClientFriendsList)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientFriendsList: 767>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPlayerNicknameList: 5587> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPlayerNicknameList: 5587>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientLicenseList: 780> | CMsgClientLicenseList)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientLicenseList: 780>
[DEBUG] SteamClient: Incoming: <Msg(<EMsg.ClientUpdateGuestPassesList: 798> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientUpdateGuestPassesList: 798>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientWalletInfoUpdate: 5528> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientWalletInfoUpdate: 5528>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientGameConnectTokens: 779> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientGameConnectTokens: 779>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientIsLimitedAccount: 5430> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientIsLimitedAccount: 5430>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientCMList: 783> | CMsgClientCMList)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientCMList: 783>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientRequestedClientStats: 5480> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientRequestedClientStats: 5480>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPlayingSessionState: 9600> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPlayingSessionState: 9600>
[DEBUG] SteamClient: Incoming: <Msg(<EMsg.ClientVACBanStatus: 782> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientVACBanStatus: 782>
[DEBUG] SteamClient: Logon completed
[DEBUG] SteamClient: Heartbeat started.
[DEBUG] SteamClient: Emit event: 'logged_on'
[DEBUG] CachingSteamClient.friends: Emit event: 'friend_invite'
[DEBUG] CachingSteamClient.friends: Emit event: 'friend_invite'
[DEBUG] CachingSteamClient.friends: Emit event: 'friend_invite'
[DEBUG] CachingSteamClient.friends: Emit event: 'friend_invite'
[DEBUG] SteamClient: Outgoing: <MsgProto(<EMsg.ClientRequestFriendData: 815> | CMsgClientRequestFriendData)>
[DEBUG] CachingSteamClient.friends: Emit event: 'ready'
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.Multi: 1> | CMsgMulti)>
[DEBUG] SteamClient: Emit event: <EMsg.Multi: 1>
[DEBUG] SteamClient: Multi: Unpacking
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientFriendsGroupsList: 5553> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientFriendsGroupsList: 5553>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.Multi: 1> | CMsgMulti)>
[DEBUG] SteamClient: Emit event: <EMsg.Multi: 1>
[DEBUG] SteamClient: Multi: Unpacking
[DEBUG] SteamClient: Multi: Decompressing payload (498 -> 686)
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Re-login result is: <EResult.OK: 1>
[INFO] steamctl.commands.depot.gcmds: Login to Steam successful
[INFO] steamctl.commands.depot.gcmds: Checking licenses
[DEBUG] SteamClient: Fetching product info
[DEBUG] SteamClient: Outgoing: <MsgProto(<EMsg.ClientPICSAccessTokenRequest: 8905> | CMsgClientPICSAccessTokenRequest)>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.Multi: 1> | CMsgMulti)>
[DEBUG] SteamClient: Emit event: <EMsg.Multi: 1>
[DEBUG] SteamClient: Multi: Unpacking
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientServersAvailable: 5501> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientServersAvailable: 5501>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.Multi: 1> | CMsgMulti)>
[DEBUG] SteamClient: Emit event: <EMsg.Multi: 1>
[DEBUG] SteamClient: Multi: Unpacking
[DEBUG] SteamClient: Multi: Decompressing payload (1270 -> 1436)
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPICSAccessTokenResponse: 8906> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPICSAccessTokenResponse: 8906>
[DEBUG] SteamClient: Emit event: 'job_1'
[DEBUG] SteamClient: Outgoing: <MsgProto(<EMsg.ClientPICSProductInfoRequest: 8903> | CMsgClientPICSProductInfoRequest)>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.Multi: 1> | CMsgMulti)>
[DEBUG] SteamClient: Emit event: <EMsg.Multi: 1>
[DEBUG] SteamClient: Multi: Unpacking
[DEBUG] SteamClient: Multi: Decompressing payload (15307 -> 35942)
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPICSProductInfoResponse: 8904> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPICSProductInfoResponse: 8904>
[DEBUG] SteamClient: Emit event: 'job_2'
[INFO] steamctl.commands.depot.gcmds: Checking change list
[DEBUG] steamctl.utils.storage: Opening file (r): C:\Users\Madobe\AppData\Local\steamctl\steamctl\Cache\last_change_number
[DEBUG] SteamClient: Checking PICS for app changes
[DEBUG] SteamClient: Outgoing: <MsgProto(<EMsg.ClientPICSChangesSinceRequest: 8901> | CMsgClientPICSChangesSinceRequest)>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.Multi: 1> | CMsgMulti)>
[DEBUG] SteamClient: Emit event: <EMsg.Multi: 1>
[DEBUG] SteamClient: Multi: Unpacking
[DEBUG] SteamClient: Multi: Decompressing payload (540 -> 1229)
[DEBUG] SteamClient: Incoming: <Msg(<EMsg.ClientMarketingMessageUpdate2: 5510> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientMarketingMessageUpdate2: 5510>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.Multi: 1> | CMsgMulti)>
[DEBUG] SteamClient: Emit event: <EMsg.Multi: 1>
[DEBUG] SteamClient: Multi: Unpacking
[DEBUG] SteamClient: Multi: Decompressing payload (2821 -> 5258)
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPICSChangesSinceResponse: 8902> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPICSChangesSinceResponse: 8902>
[DEBUG] SteamClient: Emit event: 'job_3'
[DEBUG] steamctl.utils.storage: Opening file (w): C:\Users\Madobe\AppData\Local\steamctl\steamctl\Cache\last_change_number
[DEBUG] SteamClient: Checking for outdated cached appinfo files
[INFO] steamctl.commands.depot.gcmds: Getting manifests for 'public' branch
[DEBUG] SteamClient: Serving appinfo from cache
[DEBUG] steamctl.utils.storage: Opening file (r): C:\Users\Madobe\AppData\Local\steamctl\steamctl\Cache\appinfo\1030830.json
[DEBUG] SteamClient: Fetching product info
[DEBUG] SteamClient: Outgoing: <MsgProto(<EMsg.ClientPICSAccessTokenRequest: 8905> | CMsgClientPICSAccessTokenRequest)>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.Multi: 1> | CMsgMulti)>
[DEBUG] SteamClient: Emit event: <EMsg.Multi: 1>
[DEBUG] SteamClient: Multi: Unpacking
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPICSAccessTokenResponse: 8906> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPICSAccessTokenResponse: 8906>
[DEBUG] SteamClient: Emit event: 'job_4'
[DEBUG] SteamClient: Outgoing: <MsgProto(<EMsg.ClientPICSProductInfoRequest: 8903> | CMsgClientPICSProductInfoRequest)>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.Multi: 1> | CMsgMulti)>
[DEBUG] SteamClient: Emit event: <EMsg.Multi: 1>
[DEBUG] SteamClient: Multi: Unpacking
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPICSProductInfoResponse: 8904> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPICSProductInfoResponse: 8904>
[DEBUG] SteamClient: Emit event: 'job_5'
[ERROR] steamctl.commands.depot.gcmds: (EResult.Fail) No access token available
Versions Report
steamctl: 0.9.5
Dependencies:
steam: 1.4.3
appdirs: 1.4.4
argcomplete: 2.0.0
tqdm: 4.64.0
arrow: 1.2.2
pyqrcode: 1.2.1
beautifulsoup4: 4.11.1
vpk: 1.4.0
vdf: 3.4
gevent-eventemitter: 2.1
gevent: 21.12.0
greenlet: 1.1.2
pyyaml: Not Installed
pycryptodomex: 3.15.0
protobuf: 3.20.1
Python runtime:
executable: C:\Python39\python.exe
version: 3.9.7 (tags/v3.9.7:1016ef3, Aug 30 2021, 20:19:38) [MSC v.1929 64 bit (AMD64)]
platform: win32
System info:
system: Windows
machine: AMD64
release: 8.1
version: 6.3.9600
Should leave copy of the manifest in the download location, then use those, and the contents of the existing file to create a new file updated file. That would result in only downloading the update chunks
Description
After some time, the password is forgotten in the credentials. The password argument created via #56 seems to be ignored when this happens. May be related to the original bug that caused me to ask for the feature.
Steps to Reproduce the behavior
Use the password argument and/or save the credentials and try again after a few weeks.
What actually happend
root@fordy:~# steamctl --user RandomUsername1 --password AwesomePassword2 depot info -a 1056640 -d 1056641
[INFO] Enter credentials for: RandomUsername1
It completely ignored the password flag (but supports it), you can see so when I attempted to use one line instead of two just to be sure.
root@fordy:~# steamctl --user RandomUsername1 -password AwesomePassword2 depot info -a 1056640 -d 1056641
usage: steamctl [-h] [--version] [--versions-report] [-l {quiet,info,debug}] [--anonymous] [--user USER]
[--password PASSWORD]
<command> ...
steamctl: error: argument <command>: invalid choice: 'AwesomePassword2' (choose from 'apps', 'assistant', 'authenticator', 'clear', 'cloud', 'depot', 'hlmaster', 'steamid', 'ugc', 'webapi', 'workshop')
Once I entered the correct password then it worked again, using the remembered credentials every time after.
Logs
Versions Report
steamctl: 0.9.5
Dependencies:
steam: 1.4.3
appdirs: 1.4.4
argcomplete: 2.0.0
tqdm: 4.64.0
arrow: 1.2.2
pyqrcode: 1.2.1
beautifulsoup4: 4.7.1
vpk: 1.4.0
vdf: 3.4
gevent-eventemitter: 2.1
gevent: 21.12.0
greenlet: 1.1.2
pyyaml: Not Installed
pycryptodomex: 3.15.0
protobuf: 3.14.0
Python runtime:
executable: /usr/bin/python3.8
version: 3.8.3 (default, May 14 2020, 22:09:32) [GCC 5.4.0 20160609]
platform: linux
System info:
system: Linux
machine: x86_64
release: 4.19-ovh-xxxx-std-ipv6-64
version: #1273469 SMP Wed Jun 3 08:31:49 UTC 2020
Would be nice to do that. I already have Steam Guard set up and know my shared secret.
At the very least authenticator/<user>.json
can be manually created, provided that you know its format.
Description
I want to export the list of apps to a text file using the Windows console, and there is an UnicodeEncodeError
error.
Steps to Reproduce the behavior
Run:
steamctl apps list > apps_list.txt
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "C:\Users\Wok\.local\bin\steamctl.exe\__main__.py", line 7, in <module>
File "C:\Users\Wok\.local\pipx\venvs\steamctl\Lib\site-packages\steamctl\__main__.py", line 59, in main
rcode = cmd_func(args=args)
^^^^^^^^^^^^^^^^^^^
File "C:\Users\Wok\.local\pipx\venvs\steamctl\Lib\site-packages\steamctl\commands\apps\gcmds.py", line 97, in cmd_apps_list
print(app_id, app_names.get(app_id, 'Unknown App {}'.format(app_id)))
File "C:\Users\Wok\AppData\Local\Programs\Python\Python311\Lib\encodings\cp1252.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
UnicodeEncodeError: 'charmap' codec can't encode character '\u221e' in position 11: character maps to <undefined>
Expected behavior
The software should run without any error, and the text file should contain the lists of appIDs along the app names.
What actually happend
$ head apps_list.txt
5 Dedicated Server
7 Steam Client
8 winui2
10 Counter-Strike
20 Team Fortress Classic
30 Day of Defeat
40 Deathmatch Classic
50 Half-Life: Opposing Force
60 Ricochet
70 Half-Life
$ tail apps_list.txt
208090 Unknown App 208090
208140 ENDLESS▒ Space - Definitive Edition
208157 ENDLESS▒ Space - Amplitude Badge + GAMES2GETHER Points
208286 Train Simulator: Sherman Hill Route Add-On
208540 Dungeon Defenders Lucky Community Costume Pack
208546 Dungeon Denders - Jester Hero
208570 Dishonored: Dunwall City Trials DLC
208575 Dishonored: The Knife of Dunwall
208580 STAR WARS▒ Knights of the Old Republic▒ II: The Sith Lords▒
208610
The error happens for appID=208610 which is Skullgirls ∞Endless Beta∞
. I believe the culprit is the ∞
character.
Logs
[DEBUG] steamctl: Parsed args: {'versions_report': None, 'log_level': 'debug', 'anonymous': False, 'user': None, 'password': None, 'command': 'apps', '_cmd_func': 'steamctl.commands.apps.gcmds:cmd_apps_list', 'subcommand': 'list', 'all': False}
[DEBUG] SteamClient: Reading CM servers from 'C:\\Users\\Wok\\AppData\\Local\\steamctl\\steamctl\\client\\cm_servers.json'
[DEBUG] CMServerList: Added 80 new CM addresses.
[DEBUG] steamctl.utils.storage: Opening file (r): C:\Users\Wok\AppData\Local\steamctl\steamctl\client\lastuser
[INFO] SteamClient: Reusing previous username: XXX
[INFO] SteamClient: Hint: use 'steamctl --user <username> ...' to change
[DEBUG] steamctl.utils.storage: Opening file (r): C:\Users\Wok\AppData\Local\steamctl\steamctl\client\lastuser
[INFO] SteamClient: Attempting login with remembered credentials
[DEBUG] steamctl.utils.storage: Opening file (r): C:\Users\Wok\AppData\Local\steamctl\steamctl\client\XXX.key
[DEBUG] SteamClient: Attempting login
[DEBUG] SteamClient: Connect initiated.
[DEBUG] Connection: Attempting connection to ('162.254.192.75', 27017)
[DEBUG] Connection: Connected.
[DEBUG] SteamClient: Emit event: 'connected'
[DEBUG] SteamClient: Incoming: <Msg(<EMsg.ChannelEncryptRequest: 1303> | ChannelEncryptRequest)>
[DEBUG] SteamClient: Emit event: <EMsg.ChannelEncryptRequest: 1303>
[DEBUG] SteamClient: Securing channel
[DEBUG] SteamClient: Outgoing: <Msg(<EMsg.ChannelEncryptResponse: 1304> | ChannelEncryptResponse)>
[DEBUG] SteamClient: Incoming: <Msg(<EMsg.ChannelEncryptResult: 1305> | ChannelEncryptResult)>
[DEBUG] SteamClient: Emit event: <EMsg.ChannelEncryptResult: 1305>
[DEBUG] SteamClient: Channel secured
[DEBUG] SteamClient: Emit event: 'channel_secured'
[DEBUG] SteamClient: Outgoing: <MsgProto(<EMsg.ClientLogon: 5514> | CMsgClientLogon)>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.Multi: 1> | CMsgMulti)>
[DEBUG] SteamClient: Emit event: <EMsg.Multi: 1>
[DEBUG] SteamClient: Multi: Unpacking
[DEBUG] SteamClient: Multi: Decompressing payload (655 -> 1207)
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientServersAvailable: 5501> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientServersAvailable: 5501>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientServersAvailable: 5501> | not parsed)>
[...]
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.Multi: 1> | CMsgMulti)>
[DEBUG] SteamClient: Emit event: <EMsg.Multi: 1>
[DEBUG] SteamClient: Multi: Unpacking
[DEBUG] SteamClient: Multi: Decompressing payload (20905 -> 68577)
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPICSProductInfoResponse: 8904> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPICSProductInfoResponse: 8904>
[DEBUG] SteamClient: Emit event: 'job_4'
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.Multi: 1> | CMsgMulti)>
[DEBUG] SteamClient: Emit event: <EMsg.Multi: 1>
[DEBUG] SteamClient: Multi: Unpacking
[DEBUG] SteamClient: Multi: Decompressing payload (24145 -> 72215)
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPICSProductInfoResponse: 8904> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPICSProductInfoResponse: 8904>
[DEBUG] SteamClient: Emit event: 'job_4'
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.Multi: 1> | CMsgMulti)>
[DEBUG] SteamClient: Emit event: <EMsg.Multi: 1>
[DEBUG] SteamClient: Multi: Unpacking
[DEBUG] SteamClient: Multi: Decompressing payload (3153 -> 9775)
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPICSProductInfoResponse: 8904> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPICSProductInfoResponse: 8904>
[DEBUG] SteamClient: Emit event: 'job_4'
[DEBUG] Connection: Disconnected.
[DEBUG] SteamClient: Emit event: 'disconnected'
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "C:\Users\Wok\.local\bin\steamctl.exe\__main__.py", line 7, in <module>
File "C:\Users\Wok\.local\pipx\venvs\steamctl\Lib\site-packages\steamctl\__main__.py", line 59, in main
rcode = cmd_func(args=args)
^^^^^^^^^^^^^^^^^^^
File "C:\Users\Wok\.local\pipx\venvs\steamctl\Lib\site-packages\steamctl\commands\apps\gcmds.py", line 97, in cmd_apps_list
print(app_id, app_names.get(app_id, 'Unknown App {}'.format(app_id)))
File "C:\Users\Wok\AppData\Local\Programs\Python\Python311\Lib\encodings\cp1252.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
UnicodeEncodeError: 'charmap' codec can't encode character '\u221e' in position 11: character maps to <undefined>
Versions Report
steamctl: 0.9.5
Dependencies:
steam: 1.4.3
appdirs: 1.4.4
argcomplete: 2.0.0
tqdm: 4.64.1
arrow: 1.2.3
pyqrcode: 1.2.1
beautifulsoup4: 4.11.1
vpk: 1.4.0
vdf: 3.4
gevent-eventemitter: 2.1
gevent: 22.10.2
greenlet: 2.0.1
pyyaml: Not Installed
pycryptodomex: 3.15.0
protobuf: 3.20.3
Python runtime:
executable: C:\Users\Wok\.local\pipx\venvs\steamctl\Scripts\python.exe
version: 3.11.0 (main, Oct 24 2022, 18:26:48) [MSC v.1933 64 bit (AMD64)]
platform: win32
System info:
system: Windows
machine: AMD64
release: 10
version: 10.0.19044
$ steamctl authenticator code x
works
[INFO] Attempting login with remembered credentials
[INFO] Remembered credentials have expired
[INFO] Enter credentials for: x
Password:
Enter 2FA code:
Seems like whenever password is prompted, it does not check whether authenticator data exists.
Is your feature request related to a problem? Please describe.
Hello! I use this program as part of a server script to check for updates to a game - I put in my user password the first time and it loads it fine from then on... but after an uncertain amount of time, it "forgets" the password and requires manually inputting it in again. Is there any way I can enter the password via command line?
Describe the solution you'd like
Being able to enter the password for the account via the command line, like the -user flag.
[INFO] Attempting login with remembered credentials
[INFO] Connecting to Steam...
[INFO] Generating new discovery queue...
Traceback (most recent call last):
File "/home/xxx/.local/bin/steamctl", line 10, in <module>
sys.exit(main())
File "/home/xxx/.local/lib/python3.5/site-packages/steamctl/__main__.py", line 49, in main
rcode = cmd_func(args=args)
File "/home/xxx/.local/lib/python3.5/site-packages/steamctl/commands/assistant/discovery_queue.py", line 67, in cmd_assistant_discovery_queue
if not data.get('queue', None):
AttributeError: 'int' object has no attribute 'get'
Looks like the single threaded nature of the depot download
implementation can limit the download speed. Need to look into multi-thread or multi-process solution in order to saturate fat pipes.
Both apps have committed code to support authotp://steam/...
urls. Once a release is made, update the code to generate QR with the new custom URL by default.
beemdevelopment/Aegis#343
andOTP/andOTP#510
Note: maybe keep the current uri, and put it behind flag as workaround for apps that don't support the non standard steam
type.
This can introduce random delays when generating a code. Downside would be users with unsync clock will get invalid codes. Alternatively, cache the offset for some time
Look into pyInstaller and producing a single exe that could be used by Windows users.
Not sure if possible, but Aegis app support Steam flavor of TOTP. We should be able to generate QR code with uri format as described in https://github.com/google/google-authenticator/wiki/Key-Uri-Format
user-generated-content is slightly different than steampipe hosted workshop files.
EMsg.ClientUFSGetUGCDetails
gets the details with only ugc gid.
I am running Windows 10.
I installed Python 3.8 and Cygwin and steam in python and steamctl in python.
Ultimately I want to create a qrcode to add to my Aegis Autenticator. I have steamguard setup on my phone. I therefore assume that I must add another one using steamctl authenticator add?
Can you please assist? I get the following error when I run the steamctl authenticator add command:
:\Python38\Scripts>steamctl authenticator add --force voodoo_zn
To add an authenticator, first we need to login to Steam
Account name: xxxxxxx
Enter password for 'xxxxxxx':
Enter 2FA code: PJPDM
Login successful. Checking pre-conditions...
Traceback (most recent call last):
File "c:\python38\lib\runpy.py", line 193, in _run_module_as_main
return _run_code(code, main_globals, None,
File "c:\python38\lib\runpy.py", line 86, in _run_code
exec(code, run_globals)
File "C:\Python38\Scripts\steamctl.exe\__main__.py", line 7, in <module>
File "c:\python38\lib\site-packages\steamctl\__main__.py", line 53, in main
rcode = cmd_func(args=args)
File "c:\python38\lib\site-packages\steamctl\commands\authenticator\cmds.py", line 121, in cmd_authenticator_add
sa.add()
File "c:\python38\lib\site-packages\steam\guard.py", line 180, in add
raise SteamAuthenticatorError("Failed to add authenticator. Error: %s" % repr(EResult(resp['status'])))
steam.guard.SteamAuthenticatorError: Failed to add authenticator. Error: <EResult.DuplicateRequest: 29>
`
Trying to get list of depots for a given appid fails:
steamctl -l debug --user <username> depot info -a 220
[DEBUG] steamctl: Parsed args: {'log_level': 'debug', 'anonymous': False, 'user': '<username>', 'command': 'depot', '_cmd_func': 'steamctl.commands.depot.gcmds:cmd_depot_info', 'subcommand': 'info', 'cell_id': None, 'os': 'any', 'file': None, 'app': 220, 'depot': None, 'manifest': None}
[DEBUG] CachingCDNClient: Trying to fetch content servers from Steam API
[DEBUG] urllib3.connectionpool: Starting new HTTPS connection (1): api.steampowered.com:443
[DEBUG] urllib3.connectionpool: https://api.steampowered.com:443 "GET /IContentServerDirectoryService/GetServersForSteamPipe/v1/?cell_id=0&max_servers=20&format=json HTTP/1.1" 200 712
[DEBUG] CachingCDNClient: No steam licenses found on SteamClient instance
[INFO] CMClient: Attempting login as: <username>
Username: <username>
Password:
[DEBUG] CMClient: Attempting login
[DEBUG] CMClient: Connect initiated.
[DEBUG] CMServerList: Attempting bootstrap via WebAPI
[DEBUG] urllib3.connectionpool: Starting new HTTPS connection (1): api.steampowered.com:443
[DEBUG] urllib3.connectionpool: https://api.steampowered.com:443 "GET /ISteamDirectory/GetCMList/v1/?cellid=0&format=json HTTP/1.1" 200 805
[DEBUG] CMServerList: Recieved 100 servers from WebAPI
[DEBUG] CMServerList: Added 100 new CM addresses.
[DEBUG] Connection: Attempting connection to ('162.254.193.6', 27019)
[DEBUG] Connection: Connected.
[DEBUG] CMClient: Emit event: 'connected'
Traceback (most recent call last):
File "src/gevent/greenlet.py", line 766, in gevent._greenlet.Greenlet.run
File "/home/murla/.local/lib/python3.7/site-packages/steam/client/__init__.py", line 99, in _parse_message
result = CMClient._parse_message(self, message)
File "/home/murla/.local/lib/python3.7/site-packages/steam/core/cm.py", line 276, in _parse_message
if self.count_listeners(emsg) or self.verbose_debug:
AttributeError: 'CachingSteamClient' object has no attribute 'count_listeners'
2019-09-03T20:43:02Z <Greenlet at 0x7fd6ecc254d0: <bound method SteamClient._parse_message of <CachingSteamClient(('162.254.193.6', 27019)) online>>(b'\x17\x05\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff)> failed with AttributeError
steamctl
was installed with
pip install --user steamctl
Running Arch Linux, Python 3.7.4 here.
Using python 3.7.3 64bit on Windows 10.
The full error:
> steamctl
Traceback (most recent call last):
File "c:\users\mazin\appdata\local\programs\python\python37\lib\runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "c:\users\mazin\appdata\local\programs\python\python37\lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "C:\Users\mazin\AppData\Local\Programs\Python\Python37\Scripts\steamctl.exe\__main__.py", line 5, in <module>
File "c:\users\mazin\appdata\local\programs\python\python37\lib\site-packages\steamctl\__main__.py", line 4, in <module>
from signal import signal, SIGPIPE, SIG_DFL
ImportError: cannot import name 'SIGPIPE' from 'signal' (c:\users\mazin\appdata\local\programs\python\python37\lib\signal.py)
From the docs:
On Windows, signal() can only be called with SIGABRT, SIGFPE, SIGILL, SIGINT, SIGSEGV, SIGTERM, or SIGBREAK. A ValueError will be raised in any other case.
so I assume those are the only signals that exist on Windows.
Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
Every time i go to use steamctl depot download command, it dosen't seem to delete any files that are not in the manifest that are already on disk unnecessarily taking up disk space.
Describe the solution you'd like
A clear and concise description of what you want to happen.
steamctl actually deleting files on disk that are not in manifest.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
manually deleting all files and redownloading the manifest i want from scratch.
Description
A clear and concise description of what the bug is.
trying to download older manifests of games results in HTTP 401 instead of HTTP 200 due to steamctl not request manifest code for older manifests and only requests manifest codes for latest manifest id in appinfo.
Steps to Reproduce the behavior
(Include debug logs if possible and relevant)
Expected behavior
A clear and concise description of what you expected to happen.
steamctl downloads the older manifest/version of game with no http 401 and requests the manifest code for older manifests.
What actually happend
Description of what actually happend
same as first description
Logs
[DEBUG] steamctl: Parsed args: {'versions_report': None, 'log_level': 'debug', 'anonymous': False, 'user': None, 'command': 'depot', '_cmd_func': 'steamctl.commands.depot.gcmds:cmd_depot_download', 'subcommand': 'download', 'cell_id': None, 'os': 'any', 'output': 'F:\\SteamLibrary\\steamapps\\content\\app_1186040\\depot_1186041\\', 'no_directories': False, 'no_progress': False, 'file': None, 'app': 1186040, 'depot': 1186041, 'manifest': 2103112450145035475, 'branch': 'public', 'password': None, 'skip_depot': None, 'skip_login': False, 'skip_licenses': False, 'vpk': False, 'skip_verify': False, 'name': None, 'regex': None}
[DEBUG] SteamClient: Reading CM servers from 'C:\\Users\\conno\\AppData\\Local\\steamctl\\steamctl\\client\\cm_servers.json'
[DEBUG] CMServerList: Added 80 new CM addresses.
[DEBUG] steamctl.utils.storage: Opening file (r): C:\Users\conno\AppData\Local\steamctl\steamctl\cs_servers.json
[DEBUG] CachingCDNClient: No steam licenses found on SteamClient instance
[DEBUG] steamctl.utils.storage: Opening file (r): C:\Users\conno\AppData\Local\steamctl\steamctl\depot_keys.json
[INFO] steamctl.commands.depot.gcmds: Skipping login
[DEBUG] urllib3.connectionpool: Starting new HTTP connection (1): cache1-syd1.steamcontent.com:80
[DEBUG] urllib3.connectionpool: http://cache1-syd1.steamcontent.com:80 "GET /depot/1186041/manifest/2103112450145035475/5 HTTP/1.1" 401 98
[DEBUG] CachingCDNClient: Got HTTP 401
(EResult.Fail) HTTP Error 401
Versions Report
steamctl: 0.9.3
Dependencies:
steam: 1.3.0
appdirs: 1.4.4
argcomplete: 2.0.0
tqdm: 4.62.3
arrow: 1.2.2
pyqrcode: 1.2.1
beautifulsoup4: 4.10.0
vpk: 1.4.0
vdf: 3.4
gevent-eventemitter: 2.1
gevent: 21.12.0
greenlet: 1.1.2
pyyaml: Not Installed
pycryptodomex: 3.14.1
protobuf: 3.19.4
Python runtime:
executable: C:\Python39\python.exe
version: 3.9.10 (tags/v3.9.10:f2f3f53, Jan 17 2022, 15:14:21) [MSC v.1929 64 bit (AMD64)]
platform: win32
System info:
system: Windows
machine: AMD64
release: 10
version: 10.0.19043
Notes:
depotdownloader manages to work fine downloading older manifests
$ steamctl --user mysteamuser depot download --app 570 -o ./tmp
[INFO] Attempting login as: dotatracker
Username: dotatracker
Password:
Description
When a App's depot contains an invalid manifest, the program will error out.
Steps to Reproduce the behavior
Using this game for reference. [https://steamdb.info/app/236390/depots/?branch=public]
Normal calling of depot infos, not skipping broken depot
(War Thunder) D:\SteamLibrary\steamapps\common>steamctl --user %username% depot info --app 236390 --depot 236394
[INFO] Attempting login with remembered credentials
[INFO] Login to Steam successful
[INFO] Checking licenses
[INFO] Checking change list
[INFO] Getting manifests for 'public' branch
Traceback (most recent call last):
File "D:\SteamLibrary\steamapps\common\War Thunder\Scripts\steamctl-script.py", line 33, in <module>
sys.exit(load_entry_point('steamctl==0.9.2', 'console_scripts', 'steamctl')())
File "D:\SteamLibrary\steamapps\common\War Thunder\lib\site-packages\steamctl\__main__.py", line 59, in main
rcode = cmd_func(args=args)
File "D:\SteamLibrary\steamapps\common\War Thunder\lib\site-packages\steamctl\commands\depot\gcmds.py", line 257, in cmd_depot_info
with init_clients(args) as (_, cdn, manifests):
File "C:\Python310\lib\contextlib.py", line 135, in __enter__
return next(self.gen)
File "D:\SteamLibrary\steamapps\common\War Thunder\lib\site-packages\steamctl\commands\depot\gcmds.py", line 234, in init_clients
for manifest in cdn.get_manifests(args.app, branch=branch, password=password, filter_func=depot_filter, decrypt=False):
File "D:\SteamLibrary\steamapps\common\War Thunder\lib\site-packages\steam\client\cdn.py", line 809, in get_manifests
if filter_func and not filter_func(depot_id, depot_info):
File "D:\SteamLibrary\steamapps\common\War Thunder\lib\site-packages\steamctl\commands\depot\gcmds.py", line 202, in depot_filter
if depot_id in args.skip_depot:
TypeError: argument of type 'NoneType' is not iterable
When excluding the depot with the broken manifest it works again.
(War Thunder) D:\SteamLibrary\steamapps\common>steamctl --user %username% depot info --app 236390 --depot 236394 --skip-depot 228990
[INFO] Attempting login with remembered credentials
[INFO] Login to Steam successful
[INFO] Checking licenses
[INFO] Checking change list
[INFO] Getting manifests for 'public' branch
App ID: 236390
Depot ID: 236394
Depot Name: War Thunder Win
Manifest GID: 5061350601894242284
Created On: 2022-05-18 04:19:01 Eastern Daylight Time
Size: 695 MB
Compressed Size: 376 MB
Unique/Total chunks: 678 / 714 (5.04%)
Encrypted Filenames: False
Number of Files: 78
Config: {'oslist': 'windows'}
Branch: public
Open branches: public, release_candidate
Protected branches: _test_do_not_select
Expected behavior
Show data even with broken manifests or replace the broken manifest reply with nul,nil,0, etc
What actually happend
Program broke
Logs
(War Thunder) D:\SteamLibrary\steamapps\common>steamctl -l debug --user %username% depot info --app 236390 --depot 236394
[DEBUG] steamctl: Parsed args: {'versions_report': None, 'log_level': 'debug', 'anonymous': False, 'user': '%username%', 'command': 'depot', '_cmd_func': 'steamctl.commands.depot.gcmds:cmd_depot_info', 'subcommand': 'info', 'cell_id': None, 'os': 'any', 'file': None, 'app': 236390, 'depot': 236394, 'manifest': None, 'branch': 'public', 'password': None, 'skip_depot': None, 'skip_login': False, 'skip_licenses': False}
[DEBUG] SteamClient: Reading CM servers from 'C:\\Users\\cyberofficial\\AppData\\Local\\steamctl\\steamctl\\client\\cm_servers.json'
[DEBUG] CMServerList: Added 80 new CM addresses.
[DEBUG] steamctl.utils.storage: Opening file (r): C:\Users\cyberofficial\AppData\Local\steamctl\steamctl\cs_servers.json
[DEBUG] CachingCDNClient: No steam licenses found on SteamClient instance
[DEBUG] steamctl.utils.storage: Opening file (r): C:\Users\cyberofficial\AppData\Local\steamctl\steamctl\client\lastuser
[INFO] SteamClient: Enter credentials for: %username%
Password:
[DEBUG] SteamClient: Attempting login
[DEBUG] SteamClient: Connect initiated.
[DEBUG] Connection: Attempting connection to ('155.133.230.50', 27018)
[DEBUG] Connection: Connected.
[DEBUG] SteamClient: Emit event: 'connected'
[DEBUG] SteamClient: Incoming: <Msg(<EMsg.ChannelEncryptRequest: 1303> | ChannelEncryptRequest)>
[DEBUG] SteamClient: Emit event: <EMsg.ChannelEncryptRequest: 1303>
[DEBUG] SteamClient: Securing channel
[DEBUG] SteamClient: Outgoing: <Msg(<EMsg.ChannelEncryptResponse: 1304> | ChannelEncryptResponse)>
[DEBUG] SteamClient: Incoming: <Msg(<EMsg.ChannelEncryptResult: 1305> | ChannelEncryptResult)>
[DEBUG] SteamClient: Emit event: <EMsg.ChannelEncryptResult: 1305>
[DEBUG] SteamClient: Channel secured
[DEBUG] SteamClient: Emit event: 'channel_secured'
[DEBUG] SteamClient: Outgoing: <MsgProto(<EMsg.ClientLogon: 5514> | CMsgClientLogon)>
[DEBUG] Connection: Connection error (reader).
[DEBUG] Connection: Disconnected.
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.Multi: 1> | CMsgMulti)>
[DEBUG] SteamClient: Emit event: <EMsg.Multi: 1>
[DEBUG] SteamClient: Multi: Unpacking
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientLogOnResponse: 751> | CMsgClientLogonResponse)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientLogOnResponse: 751>
[DEBUG] SteamClient: Emit event: 'error'
[DEBUG] SteamClient: Emit event: 'disconnected'
[DEBUG] SteamClient: Emit event: 'auth_code_required'
Enter 2FA code: gq44k
[DEBUG] SteamClient: Attempting login
[DEBUG] SteamClient: Connect initiated.
[DEBUG] Connection: Attempting connection to ('155.133.248.38', 27018)
[DEBUG] Connection: Connected.
[DEBUG] SteamClient: Emit event: 'connected'
[DEBUG] SteamClient: Incoming: <Msg(<EMsg.ChannelEncryptRequest: 1303> | ChannelEncryptRequest)>
[DEBUG] SteamClient: Emit event: <EMsg.ChannelEncryptRequest: 1303>
[DEBUG] SteamClient: Securing channel
[DEBUG] SteamClient: Outgoing: <Msg(<EMsg.ChannelEncryptResponse: 1304> | ChannelEncryptResponse)>
[DEBUG] SteamClient: Incoming: <Msg(<EMsg.ChannelEncryptResult: 1305> | ChannelEncryptResult)>
[DEBUG] SteamClient: Emit event: <EMsg.ChannelEncryptResult: 1305>
[DEBUG] SteamClient: Channel secured
[DEBUG] SteamClient: Emit event: 'channel_secured'
[DEBUG] SteamClient: Outgoing: <MsgProto(<EMsg.ClientLogon: 5514> | CMsgClientLogon)>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.Multi: 1> | CMsgMulti)>
[DEBUG] SteamClient: Emit event: <EMsg.Multi: 1>
[DEBUG] SteamClient: Multi: Unpacking
[DEBUG] SteamClient: Multi: Decompressing payload (2452 -> 4977)
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientServersAvailable: 5501> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientServersAvailable: 5501>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientServersAvailable: 5501> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientServersAvailable: 5501>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientLogOnResponse: 751> | CMsgClientLogonResponse)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientLogOnResponse: 751>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientAccountInfo: 768> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientAccountInfo: 768>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientAccountInfo: 768> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientAccountInfo: 768>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientEmailAddrInfo: 5456> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientEmailAddrInfo: 5456>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientFriendsList: 767> | CMsgClientFriendsList)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientFriendsList: 767>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPlayerNicknameList: 5587> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPlayerNicknameList: 5587>
[DEBUG] SteamClient: Logon completed
[DEBUG] SteamClient: Heartbeat started.
[DEBUG] SteamClient: Emit event: 'logged_on'
[DEBUG] SteamClient: Outgoing: <MsgProto(<EMsg.ClientRequestFriendData: 815> | CMsgClientRequestFriendData)>
[DEBUG] CachingSteamClient.friends: Emit event: 'ready'
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.Multi: 1> | CMsgMulti)>
[DEBUG] SteamClient: Emit event: <EMsg.Multi: 1>
[DEBUG] SteamClient: Multi: Unpacking
[DEBUG] SteamClient: Multi: Decompressing payload (18198 -> 53100)
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientLicenseList: 780> | CMsgClientLicenseList)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientLicenseList: 780>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.Multi: 1> | CMsgMulti)>
[DEBUG] SteamClient: Emit event: <EMsg.Multi: 1>
[DEBUG] SteamClient: Multi: Unpacking
[DEBUG] SteamClient: Multi: Decompressing payload (969 -> 4326)
[DEBUG] SteamClient: Incoming: <Msg(<EMsg.ClientUpdateGuestPassesList: 798> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientUpdateGuestPassesList: 798>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientWalletInfoUpdate: 5528> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientWalletInfoUpdate: 5528>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientGameConnectTokens: 779> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientGameConnectTokens: 779>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientSessionToken: 850> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientSessionToken: 850>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientIsLimitedAccount: 5430> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientIsLimitedAccount: 5430>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientCMList: 783> | CMsgClientCMList)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientCMList: 783>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientRequestedClientStats: 5480> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientRequestedClientStats: 5480>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPlayingSessionState: 9600> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPlayingSessionState: 9600>
[DEBUG] SteamClient: Incoming: <Msg(<EMsg.ClientVACBanStatus: 782> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientVACBanStatus: 782>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.Multi: 1> | CMsgMulti)>
[DEBUG] SteamClient: Emit event: <EMsg.Multi: 1>
[DEBUG] SteamClient: Multi: Unpacking
[DEBUG] SteamClient: Multi: Decompressing payload (288 -> 394)
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientFriendsGroupsList: 5553> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientFriendsGroupsList: 5553>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.Multi: 1> | CMsgMulti)>
[DEBUG] SteamClient: Emit event: <EMsg.Multi: 1>
[DEBUG] SteamClient: Multi: Unpacking
[DEBUG] SteamClient: Multi: Decompressing payload (11723 -> 22223)
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.Multi: 1> | CMsgMulti)>
[DEBUG] SteamClient: Emit event: <EMsg.Multi: 1>
[DEBUG] SteamClient: Multi: Unpacking
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientNewLoginKey: 5463> | CMsgClientNewLoginKey)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientNewLoginKey: 5463>
[DEBUG] SteamClient: Outgoing: <MsgProto(<EMsg.ClientNewLoginKeyAccepted: 5464> | CMsgClientNewLoginKeyAccepted)>
[DEBUG] SteamClient: Emit event: 'new_login_key'
[DEBUG] steamctl.utils.storage: Opening file (w): C:\Users\cyberofficial\AppData\Local\steamctl\steamctl\client\%username%.key
[DEBUG] steamctl.utils.storage: Opening file (r): C:\Users\cyberofficial\AppData\Local\steamctl\steamctl\client\lastuser
[DEBUG] SteamClient: Login result is: <EResult.OK: 1>
[INFO] steamctl.commands.depot.gcmds: Login to Steam successful
[INFO] steamctl.commands.depot.gcmds: Checking licenses
[DEBUG] SteamClient: Fetching product info
[DEBUG] SteamClient: Outgoing: <MsgProto(<EMsg.ClientPICSAccessTokenRequest: 8905> | CMsgClientPICSAccessTokenRequest)>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.Multi: 1> | CMsgMulti)>
[DEBUG] SteamClient: Emit event: <EMsg.Multi: 1>
[DEBUG] SteamClient: Multi: Unpacking
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientServersAvailable: 5501> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientServersAvailable: 5501>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.Multi: 1> | CMsgMulti)>
[DEBUG] SteamClient: Emit event: <EMsg.Multi: 1>
[DEBUG] SteamClient: Multi: Unpacking
[DEBUG] SteamClient: Multi: Decompressing payload (10757 -> 12870)
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPICSAccessTokenResponse: 8906> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPICSAccessTokenResponse: 8906>
[DEBUG] SteamClient: Emit event: 'job_1'
[DEBUG] SteamClient: Outgoing: <MsgProto(<EMsg.ClientPICSProductInfoRequest: 8903> | CMsgClientPICSProductInfoRequest)>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.Multi: 1> | CMsgMulti)>
[DEBUG] SteamClient: Emit event: <EMsg.Multi: 1>
[DEBUG] SteamClient: Multi: Unpacking
[DEBUG] SteamClient: Multi: Decompressing payload (24352 -> 67881)
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPICSProductInfoResponse: 8904> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPICSProductInfoResponse: 8904>
[DEBUG] SteamClient: Emit event: 'job_2'
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.Multi: 1> | CMsgMulti)>
[DEBUG] SteamClient: Emit event: <EMsg.Multi: 1>
[DEBUG] SteamClient: Multi: Unpacking
[DEBUG] SteamClient: Multi: Decompressing payload (22749 -> 67900)
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPICSProductInfoResponse: 8904> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPICSProductInfoResponse: 8904>
[DEBUG] SteamClient: Emit event: 'job_2'
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.Multi: 1> | CMsgMulti)>
[DEBUG] SteamClient: Emit event: <EMsg.Multi: 1>
[DEBUG] SteamClient: Multi: Unpacking
[DEBUG] SteamClient: Multi: Decompressing payload (22988 -> 68077)
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPICSProductInfoResponse: 8904> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPICSProductInfoResponse: 8904>
[DEBUG] SteamClient: Emit event: 'job_2'
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.Multi: 1> | CMsgMulti)>
[DEBUG] SteamClient: Emit event: <EMsg.Multi: 1>
[DEBUG] SteamClient: Multi: Unpacking
[DEBUG] SteamClient: Multi: Decompressing payload (5691 -> 12681)
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPICSProductInfoResponse: 8904> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPICSProductInfoResponse: 8904>
[DEBUG] SteamClient: Emit event: 'job_2'
[INFO] steamctl.commands.depot.gcmds: Checking change list
[DEBUG] steamctl.utils.storage: Opening file (r): C:\Users\cyberofficial\AppData\Local\steamctl\steamctl\Cache\last_change_number
[DEBUG] SteamClient: Checking PICS for app changes
[DEBUG] SteamClient: Outgoing: <MsgProto(<EMsg.ClientPICSChangesSinceRequest: 8901> | CMsgClientPICSChangesSinceRequest)>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.Multi: 1> | CMsgMulti)>
[DEBUG] SteamClient: Emit event: <EMsg.Multi: 1>
[DEBUG] SteamClient: Multi: Unpacking
[DEBUG] SteamClient: Multi: Decompressing payload (201 -> 225)
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPICSChangesSinceResponse: 8902> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPICSChangesSinceResponse: 8902>
[DEBUG] SteamClient: Emit event: 'job_3'
[DEBUG] steamctl.utils.storage: Opening file (w): C:\Users\cyberofficial\AppData\Local\steamctl\steamctl\Cache\last_change_number
[DEBUG] SteamClient: Checking for outdated cached appinfo files
[INFO] steamctl.commands.depot.gcmds: Getting manifests for 'public' branch
[DEBUG] SteamClient: Serving appinfo from cache
[DEBUG] steamctl.utils.storage: Opening file (r): C:\Users\cyberofficial\AppData\Local\steamctl\steamctl\Cache\appinfo\236390.json
Traceback (most recent call last):
File "D:\SteamLibrary\steamapps\common\War Thunder\Scripts\steamctl-script.py", line 33, in <module>
sys.exit(load_entry_point('steamctl==0.9.2', 'console_scripts', 'steamctl')())
File "D:\SteamLibrary\steamapps\common\War Thunder\lib\site-packages\steamctl\__main__.py", line 59, in main
rcode = cmd_func(args=args)
File "D:\SteamLibrary\steamapps\common\War Thunder\lib\site-packages\steamctl\commands\depot\gcmds.py", line 257, in cmd_depot_info
with init_clients(args) as (_, cdn, manifests):
File "C:\Python310\lib\contextlib.py", line 135, in __enter__
return next(self.gen)
File "D:\SteamLibrary\steamapps\common\War Thunder\lib\site-packages\steamctl\commands\depot\gcmds.py", line 234, in init_clients
for manifest in cdn.get_manifests(args.app, branch=branch, password=password, filter_func=depot_filter, decrypt=False):
File "D:\SteamLibrary\steamapps\common\War Thunder\lib\site-packages\steam\client\cdn.py", line 809, in get_manifests
if filter_func and not filter_func(depot_id, depot_info):
File "D:\SteamLibrary\steamapps\common\War Thunder\lib\site-packages\steamctl\commands\depot\gcmds.py", line 202, in depot_filter
if depot_id in args.skip_depot:
TypeError: argument of type 'NoneType' is not iterable
Versions Report
steamctl: 0.9.2
Dependencies:
steam: 1.3.0
appdirs: 1.4.4
argcomplete: 2.0.0
tqdm: 4.64.0
arrow: 1.2.2
pyqrcode: 1.2.1
beautifulsoup4: 4.11.1
vpk: 1.4.0
vdf: 3.4
gevent-eventemitter: 2.1
gevent: 21.12.0
greenlet: 1.1.2
pyyaml: Not Installed
pycryptodomex: 3.14.1
protobuf: 3.20.1
Python runtime:
executable: D:\SteamLibrary\steamapps\common\War Thunder\Scripts\python.exe
version: 3.10.4 (tags/v3.10.4:9d38120, Mar 23 2022, 23:13:41) [MSC v.1929 64 bit (AMD64)]
platform: win32
System info:
system: Windows
machine: AMD64
release: 10
version: 10.0.22000
I am making a script in python, and it uses subprocess.popen (which would run it in the background)
It works when i run it in the terminal, but once i make the script start on boot, steamctl would not work with subprocess.
I would love to give you debug logs, but i cannot seem to access or get the output of the python script running (as i am running it headlessly)
Command to fire MsgClientGetNumberOfCurrentPlayers
. It's interesting for non-public apps (apps with release override).
hlmaster
does the same thing, but uses the legacy protocol.
Add a clean command for removing cache, and config files easily.
Description
I have a website that takes workshop content for a game and runs stats on it for competitive players. After working for months without issue, downloading workshop content has stopped working. It uses python's subprocess module to call steamctl commands to download workshop content.
Steps to Reproduce the behavior
Call a workshop download command. (Tried on two different machines with two different accounts, both of which own the game.)
Expected behavior
A workshop item is downloaded.
What actually happened
(EResult.Fail) HTTP Error 401. Item failed to download.
Logs
[DEBUG] steamctl: Parsed args: {'versions_report': None, 'log_level': 'debug', 'anonymous': False, 'user': None, 'command': 'workshop', '_cmd_func': 'steamctl.commands.workshop.gcmds:cmd_workshop_download', 'subcommand': 'download', 'apikey': None, 'cell_id': None, 'output': '', 'no_directories': False, 'no_progress': False, 'id': 2807051950}
[DEBUG] steamctl.utils.storage: Opening file (r): /home/ubuntu/.local/share/steamctl/apikey.txt
[DEBUG] urllib3.connectionpool: Starting new HTTPS connection (1): api.steampowered.com:443
[DEBUG] urllib3.connectionpool: https://api.steampowered.com:443 "GET /IPublishedFileService/GetDetails/v1/?key=60455B2C53B5508597D6558159EDFFD1&format=json&publishedfileids%5B0%5D=2807051950 HTTP/1.1" 200 741
[INFO] steamctl.commands.workshop.gcmds: Workshop item: (2807051950) Candy and Chains
[INFO] steamctl.commands.workshop.gcmds: App: (1216230) Project Heartbeat
[DEBUG] SteamClient: Reading CM servers from '/home/ubuntu/.local/share/steamctl/client/cm_servers.json'
[DEBUG] CMServerList: Added 80 new CM addresses.
[DEBUG] steamctl.utils.storage: Opening file (r): /home/ubuntu/.local/share/steamctl/cs_servers.json
[DEBUG] CachingCDNClient: No steam licenses found on SteamClient instance
[DEBUG] steamctl.utils.storage: Opening file (r): /home/ubuntu/.local/share/steamctl/depot_keys.json
[DEBUG] urllib3.connectionpool: Starting new HTTP connection (1): cache1-iad1.steamcontent.com:80
[DEBUG] urllib3.connectionpool: http://cache1-iad1.steamcontent.com:80 "GET /depot/1216230/manifest/4401192380018554646/5 HTTP/1.1" 401 98
[DEBUG] CachingCDNClient: Got HTTP 401
[ERROR] steamctl.commands.workshop.gcmds: (EResult.Fail) HTTP Error 401
Versions Report
Dependencies:
steam: 1.2.1
appdirs: 1.4.4
argcomplete: 1.12.3
tqdm: 4.62.3
arrow: 1.2.1
pyqrcode: 1.2.1
beautifulsoup4: 4.10.0
vpk: 1.3.3
vdf: 3.4
gevent-eventemitter: 2.1
gevent: 21.12.0
greenlet: 1.1.2
pyyaml: 5.3.1
pycryptodomex: 3.12.0
protobuf: 3.19.1
Python runtime:
executable: /usr/bin/python3
version: 3.8.10 (default, Mar 15 2022, 12:22:08) [GCC 9.4.0]
platform: linux
System info:
system: Linux
machine: x86_64
release: 5.4.0-88-generic
version: #99-Ubuntu SMP Thu Sep 23 17:29:00 UTC 2021
Description
When trying to add an authenticator to steamctl, it throws an error instead of being able to progress past logging in. Tried a different install of Python, tried WSL, nothing seems to work.
Steps to Reproduce the behavior
Try to add an authenticator to an account. Assuming its not just me (which is entirely possible), it should give an error saying "KeyError: 'oauth'"
Expected behavior
I expected to be able to log in and add an authenticator to both steamctl and the Steam mobile app. (Like seen here)
What actually happend
I wasn't able to get past logging in, since it just errors out.
Logs
steamctl -l debug authenticator add xader726
[DEBUG] steamctl: Parsed args: {'versions_report': None, 'log_level': 'debug', 'anonymous': False, 'user': None, 'password': None, 'command': 'authenticator', '_cmd_func': 'steamctl.commands.authenticator.cmds:cmd_authenticator_add', 'subcommand': 'add', 'force': False, 'from_secret': None, 'account': 'xader726'}
To add an authenticator, first we need to login to Steam
Account name: xader726
Enter password for 'xader726':
[DEBUG] urllib3.connectionpool: Starting new HTTPS connection (1): steamcommunity.com:443
[DEBUG] urllib3.connectionpool: https://steamcommunity.com:443 "POST /login/getrsakey/ HTTP/1.1" 200 404
[DEBUG] urllib3.connectionpool: https://steamcommunity.com:443 "POST /login/dologin/ HTTP/1.1" 200 128
Enter email code: #####
[DEBUG] urllib3.connectionpool: https://steamcommunity.com:443 "POST /login/dologin/ HTTP/1.1" 200 289
Traceback (most recent call last):
File "c:\users\xavier\appdata\local\programs\python\python39\lib\runpy.py", line 197, in _run_module_as_main
return _run_code(code, main_globals, None,
File "c:\users\xavier\appdata\local\programs\python\python39\lib\runpy.py", line 87, in _run_code
exec(code, run_globals)
File "C:\Users\Xavier\AppData\Local\Programs\Python\Python39\Scripts\steamctl.exe\__main__.py", line 7, in <module>
File "c:\users\xavier\appdata\local\programs\python\python39\lib\site-packages\steamctl\__main__.py", line 59, in main
rcode = cmd_func(args=args)
File "c:\users\xavier\appdata\local\programs\python\python39\lib\site-packages\steamctl\commands\authenticator\cmds.py", line 108, in cmd_authenticator_add
wa.bcli_login(sa_instance=sa, auto_twofactor=bool(args.from_secret))
File "c:\users\xavier\appdata\local\programs\python\python39\lib\site-packages\steamctl\commands\authenticator\cmds.py", line 31, in bcli_login
return self.login(password, captcha, email_code, twofactor_code)
File "c:\users\xavier\appdata\local\programs\python\python39\lib\site-packages\steam\webauth.py", line 209, in login
self._finalize_login(resp)
File "c:\users\xavier\appdata\local\programs\python\python39\lib\site-packages\steam\webauth.py", line 322, in _finalize_login
data = json.loads(login_response['oauth'])
KeyError: 'oauth'
Versions Report
G:\>steamctl --versions-report
steamctl: 0.9.5
Dependencies:
steam: 1.4.4
appdirs: 1.4.4
argcomplete: 3.1.1
tqdm: 4.45.0
arrow: 1.2.3
pyqrcode: 1.2.1
beautifulsoup4: 4.12.2
vpk: 1.4.0
vdf: 3.4
gevent-eventemitter: 2.1
gevent: 22.10.2
greenlet: 2.0.2
pyyaml: Not Installed
pycryptodomex: 3.18.0
protobuf: 3.20.3
Python runtime:
executable: c:\users\xavier\appdata\local\programs\python\python39\python.exe
version: 3.9.0 (tags/v3.9.0:9cf6752, Oct 5 2020, 15:34:40) [MSC v.1927 64 bit (AMD64)]
platform: win32
System info:
system: Windows
machine: AMD64
release: 10
version: 10.0.19041
Description
Executing steamctl --user <myaccount> apps list
for the first time after installing results in a crash and stacktrace that ends with AttributeError: 'SqliteDict' object has no attribute '_db'
.
The problem is that the cache directory (~/.cache/steamctl/
) containing app_names.sqlite3
is not created automatically, the workaround is to create this directory manually so the sqlite connection succeeds.
Steps to Reproduce the behavior
Install steamctl for the first time and execute steamctl --user myaccount apps list
.
Expected behavior
I expect to be prompted for my account details and for the traceback to not occur because ~/.cache/steamctl/app_names.sqlite3
was created successfully.
What actually happend
A crash/stacktrace occurs (see 'Logs' below).
Logs
[DEBUG] steamctl: Parsed args: {'versions_report': None, 'log_level': 'debug', 'anonymous': False, 'user': 'myaccount', 'command': 'apps', '_cmd_func': 'steamctl.commands.apps.gcmds:cmd_apps_list', 'subcommand': 'list', 'all': False}
Traceback (most recent call last):
File "/home/steam/.local/bin/steamctl", line 8, in <module>
sys.exit(main())
File "/home/steam/.local/lib/python3.9/site-packages/steamctl/__main__.py", line 59, in main
rcode = cmd_func(args=args)
File "/home/steam/.local/lib/python3.9/site-packages/steamctl/commands/apps/gcmds.py", line 108, in cmd_apps_list
app_names = get_app_names()
File "/home/steam/.local/lib/python3.9/site-packages/steamctl/commands/apps/gcmds.py", line 41, in get_app_names
papps = SqliteDict(UserCacheFile("app_names.sqlite3").path)
File "/home/steam/.local/lib/python3.9/site-packages/steamctl/utils/storage.py", line 167, in __init__
self._db = sqlite3.connect(path)
sqlite3.OperationalError: unable to open database file
Exception ignored in: <function SqliteDict.__del__ at 0x7f18cc9bf280>
Traceback (most recent call last):
File "/home/steam/.local/lib/python3.9/site-packages/steamctl/utils/storage.py", line 209, in __del__
self.commit()
File "/home/steam/.local/lib/python3.9/site-packages/steamctl/utils/storage.py", line 206, in commit
self._db.commit()
AttributeError: 'SqliteDict' object has no attribute '_db'
Versions Report
steamctl: 0.9.0
Dependencies:
steam: 1.2.0
appdirs: 1.4.4
argcomplete: 1.12.3
tqdm: 4.62.3
arrow: 1.2.1
pyqrcode: 1.2.1
beautifulsoup4: 4.10.0
vpk: 1.3.3
vdf: 3.4
gevent-eventemitter: 2.1
gevent: 21.12.0
greenlet: 1.1.2
pyyaml: 5.3.1
pycryptodomex: 3.12.0
protobuf: 3.19.1
Python runtime:
executable: /usr/bin/python3
version: 3.9.2 (default, Feb 28 2021, 17:03:44) [GCC 10.2.1 20210110]
platform: linux
System info:
system: Linux
machine: x86_64
release: 5.10.0-10-amd64
version: #1 SMP Debian 5.10.84-1 (2021-12-08)
Hello,
I'm trying to understand if I can completely avoid authentication when I use the command $ steamctl apps product_info xxxxxxxxxxxxx
.
My goal is to find out the timeupdated
of the public branch, but some AppID works well some other with --anonymous
, some others don't with this error:
$ steamctl --anonymous apps product_info 1172620 | jq -r .depots.branches.public.timeupdated
[INFO] Attempting anonymous login
[ERROR] No license available for App ID: 1172620 (EResult.AccessDenied)
Am I doing this right?
Is there any other way to find out if timeupdate has changed without authentication?
Thanks in advance.
Description
steamctl
doesn't cache licenses, package info, and product info, so accounts thousands of licenses experience very slow runtime.
Steps to Reproduce the behavior
What happened
depot
command takes a long time. Log show many PICS requests
Expected behavior
depot
commands are quick
Versions Report
N/A
Is it possible to list apps owned without using webapi?
Description
When requesting depot info for app with --skip-licenses
argument, the program stops with a single line of (EResult.AccessDenied) Failed to acquire manifest code
error for depots that specified user doesn't have rights to access, while depots that user has rights to are skipped. Even if you can't request manifest code, you still can get some data about existing depots such as their ID, latest manifest GID, etc, but steamctl won't display them because it couldn't get (unnecessary) request code. For this reason --skip-licenses
+ --skip-login
also fails. In fact, it doesn't look like you need to request manifest codes for depot info
command at all, since you're not accessing files themselves here anyway, right?
Steps to Reproduce the behavior
steamctl --anonymous depot info -a 1289310 --skip-licenses
Expected behavior
Available infos (ID, name, GID, etc) about depots are displayed.
What actually happend
Execution ends with a (EResult.AccessDenied) Failed to acquire manifest code
error while skipping anything else.
While I'm aware there's commands to download workshop items, I specifically want to subscribe to them so that my client auto-updates them.
The web interface is extremely clunky for this purpose. The search returns bizarre results and I would like to be able to essentially collect an array of ids (via a script) and then subscribe to them through a for loop using steamctl.
However it seems like steamctl lacks the webapi hooks to do so. I tried looking into other python packages but they had the same problem. Can you please help me?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.