模块与数据结构
公开调用入口见 API 总览,脚本示例见 Python API。下列文件名可跳转到仓库源码。
1. 当前包结构
- 根入口
- 应用编排
- 配置与 INI
- 控制台
- 数据准备与读取
- 共享模型
- 解包
- 映射
- 运行时支持
- 界面
2. 典型调用链
2.1 控制台主链
unpack/mappingconsole script 进入lol_audio_unpack.cli.cli:maincli.parser.create_parser(...)解析动作与共享参数cli.runtime._apply_config_profile(...)注入-c配置文件内容cli.runtime.validate_args(...)校验动作组合与参数边界cli.runtime.initialize_app(...)构建AppContextLolAudioUnpackApp执行update / extract / wav / mapping- 控制台顶层聚合各阶段
StageResult,并从RunResult映射统一结论与退出码
2.2 Python 主链
ctx = setup_app(...)或ctx = create_app_context(...)app = LolAudioUnpackApp(ctx)- 构造
OperationOptions - 调用
app.update(...)、app.extract(...)、app.mapping(...)
3. 输出目录约定
manifest/<version>/<region>/data.msgpack:基础聚合数据(英雄/地图元信息)manifest/<version>/<region>/banks/**:分类后的 bank 路径及 local v2 resource bindings;物理 WAD 只保存游戏根相对路径manifest/<version>/<region>/events/**:事件数据audios/<version>/<region>/...:保留原 ID 的可见.wemaudios/_data/**与audios/_index/<version>/<region>.msgpack:原始内容对象与归属索引wavs/<version>/<region>/...:固定位置的 WAV 输出;采样格式变化时替换同一文件,不保存隐藏派生对象hashes/<version>/<region>/...:映射结果或整合结果reports/<version>/<region>/...:解包、转码与汇总报告
管理目录可能通过硬链接共享内容;编辑前先复制到库外或导出独立副本。 搬迁、备份、旧目录一次性迁移和转换复用合同见资源库说明。
4. 数据格式约定
manager.utils.write_data(...) 在正常和开发模式下均写入 .msgpack。 兼容参数 dev_mode 不再影响格式;开发模式的独立 INI 和调试日志保持原行为。
| 写入阶段 | 保证 |
|---|---|
| 发布前 | 在目标同目录完成序列化与文件同步 |
| 发布 | 原子替换正式文件,返回实际目标路径 |
| 失败 | 抛出 manager.errors.ArtifactWriteError,原正式文件不变,尽力清理本轮临时文件 |
| 其他格式 | 不自动删除同一基础路径的其他格式 sibling |
此保证仅覆盖
manager.utils.write_data(...)发布的结构化 artifact。 WEM、报告等遵循各自写入路径,不代表全项目原子写入。
manager.utils.read_data(...) 只读取同一基础路径的 .msgpack,不回退旧 YAML/JSON。 缺失返回空字典;损坏或顶层不是字典时抛出 SharedDataCorruptError,不当作空库覆盖。 needs_update(...) 仅用于可再生元数据,可把损坏识别为需要重新生成。
应用启动的一次性旧目录迁移会读取旧 JSON/YAML 元数据并转为 MessagePack;完成后移除旧位置, 不在正常读取器中增加旧格式或旧路径回退。
只有历史文件、没有游戏源时,可使用独立离线转换入口:
uv run scripts/convert_data.py --input old.yml --output data.msgpack --from yml --to msgpack
uv run scripts/convert_data.py --input data.msgpack --output readable.yaml --from msgpack --to yaml
uv run scripts/convert_data.py --input data.msgpack --output readable.json --from msgpack --to json输入、输出和格式必须显式指定。工具不覆盖已有文件,失败不发布正式半成品;YAML 使用安全解析, 保留整数/字符串键与二进制值。JSON 无法保留整数键或二进制值时明确拒绝,改用 YAML。 转换只改变容器格式,不升级 schema;转换完成后仍由正常读取入口验证结构。
当前 banks 文件顶层使用唯一的 resourceSchemaVersion: 2 合同。仅比较 metadata.gameVersion 不能证明旧 artifact 具备资源绑定;本地 update 会重建旧 schema。