Skip to content

工具托管

声明脚本依赖的命令行工具(如 FFmpeg、Pandoc 等),盒子在安装时自动下载并配置 PATH,省去手动安装,无需用户干预。

  • 开发者:在 [[bmscriptsbox.runtime]] binaries字段值中声明工具名称即可。
  • 用户:安装时自动下载并配置环境变量,全程无需额外操作。
  • 共享机制:多个脚本依赖同一工具时只下载一次,统一存放,避免冗余。
  • 下载保障:支持断点续传,自动走高速镜像。

三步上手

第一步:声明依赖

bm-scripts-box-rc.tomlruntime 段添加 binaries 字段:

toml
[bmscriptsbox.runtime]
binaries = [{name = "everything"}, {name = "7zip"}]

binaries 是字典列表,每个字典至少包含 name 字段,值为工具名称。

第二步:盒子自动安装

脚本安装时,盒子自动完成:

  1. 查询:从资源仓库读取该工具的 JSON 清单,获取下载地址和版本信息
  2. 下载:优先使用国内镜像地址,失败时自动切换到海外地址
  3. 解压:将工具解压到盒子管理目录下的 BmPackages/downloads/
  4. 配置路径:为每个工具生成重定向脚本,确保脚本中直接调用工具名即可使用

第三步:脚本里直接调用

安装后,工具路径已自动加入脚本执行环境的 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.jsonffmpeg.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 中 binariesname 对应
description工具描述
homepage工具官网地址
version.architecture.url下载地址(海外)
version.architecture.url_cn下载地址(国内镜像,优先使用)
version.architecture.bin可执行文件路径,相对于解压后的目录(数组,可配置多个)
version.architecture.env_set是否加入环境变量 PATH。开启后盒子会创建 Shim 重定向,所有脚本均可直接调用
version.architecture.silent_install是否静默安装

添加新工具

资源仓库里没有你要的工具时,可以自己添加:

  1. Fork 仓库,在根目录创建 <工具名>.json,按上述格式编写
  2. 提交 Pull Request,审核通过后所有盒子用户即可使用

不方便提交 PR 的话,也可以联系盒子管理员协助添加。


常见问题

Q:工具下载用哪个地址? A:优先国内镜像(url_cn),失败时自动切换到海外(url)。

Q:工具装在哪? A:盒子管理目录下,不会污染系统 PATH。

Q:如何获取工具的最新版本? A:重新安装脚本即可。

Q:需要联网吗? A:首次下载需要网络连接。


相关文档

文档版本 0.3.0 · MIT License