工具托管
声明脚本依赖的命令行工具(如 FFmpeg、Pandoc 等),盒子在安装时自动下载并配置 PATH,省去手动安装,无需用户干预。
- 开发者:在
[[bmscriptsbox.runtime]]binaries字段值中声明工具名称即可。 - 用户:安装时自动下载并配置环境变量,全程无需额外操作。
- 共享机制:多个脚本依赖同一工具时只下载一次,统一存放,避免冗余。
- 下载保障:支持断点续传,自动走高速镜像。
三步上手
第一步:声明依赖
在 bm-scripts-box-rc.toml 的 runtime 段添加 binaries 字段:
toml
[bmscriptsbox.runtime]
binaries = [{name = "everything"}, {name = "7zip"}]binaries 是字典列表,每个字典至少包含 name 字段,值为工具名称。
第二步:盒子自动安装
脚本安装时,盒子自动完成:
- 查询:从资源仓库读取该工具的 JSON 清单,获取下载地址和版本信息
- 下载:优先使用国内镜像地址,失败时自动切换到海外地址
- 解压:将工具解压到盒子管理目录下的
BmPackages/downloads/ - 配置路径:为每个工具生成重定向脚本,确保脚本中直接调用工具名即可使用
第三步:脚本里直接调用
安装后,工具路径已自动加入脚本执行环境的 PATH,你不需要在代码里写完整路径:
python
# Python 脚本中直接调用工具名
import subprocess
result = subprocess.run(["everything", "-s", "keyword"], capture_output=True, text=True)
print(result.stdout)与语言无关
无论脚本用 Python、Node.js 还是 BAT,都能声明 binaries:
toml
[bmscriptsbox.runtime]
language = "python"
language_version = ">=3.8"
entry = "main.py"
binaries = [{name = "ffmpeg"}] # Python 脚本同样可以依赖外部命令行工具资源仓库
所有工具的下载信息统一托管在 GitHub:
bm-qihengzhi/BmBinaryResource: 不忙脚本盒子资源仓库
仓库中每个工具对应一个 JSON 文件,文件名与 name 字段对应(如 everything.json、ffmpeg.json)。
资源清单格式:
json
{
"name": "ffmpeg",
"description": "ffmpeg命令行工具",
"homepage": "https://ffmpeg.org",
"version": {
"8.1": {
"architecture": {
"url": "https://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-n8.1-latest-win64-gpl-shared-8.1.zip",
"url_cn": "https://www.modelscope.cn/datasets/a89913131/BmBinaryResource/resolve/master/ffmpeg-n8.1-latest-win64-gpl-shared-8.1.zip",
"bin": ["ffmpeg.exe", "ffprobe.exe", "ffplay.exe"],
"env_set": true,
"silent_install": false
}
}
}
}| 字段 | 说明 |
|---|---|
name | 工具名称,与 TOML 中 binaries 的 name 对应 |
description | 工具描述 |
homepage | 工具官网地址 |
version.architecture.url | 下载地址(海外) |
version.architecture.url_cn | 下载地址(国内镜像,优先使用) |
version.architecture.bin | 可执行文件路径,相对于解压后的目录(数组,可配置多个) |
version.architecture.env_set | 是否加入环境变量 PATH。开启后盒子会创建 Shim 重定向,所有脚本均可直接调用 |
version.architecture.silent_install | 是否静默安装 |
添加新工具
资源仓库里没有你要的工具时,可以自己添加:
- Fork 仓库,在根目录创建
<工具名>.json,按上述格式编写 - 提交 Pull Request,审核通过后所有盒子用户即可使用
不方便提交 PR 的话,也可以联系盒子管理员协助添加。
常见问题
Q:工具下载用哪个地址? A:优先国内镜像(url_cn),失败时自动切换到海外(url)。
Q:工具装在哪? A:盒子管理目录下,不会污染系统 PATH。
Q:如何获取工具的最新版本? A:重新安装脚本即可。
Q:需要联网吗? A:首次下载需要网络连接。