Skip to main content

Riot manifest parsing, concurrent downloader, and manifest/WAD diff toolkit.

Project description

RiotManifest

PyPI Python PyPI - Downloads Release Workflow GitHub Release

Riot 提供的 manifest 解析、并发下载、WAD 按需提取与差异分析工具。

安装

pip3 install riotmanifest

30 秒上手

最常见的下载入口是 PatcherManifest

import asyncio
from riotmanifest import PatcherManifest


async def main() -> None:
    manifest = PatcherManifest(
        "https://lol.secure.dyn.riotcdn.net/channels/public/releases/CB3A1B2A17ED9AAB.manifest",
        path="./out",
        bundle_url="https://lol.dyn.riotcdn.net/channels/public/bundles/",
    )

    files = list(manifest.filter_files(flag="zh_CN", pattern="wad.client"))
    await manifest.download_files_concurrently(files)


if __name__ == "__main__":
    asyncio.run(main())

默认并发为 16

常见任务

1. 下载 manifest 中的一批文件

  • 入口:PatcherManifest
  • 适合:批量下载 wad.client、语言资源、配置文件

2. 从 WAD 中按需提取少量文件

from riotmanifest import PatcherManifest, WADExtractor

manifest = PatcherManifest(manifest_url, path="")
extractor = WADExtractor(manifest)

data = extractor.extract_files(
    {
        "DATA/FINAL/Champions/Ahri.wad.client": [
            "data/characters/ahri/skins/skin0.bin",
        ]
    }
)

3. 比较两个版本的 manifest / WAD 差异

from riotmanifest import diff_manifests, diff_wad_headers

manifest_report = diff_manifests(old_manifest, new_manifest, flags="zh_CN", pattern="wad.client")
wad_report = diff_wad_headers(manifest_report=manifest_report)

4. 获取当前 live 且版本规则明确的一对 LCU / GAME manifest

from riotmanifest import RiotGameData

rgd = RiotGameData()
pair = rgd.resolve_live_manifest_pair("EUW")

print(str(pair.version))  # 例如 16.5
print(pair.lcu.url)
print(pair.game.url)

重要: RiotGameData 的默认 match_mode 现在就是 VersionMatchMode.IGNORE_REVISION。 Riot 的 live 发布经常出现“GAME 先更新、LCU 稍后更新”的窗口期; 同时 patchsieve 只暴露当前滚动窗口中的少量 GAME 候选,不是完整历史库。 因此 STRICT 要求 normalized_build 完全一致,在 live 场景里大概率直接失败。 如果你只处理 wad.client、语言包、贴图、音频等资源文件,通常可以忽略修订号, 只按补丁版本匹配。只有在你明确要求 EXE / DLL / build 级完全一致时, 才建议使用 STRICT 并自行处理失败。

实践建议

下载

  • 默认并发 16 是当前推荐值。
  • 网络或磁盘较弱时可降到 8~12
  • 机器配置较好且网络稳定时,可尝试 16~24

WAD 提取

  • WADExtractor 适合“少量小文件按需提取”。
  • 若单个 WAD 目标文件很多,通常更建议先下载完整 WAD 再本地处理。

差异分析

  • 大多数情况下,先 diff_manifests,再按需进入 diff_wad_headers
  • resolve_wad_diff_paths() 默认推荐 extractor 模式。
  • 仅在“需要完整落盘、后续离线复用、磁盘空间充足”时考虑 download_root_wad

RiotGameData

  • 默认 match_mode 现在就是 IGNORE_REVISION
  • Riot live 常见顺序是 GAME 先更新、LCU 稍后更新,因此 STRICT 在 live 场景里大概率失败。
  • 如果你只处理资源文件(如 wad.client、语言包、贴图、音频),通常可以忽略修订号。
  • IGNORE_REVISION 当前会优先选择“同补丁内不高于 LCU build 的最大 GAME 候选”,避免误选比 LCU 更新的 GAME build。
  • 如果你明确要“同补丁内无条件取最新 GAME 修订”,可改用 VersionMatchMode.PATCH_LATEST
  • 只有在你要求 EXE / DLL / build 级完全一致时,才建议使用 STRICT
  • str(pair.version) 默认输出补丁号,例如 16.5;如需精确显示,可读取 pair.version.lcu.display_versionpair.version.game.display_version

文档导航

详细文档已按功能拆分:

维护者

Virace

感谢

许可证

GPLv3

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

riotmanifest-2.3.0.tar.gz (64.5 kB view details)

Uploaded Source

Built Distribution

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

riotmanifest-2.3.0-py3-none-any.whl (75.3 kB view details)

Uploaded Python 3

File details

Details for the file riotmanifest-2.3.0.tar.gz.

File metadata

  • Download URL: riotmanifest-2.3.0.tar.gz
  • Upload date:
  • Size: 64.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for riotmanifest-2.3.0.tar.gz
Algorithm Hash digest
SHA256 18b55cdd7a0c7efa0dff26f3748987f87e49b7ad41991a35c8baa8642e71c302
MD5 325e577d8e82cbe7a4fd03797e6a7d90
BLAKE2b-256 6bf206568ceea69cd2b6868eb8e671c009f5ddcb67b13f51cc6abc755a3e48d5

See more details on using hashes here.

Provenance

The following attestation bundles were made for riotmanifest-2.3.0.tar.gz:

Publisher: python-publish.yml on Virace/RiotManifest

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

File details

Details for the file riotmanifest-2.3.0-py3-none-any.whl.

File metadata

  • Download URL: riotmanifest-2.3.0-py3-none-any.whl
  • Upload date:
  • Size: 75.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for riotmanifest-2.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e4d225d557d61dda3205d40128bc9627d07897daeeab1b4d9a7ae192a690db37
MD5 b46e66aac2dade5f383457df1ada27ab
BLAKE2b-256 65a89bc148762d6f66760c1622daa7fa7f0763d46aec70fe2299e9f3b4bbd6a9

See more details on using hashes here.

Provenance

The following attestation bundles were made for riotmanifest-2.3.0-py3-none-any.whl:

Publisher: python-publish.yml on Virace/RiotManifest

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