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_IDcategory 为你实际环境中的参数;
  • 若启用日志,请确保 /vertex/log22/ 有权限写入;
  • 配合触发器(如“完成即删种”、“进度达标转存”)使用效果最佳。

🧠 总结:自动化 + 精细控制 = 高效挂机

通过这两个脚本,Vertex 用户可以实现更加智能的下载和删种策略,特别适合以下场景:

  • 多站点多分类管理
  • 精细控制下载任务数量与资源体量
  • 刷流控制:限制上传、限制下载、暂停条件精细设定
  • 高效利用资源,防止过载

你可以根据需要修改参数逻辑,甚至将两个规则合并应用,实现“能否下载 → 下载后限速 → 自动删种”这一完整闭环。

最后修改:2025 年 06 月 21 日
如果觉得我的文章对你有用,请随意赞赏