steamctl icon indicating copy to clipboard operation
steamctl copied to clipboard

[BUG] steamctl not able to download older manifests

Open nutterthanos opened this issue 3 years ago • 1 comments

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)

  1. run steamctl depot download with the -m flag and try to download an older version of a game.

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

steamctl -l debug (Include logs related ot the issue. Use `steamctl -l debug` to get detailed log)
[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 --versions-report (Run steamctl --versions-report and paste the output below)
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

nutterthanos avatar Jul 22 '22 01:07 nutterthanos

Yes, it returns 401 for a manifest GID that's valid for steam's own download_depot console command

As an aside, info doesn't seem to return a list of prior manifests

Fatmice avatar Aug 04 '22 20:08 Fatmice

As an aside, info doesn't seem to return a list of prior manifests

maybe because info is asking for appinfo which appinfo only contains latest manifest gid for each branch that exists

nutterthanos avatar Aug 17 '22 09:08 nutterthanos

Yes, it returns 401 for a manifest GID that's valid for steam's own download_depot console command

it seems depotdownloader can at least grab older manifests tho its like there is code that prevents the steamclient/steamctl client from grabbing older manifests

nutterthanos avatar Aug 17 '22 09:08 nutterthanos

It depends. If the manifest GID is for a password-locked branch, I've not be able to use depotdownloader grab the files even though I can with download_depot

it seems depotdownloader can at least grab older manifests tho its like there is code that prevents the steamclient/steamctl client from grabbing older manifests

Fatmice avatar Aug 18 '22 04:08 Fatmice

It depends. If the manifest GID is for a password-locked branch, I've not be able to use depotdownloader grab the files even though I can with download_depot

it seems depotdownloader can at least grab older manifests tho its like there is code that prevents the steamclient/steamctl client from grabbing older manifests

weird

nutterthanos avatar Aug 18 '22 09:08 nutterthanos

It depends. If the manifest GID is for a password-locked branch, I've not be able to use depotdownloader grab the files even though I can with download_depot

it seems depotdownloader can at least grab older manifests tho its like there is code that prevents the steamclient/steamctl client from grabbing older manifests

weird

actually steamctl seems to just skip login if you try to download a older manifest and returns a HTTP 401

nutterthanos avatar Sep 14 '22 12:09 nutterthanos

Manifest downloads now require a manifest code. I've been told older manifest can still be downloaded as Steam would return a manifest code, but perhaps that is no being handled properly I have to verify.

rossengeorgiev avatar Sep 14 '22 12:09 rossengeorgiev

Manifest downloads now require a manifest code. I've been told older manifest can still be downloaded as Steam would return a manifest code, but perhaps that is no being handled properly I have to verify.

did you verify?

nutterthanos avatar Sep 21 '22 08:09 nutterthanos

🎉

nutterthanos avatar Oct 02 '22 09:10 nutterthanos