Vertex 自动化脚本实战:下载前过滤 + 限速删种规则双脚本分享
在使用 Vertex 进行 PT 自动化管理时,合理设置下载前过滤规则和删种规则可以有效控制资源利用、优化上传策略,并避免机器过载。本文分享两个实用脚本:
- ✅ 下载前过滤脚本:控制下载任务数量、种子大小和分类;
- ✅ 删种规则脚本:按分类进行上传/下载限速,并在进度达到指定百分比后标记完成。
脚本均支持日志输出,适用于 RSS 下载器或挂机盒部署,适配如 PT站点:PTHOME、BTSCHOOL 等。
🧩 一、下载前过滤脚本:任务数量 + 种子大小 + 分类控制
✅ 功能说明
- 限制目标分类(如
PTHOME
); - 限制该分类下最多允许存在的任务数量;
- 限制种子大小范围(如 500MB\~30GB);
- 可选日志记录,追踪过滤原因。
📜 脚本内容
将以下内容粘贴至 Vertex 面板 →【规则设置】→【RSS规则】中:
(torrent) => {
const config = {
categoryList: "PTHOME",
downloaderId: '039fa75c',
enableLogging: false,
enableTaskCountLimit: true,
taskCountLimit: 15,
enableSizeLimit: true,
sizeLimitRange: [500 * 1024 * 1024, 30 * 1024 * 1024 * 1024]
};
const fs = require('fs');
const path = require('path');
function getLocalTimeString() {
return new Date().toLocaleString('zh-CN', { hour12: false });
}
function logFailure(message) {
if (!config.enableLogging) return;
const logFilePath = '/vertex/log22/log.txt';
const logDir = path.dirname(logFilePath);
if (!fs.existsSync(logDir)) {
fs.mkdirSync(logDir, { recursive: true });
}
fs.appendFileSync(logFilePath, `[${getLocalTimeString()}] ${message}\n`);
}
const client = global.runningClient[config.downloaderId];
if (!client) {
logFailure(`未找到下载器 ${config.downloaderId}`);
return false;
}
if (config.enableTaskCountLimit) {
const categoryCount = client.maindata.torrents.reduce(
(count, t) => t.category === config.categoryList ? count + 1 : count,
0
);
if (categoryCount > config.taskCountLimit) {
logFailure(`任务数量限制:当前${categoryCount},超过上限${config.taskCountLimit}`);
return false;
}
}
if (config.enableSizeLimit) {
const size = Number(torrent.size);
if (size < config.sizeLimitRange[0] || size > config.sizeLimitRange[1]) {
logFailure(`种子大小${size}不在允许范围 ${config.sizeLimitRange.join(' - ')}`);
return false;
}
}
return true;
};
⚙️ 使用说明与建议
修改配置项:
categoryList
→ 指定分类(如 PT站分类名)taskCountLimit
→ 最大任务数sizeLimitRange
→ 接受的种子大小范围
- 日志路径:如需开启日志,将
enableLogging
设置为true
,日志文件将输出至/vertex/log22/log.txt
- 配合 RSS 任务自动触发下载过滤
🚀 二、删种规则脚本:限速上传下载 + 自动标记完成
✅ 功能说明
- 对特定分类(如
btschool
)应用限速规则; - 下载器连接验证;
- 上传立即限速,下载进度达到阈值后才限速;
- 进度达到
90%
后返回true
(可作为删种条件); - 支持日志记录执行状态。
📜 脚本内容
粘贴至 Vertex 面板 →【删种规则】中使用:
const CONFIG = {
TARGET_CATEGORY: "btschool",
ENABLE_LOGGING: false,
DOWNLOADER_ID: 'b65630e1',
DOWNLOAD_LIMIT: 100 * 1024, // 100KB/s
UPLOAD_LIMIT: 22 * 1024 * 1024 // 22MB/s
};
const logger = (() => {
if (!CONFIG.ENABLE_LOGGING) return { log: () => {} };
const fs = require('fs');
const path = require('path');
const LOG_PATH = '/vertex/log22/log.txt';
!fs.existsSync(path.dirname(LOG_PATH)) &&
fs.mkdirSync(path.dirname(LOG_PATH), { recursive: true });
return {
log: (message) => {
fs.appendFileSync(
LOG_PATH,
`${new Date().toISOString()} - ${message}\n`
);
}
};
})();
module.exports = (maindata, torrent) => {
if (torrent.category !== CONFIG.TARGET_CATEGORY) return false;
const client = global.runningClient[CONFIG.DOWNLOADER_ID];
if (!client) {
logger.log(`下载器未连接: ${CONFIG.DOWNLOADER_ID}`);
return false;
}
client.setSpeedLimit(torrent.hash, 'upload', CONFIG.UPLOAD_LIMIT)
.then(() => logger.log(`上传限速成功: ${torrent.name}`))
.catch(err => logger.log(`上传限速失败: ${torrent.name} | ${err}`));
if (torrent.progress >= 0.6) {
client.setSpeedLimit(torrent.hash, 'download', CONFIG.DOWNLOAD_LIMIT)
.then(() => logger.log(`下载限速成功: ${torrent.name}`))
.catch(err => logger.log(`下载限速失败: ${torrent.name} | ${err}`));
}
return torrent.progress >= 0.9;
};
📌 注意事项
模块 | 控制逻辑 | 默认开启 |
---|---|---|
分类过滤 | 仅目标分类才生效 | ✅ |
下载器验证 | 下载器未连接则中止处理 | ✅ |
上传限速 | 立即生效 | ✅ |
下载限速 | 下载进度 ≥60% 时生效 | ✅ |
返回条件 | 进度 ≥90% 后返回 true | ✅ |
🛠 配置建议
- 修改
DOWNLOADER_ID
与category
为你实际环境中的参数; - 若启用日志,请确保
/vertex/log22/
有权限写入; - 配合触发器(如“完成即删种”、“进度达标转存”)使用效果最佳。
🧠 总结:自动化 + 精细控制 = 高效挂机
通过这两个脚本,Vertex 用户可以实现更加智能的下载和删种策略,特别适合以下场景:
- 多站点多分类管理
- 精细控制下载任务数量与资源体量
- 刷流控制:限制上传、限制下载、暂停条件精细设定
- 高效利用资源,防止过载
你可以根据需要修改参数逻辑,甚至将两个规则合并应用,实现“能否下载 → 下载后限速 → 自动删种”这一完整闭环。