改进版的PT自动工具

发布于 2021-04-16  223 次阅读


原文地址

项目地址: https://github.com/nickfox-taterli/goseeder

简而言之, 这个工具:

  • 不适合无限流量, 希望通过自动辅种获得收益的人.
  • 不适合拿着 24T,48T 大盘机的人, 也不适合只有 4G 硬盘的人.
  • 不适合觉得这篇内容过长, 懒得阅读就直接提问, 乱搞还说 BUG 的人.
  • 适合拥有众多小鸡 (N 台), 容量都不怎么大 (10G ~ 1000G), 并且网络有流量限制的人.
  • 适合 PT 佛系养老, 不想浪费众多小鸡的人, 并且懒得管 PT 站死活, 偶尔上去看看的那些人.

正因为此, 这个工具就有了. 之前我已经写过一个 Python 版本的, 但是哪个版本有以下几个问题.

  • 清理策略不完善, 偶尔会出现磁盘空间 0 的情, 偶尔过度清理, 比如一下子删除了所有任务.
  • 作弊功能基本鸡肋, 各站反作弊能力越来越强.
  • 磁盘或者网络过忙时候也会添加种子, 最后积累大量任务无法进行, 虽然最终跑满带宽, 但是上传收益低.
  • 无法对 HR 限制的 PT 网站处理, 种子可能会被提前删除.

这个配置就这么一个文件, 请参考 (config-example.json):

  • dbserver 是你在 MongoDB Altas 申请的数据库的连接字符串, 包括你的用户名和密码, 格式参考如下, 在 Mongodb Altas 控制面板可以直接取得.
  • node 是各 PT 网站的信息.
    • source 是 PT 网站的域名
    • passkey 玩过 PT 都懂
    • limit 即每次获取的数量上限, 如果该网站更新快, 就调大一些, 否则调小一些减轻 PT 网站压力, 推荐保留默认值.
    • enable 是否启用这个网站, 填 true 启用, false 就是暂时不用.
    • rule 网站规则 (目前是用于 HR, 满足其中一个条件才可以删除种子, 如果无 HR 请都调到 0 即可.)
      • HR 限制的最小做种时间
      • HR 限制的最小做种比率
  • server 是各小鸡 QB 的配置, Go 版本采用并行查询, 效率更高.
    • endpoint QB 的访问地址, 末尾不带斜杠.
    • username 登录用户名
    • password 登录密码
    • reamrk 方便记忆的名字
    • enable 是否启用这个小鸡, 填 true 启用, false 就是暂时不用.
    • rule 小鸡规则 (防止被 TOS 炸, 最大化利用率等用途, 如果不懂可以不动, 调整他可以获得更好的体验.)
      • concurrent_download 最大同时任务数, 任务数量过多, 磁盘压力和带宽压力都很大, 很容易达到瓶颈, 如果水管小, 则应该调小这个, 如果水管大则可以调大, 如果不想限制就设置很大的数值就可以, 注意任务过多导致网络过快可能会触发 TOS.
      • disk_threshold 触发清理功能的磁盘空间, 当磁盘空间小于这个数值, 就会触发种子清理, 会清理掉最老最无用种子, 单位是字节, 计算工具参考:https://www.flightpedia.org/convert-bytes-to-gigabytes.html
      • max_speed 是允许添加种子的最大速度, 比如你是 100Mbps 服务器, 理论满速是 12.8MB/s, 如果此时你的服务器速度已经达到 10MB/s, 这个时候添加种子就抢不到什么速度, 反而影响其他种子进度也落后于人, 影响最终分享率.
      • min_alivetime 种子最短存活时间, 避免某些种子下载之后没人下载, 然后被很快清理掉, 错过后期的做种好机会.
      • max_alivetime 种子最大存活时间, 必须大于 min_alivetime, 超过 max_alivetime 的种子会被优先删除.
      • min_tasksize 最小的种子大小, 如果种子小于这个大小就不要添加, 添加更大的种子可以获得更好的收益, 减轻磁盘压力, 相应地也会忽略掉不少任务, 设置为 0 接受任何种子.
      • max_tasksize 最大的种子大小, 如果种子大于这个数值, 就不要添加, 太大的种子占用空间而且收益不一定高, 如果想添加任何种子, 请把 max_tasksize 设置得很大.
      • max_disklatency 磁盘延迟达到这个数值时候, 不会添加任何种子, 避免因为长期磁盘占用而触发 TOS, 如果想忽略这个参数, 只需要把延迟调的很大就行.
{
  "dbserver": "mongodb+srv://username:password@cluster0.3cyul.mongodb.net/?retryWrites=true&w=majority",
  "node": [
    {
      "source": "pt.soulvoice.club",
      "passkey": "21232f297a57a5a743894a0e4a801fc3",
      "limit": 10,
      "enable": true,
      "rule": {
        "seeder_time": 0,
        "seeder_ratio": 0
      }
    },
    {
      "source": "www.nicept.net",
      "passkey": "21232f297a57a5a743894a0e4a801fc3",
      "limit": 10,
      "enable": true,
      "rule": {
        "seeder_time": 0,
        "seeder_ratio": 0
      }
    },
    {
      "source": "pt.msg.vg",
      "passkey": "21232f297a57a5a743894a0e4a801fc3",
      "limit": 10,
      "enable": true,
      "rule": {
        "seeder_time": 0,
        "seeder_ratio": 0
      }
    },
    {
      "source": "pt.btschool.club",
      "passkey": "21232f297a57a5a743894a0e4a801fc3",
      "limit": 10,
      "enable": true,
      "rule": {
        "seeder_time": 86400,
        "seeder_ratio": 1.2
      }
    },
    {
      "source": "www.haidan.video",
      "passkey": "21232f297a57a5a743894a0e4a801fc3",
      "limit": 10,
      "enable": true,
      "rule": {
        "seeder_time": 216000,
        "seeder_ratio": 1.5
      }
    }
  ],
  "server": [
    {
      "endpoint": "http://89.47.1.1:8080",
      "username": "admin",
      "password": "adminadmin",
      "remark": "Hostens (1024G)",
      "enable": true,
      "rule": {
        "concurrent_download": 5,
        "disk_threshold": 10737412742,
        "max_speed": 524288,
        "min_alivetime":3600,
        "max_alivetime":86400,
        "min_tasksize": 1073741274,
        "max_tasksize": 536870637122,
        "max_disklatency": 10000
      }
    },
    {
      "endpoint": "http://114.114.114.114:8080",
      "username": "admin",
      "password": "adminadmin",
      "remark": "Hostmem (60G)",
      "enable": true,
      "rule": {
        "concurrent_download": 5,
        "disk_threshold": 10737412742,
        "max_speed": 5242880,
        "min_alivetime":3600,
        "max_alivetime":86400,
        "min_tasksize": 1073741274,
        "max_tasksize": 536870637122,
        "max_disklatency": 10000
      }
    }
  ]
}

那么如何安装呢, 先把配置文件放到 / etc/goseeder.conf, 然后执行下面几行就可以了.

curl https://raw.githubusercontent.com/nickfox-taterli/goseeder/master/goseeder.service > /etc/systemd/system/goseeder.service
curl -L https://github.com/nickfox-taterli/goseeder/releases/download/v1.0/goseeder > /usr/local/bin/goseeder
systemctl start goseeder
systemctl enable goseeder

如何查看安装当前信息呢?

systemctl status goseeder  --no-pager --full

或许明日太阳西下倦鸟已归时