Plugin-based Unity Asset Extractor
Project description
Albi0
摸鱼的图书馆管理员
🟨插件化的 Unity 游戏资源更新与提取工具🟩
功能特性
- 插件化:通过插件系统以支持多个游戏客户端,并提供了抽象的manifest版本管理器接口,便于支持热更逻辑
- 异步下载:基于
httpx、anyio与tqdm的高速并发下载与实时进度显示
已支持的游戏
使用方式
推荐使用 uvx 直接运行,无需本地安装依赖,但需要先安装 uv,uv 安装文档
之后使用 uvx 运行:
uvx albi0 --help
快速开始
- 列出可用的更新器与提取器:
uvx albi0 list
- 更新远程资源(示例:下载 NewSeer AB 包):
# 可选:切换工作目录(默认当前目录)
uvx albi0 update -n newseer.default -w ./newseer
- 仅查看远程版本号(不下载资源):
uvx albi0 update -n newseer.default --version-only
- 提取资源(AB 文件 → 本地目录):
# 使用指定提取器提取(按组名/名称)
uvx albi0 extract -n newseer "./path/to/*.ab" -o ./output
# 合并模式(将多个源文件合并为一个环境后再导出)
uvx albi0 extract -n seerproject -m "./assets/**/*.ab" -o ./out
# 原样导出(忽略自定义处理,使用默认提取器)
uvx albi0 extract -e "./raw/*.ab" -o ./raw_out
提示:导出路径会自动带上提取器名前缀,例如传入 -n newseer -o ./output,实际导出目录为 ./output/newseer/...。
CLI 参考
顶层命令
uvx albi0 --help
uvx albi0 list
uvx albi0 update -n <updater_name> [-w WORKING_DIR] [--version-only] [PATTERNS...]
uvx albi0 extract [OPTIONS] [PATTERNS...]
list
- 说明:打印已注册的更新器与提取器(来自已导入的插件)
update
- 必选参数:
-n, --updater-name指定更新器名称或组名(可用名称见list输出) - 可选参数:
-w, --working-dir切换执行时的工作目录--version-only仅获取远程版本号,不下载资源文件
- 位置参数:
PATTERNS...可选的文件名过滤模式(glob语法),用于仅更新匹配的清单项 - 行为:
- 对比远程与本地资源清单,若需要更新则并发下载资源文件并保存清单
- 进度条展示每个文件的下载进度与总体任务进度
- 当传入
--version-only时,仅打印远程版本号并退出,不进行下载 - 当提供
PATTERNS...时,仅会下载文件名匹配PATTERNS...的条目
extract
- 可选参数:
-o, --output-dir导出目录(默认当前目录)-n, --extractor-name提取器名称或组名(默认default)-e, --export-as-is原样导出(强制使用默认提取器)-m, --merge-extract合并模式(先合并环境再导出)
- 位置参数:
PATTERNS...资源文件的 glob 模式(如"./**/*.ab") - 行为:
- 依次加载匹配到的资源文件,调用插件注册的处理器进行导出
- 在对象导出前后,可由插件的前/后处理器自定义处理逻辑
插件体系概览
- 提取器(Extractor):在插件模块中通过构造
Extractor()即完成注册 - 更新器(Updater):在插件模块中通过构造
Updater()即完成注册 - 分组机制:名称支持点号分组,例如
newseer.default、seerproject.ab;在 CLI 中传入组名可批量执行同组组件
典型工作流
# 1. 查看可用组件
uvx albi0 list
# 2. 下载(或更新)远程资源
uvx albi0 update -n newseer.default -w ./workspace
# 仅下载匹配的资源(使用 glob 过滤)
uvx albi0 update -n newseer.default "*.builtin" "Shader/*"
# 3. 提取资源到本地
uvx albi0 extract -n newseer "./workspace/newseer/assetbundles/**/*.ab" -m -o ./exports
开发流程
项目使用 uv 进行依赖管理与构建:
# 克隆仓库
git clone https://github.com/SeerAPI/albi0.git
# 安装依赖(包含开发/测试依赖)
uv sync
# 本地运行 CLI
uv run albi0 --help
# 运行测试
uv run --group test pytest
# 构建发行包
uv build
常见问题(FAQ)
- Q: 为什么没有看到我新写的插件生效?
- A: 确保插件模块在
albi0/plugins/__init__.py被导入;CLI 入口会导入albi0.plugins完成注册。
- A: 确保插件模块在
- Q: 下载很慢/失败?
- A: 默认
httpx客户端带有 UA/Referer 头,且支持并发;可根据网络情况调整并发或使用代理(自行扩展Downloader)。
- A: 默认
- Q: 导出结果的格式不符合预期?
- A: 检查对应插件的对象前处理器与资源后处理器逻辑,或使用
-e/--export-as-is原样导出。
- A: 检查对应插件的对象前处理器与资源后处理器逻辑,或使用
目录结构(简要)
albi0/
├── cli/ # CLI命令系统
│ ├── commands/ # 具体命令实现
│ └── __init__.py # CLI主框架
├── plugins/ # 插件系统
│ ├── seerproject.py # SeerProject插件
│ └── newseer.py # NewSeer插件
├── extract/ # 资源提取核心
│ ├── extractor.py # 提取器实现
│ └── registry.py # 提取器注册表
├── update/ # 更新功能模块
│ ├── downloader.py # 下载器实现
│ ├── updater.py # 更新器实现
│ └── version.py # 版本管理器实现
├── bytes_reader.py # 字节流读取工具
├── utils.py # 通用工具函数
├── typing.py # 类型定义
├── log.py # 日志配置
├── container.py # 插件容器
└── request.py # httpx客户端封装
许可证
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
albi0-0.1.0.tar.gz
(19.5 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
albi0-0.1.0-py3-none-any.whl
(28.1 kB
view details)
File details
Details for the file albi0-0.1.0.tar.gz.
File metadata
- Download URL: albi0-0.1.0.tar.gz
- Upload date:
- Size: 19.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
eef9b91f55fdac01e1af27fa7ec6557c08a9abb84b0a0d3769b457c4bbb9338d
|
|
| MD5 |
3b7a8c94e49770b81bed910f1542dbed
|
|
| BLAKE2b-256 |
b2af586fdf8ccc6307e970ec3f4b8c81a1c1669fe4d415f0a352601b9d010eb8
|
File details
Details for the file albi0-0.1.0-py3-none-any.whl.
File metadata
- Download URL: albi0-0.1.0-py3-none-any.whl
- Upload date:
- Size: 28.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
49217c278a9eaa16fda0fc4614086ae38b28ec34c18b47e308309dc1d4d40776
|
|
| MD5 |
14b70397683cfc3019282c96b2a62b4e
|
|
| BLAKE2b-256 |
71529aa2f2a807256aaa23f50b24c37194c2a797058f02e5a5f61ed7b885c064
|