Skip to main content

Python Steam depot downloader with single-session manifest fetching

Project description

depot-dl

Python Steam depot downloader built for single-session, many-manifest workflows. Unlike the official DepotDownloader, depot-dl logs in once and reuses the same authenticated session across every manifest request — no more getting rate-limited by Steam's login throttle when fetching historical builds.

Why depot-dl?

The official DepotDownloader is a great tool, but each invocation performs a fresh Steam login. If you need to fetch dozens or hundreds of historical manifests, you'll hit RateLimitExceeded after a few dozen requests and get locked out for hours.

depot-dl's core design: one login, one session, N manifests. You can fetch hundreds of historical builds in a single run without tripping Steam's rate limiter, because only one login handshake ever happens.

Installation

pip install depot-dl

Or from source:

git clone https://github.com/bitalizer/depot-dl
cd depot-dl
pip install -e .

Quick start

Download a single manifest

depot-dl download --app 440 --depot 441 \
    --manifest 3087768970110163342 --user YOUR_STEAM_LOGIN

Download many manifests in one session

# manifests.txt — one manifest ID per line
echo 3087768970110163342 > manifests.txt
echo 1619985635172051553 >> manifests.txt

depot-dl download --app 440 --depot 441 \
    --manifest-file manifests.txt \
    --user YOUR_STEAM_LOGIN

Only download specific files

depot-dl download --app 440 --depot 441 \
    --manifest-file manifests.txt \
    --file "*.cfg" \
    --user YOUR_STEAM_LOGIN

Or use a filelist file (same format as DepotDownloader):

# filelist.txt
regex:.*\.cfg$
*.json
depot-dl download --app 440 --depot 441 \
    --manifest-file manifests.txt \
    --filelist filelist.txt \
    --user YOUR_STEAM_LOGIN

Flat output with name templates

depot-dl download --app 440 --depot 441 \
    --manifest-file manifests.txt \
    --file "game.exe" \
    --name-template "{file}_{date}_{manifest}" \
    --user YOUR_STEAM_LOGIN

Template variables: {file}, {manifest}, {app}, {depot}, {date}

List files in a manifest

depot-dl list --app 440 --depot 441 --manifest 3087768970110163342 --user YOUR_STEAM_LOGIN

Get manifest info

depot-dl info --app 440 --depot 441 --manifest 3087768970110163342 --user YOUR_STEAM_LOGIN

Filelist format

depot-dl supports the same filelist format as DepotDownloader:

# comment lines start with #
game/steam.inf
regex:.*\.cfg$
*.swf
  • Plain paths match exactly
  • regex: prefix enables regex matching
  • Anything with glob characters (*, ?, [) is treated as a glob
  • Case-insensitive matching by default

Authentication

Email/2FA code is required once per run. The session is then reused for all manifests in that run.

depot-dl login --user YOUR_STEAM_LOGIN     # interactive login
depot-dl whoami                            # show cached user
depot-dl logout                            # clear cached credentials

Anonymous mode is supported for free-to-play apps:

depot-dl download --app <id> --depot <id> --manifest <id> --anonymous

Concurrency

Chunk downloads are parallelized per file via --max-chunks (default 8). Manifests are processed sequentially within a single session.

Library usage

from depot_dl import DepotClient, DownloadRequest, FileFilter

client = DepotClient()
client.login(username="YOUR_STEAM_LOGIN")

request = DownloadRequest(
    app_id=440,
    depot_id=441,
    manifest_id=3087768970110163342,
    output_dir="./downloads",
    file_filter=FileFilter.from_patterns(["*.cfg"]),
)

for progress in client.download(request):
    print(f"{progress.file}: {progress.percent:.1f}%")

License

MIT — see LICENSE.

Credits

Built on top of ValvePython/steam for Steam protocol handling. Inspired by the SteamRE/DepotDownloader project.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

depot_dl-1.0.0.tar.gz (15.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

depot_dl-1.0.0-py3-none-any.whl (18.7 kB view details)

Uploaded Python 3

File details

Details for the file depot_dl-1.0.0.tar.gz.

File metadata

  • Download URL: depot_dl-1.0.0.tar.gz
  • Upload date:
  • Size: 15.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for depot_dl-1.0.0.tar.gz
Algorithm Hash digest
SHA256 f00515a684e1f1837f63dd8abb4091d60ce2a609b7d3c5d81744fbd0a80cee2f
MD5 7e2a715340829cf3ce00c1d3dcbf4852
BLAKE2b-256 6cefdf0ff3a599ceff222033cf7a9331adf33637c9c181693b70947d946c3004

See more details on using hashes here.

Provenance

The following attestation bundles were made for depot_dl-1.0.0.tar.gz:

Publisher: release.yml on bitalizer/depot-dl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file depot_dl-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: depot_dl-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 18.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for depot_dl-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2523a73954ad8183cae89e1dc2e6a8f6312149b13e65e728776b6d4568483228
MD5 004711621f815a4f458beacf3d4a1f21
BLAKE2b-256 1d823617cc5a90a0c88d4175e0c76b357ce5676e15557074d09f55474ae4e4f4

See more details on using hashes here.

Provenance

The following attestation bundles were made for depot_dl-1.0.0-py3-none-any.whl:

Publisher: release.yml on bitalizer/depot-dl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page