下载完成自动跑脚本:环境变量与解释器支持
任务下载成功后自动执行你指定的脚本——移动文件、推送通知、触发转码,都在这个钩子上实现。与 Webhook 的区别:脚本在本机直接跑,不依赖外部服务。
开启方法
「设置 → 高级 → 开发者」区域的「脚本执行」开关,添加脚本文件完整路径。可配置多个脚本,按顺序依次执行。
支持的脚本类型
按文件扩展名自动选解释器:
| 扩展名 | 解释器 | 平台 |
|---|---|---|
| .sh / .bash | Bash | macOS / Linux |
| .py | Python 3 | 全平台 |
| .js | Node.js | 全平台 |
| .bat / .cmd | cmd.exe | 仅 Windows |
| .ps1 | PowerShell | 全平台 |
| 无扩展名 | 直接执行(需 shebang 或可执行权限) | macOS / Linux |
脚本里能拿到什么
执行时注入环境变量:
| 变量 | 说明 |
|---|---|
| GOPEED_EVENT | 事件类型(下载完成) |
| GOPEED_TASK_ID | 任务唯一 ID |
| GOPEED_TASK_NAME | 任务显示名称 |
| GOPEED_TASK_STATUS | 任务状态 |
| GOPEED_TASK_PATH | 文件完整路径(单文件任务指向文件,多文件任务指向文件夹) |
两个现成例子
自动把完成文件搬到机械盘:
#!/bin/bash
DEST="/data/hdd/downloads/"
mkdir -p "$DEST"
mv "$GOPEED_TASK_PATH" "$DEST"
echo "Moved $GOPEED_TASK_NAME to $DEST"
用 Python 推送通知:
import os, json, urllib.request
task_name = os.environ.get("GOPEED_TASK_NAME", "")
task_path = os.environ.get("GOPEED_TASK_PATH", "")
data = json.dumps({"title": "下载完成", "body": task_name + " " + task_path}).encode()
req = urllib.request.Request("你的通知服务地址", data=data,
headers={"Content-Type": "application/json"})
urllib.request.urlopen(req)
三个注意点
- 只在下载成功时触发,失败任务不会跑脚本;
- macOS/Linux 下脚本要加执行权限(chmod +x);
- 更重的事件驱动场景(远程接收)用 Webhook 通知。
相关阅读
- 路径变量的来源逻辑:种子内文件挑选。