Sign inSign up

lswl/rmr

By lswl

•Updated over 4 years ago

Image
1

1.9K

lswl/rmr repository overview

⁠RMR - Rss Manage Reseed

RMR - 一款支持 rss/抓取免费种/自动删除/自动辅种/客户端状态监控 的脚本工具 cover.jpg

⁠功能点

⁠rss

支持根据 种子大小/关键词/免费状态/ HR 状态 筛选

支持为添加种子限速

支持将 rss 结果推送至 Telegram

⁠抓取免费种

根据 页面标签 确定种子优惠状态, 仅推送 free 或 2xfree 种子.

⁠抓取流程以及特别说明
⁠流程:

抓取 rss => 根据筛选条件预筛 => 请求种子页面 => 根据优惠状态确定是否推送种子至客户端

⁠特别说明:

每个种子 仅会在获取 rss 列表之后请求一次种子页面, 因此某些后加的种子优惠不会推送!

请结合站点功能合理使用本功能, 比如仅 rss 官种的情况下, 请不要使用本功能!

⁠自动删除

根据 硬盘剩余空间/做种时间/下载时间 等信息删除种子.

⁠自动辅种 (实验性功能)

在 rss 的同时, 比对新种与所连接的客户端正在做种的种子, 若判断为同一种子, 则自动跳过检验辅种.

⁠判断流程以及特别说明
⁠流程:

抓取 rss => 根据 大小 预筛 => 下载种子并比对顶层文件名是否一致

⁠特别说明:

判断过程略简单, 虽然说根据大小以及顶层文件夹基本可以判断是否是同意种子, 但是不能排除掉部分例外情况, 因此建议在 排除官种 的情况下使用本功能.

并且, 使用本功能可能会造成账号受到 警告或者封禁, 慎用.

⁠客户端状态监控

根据设定好的频率将 客户端的上传下载速度\客户端剩余空间\上传或下载在前列的种子信息 推送至 Telegram.

⁠安装与配置

支持 docker 与手动安装.

推荐使用 docker 安装

⁠安装 - docker

docker 链接 => lswl/rmr⁠

初始数据库文件 => sql.db⁠

# $DB_FILE 为种子 hash 数据库保存路径, 即下载初始数据库文件后的路径
# $TASK_YAML 为任务清单配置文件的保存路径, 文件示例会在 配置 章节中提到
# $LOGS_FOLDER 为日志文件的保存目录, 注意是 目录
docker run -d \
  --name rmr \
  -v $DB_FILE:/db/sql.db \
  -v $TASK_YAML:/config/task.yaml \
  -v $LOGS_FOLDER:/logs \
  lswl/rmr
⁠安装 - 手动安装

手动安装仅适用于有 node npm 相关经验的用户.

git 链接 => lswl/rmr⁠

初始数据库文件 => sql.db⁠

环境依赖: nodejs npm

将仓库 clone 到本地后, 进入 rmr 文件夹执行

  npm i --save # 执行此命令可能需要提前安装包括但不限于以下依赖: python libc-dev make gcc g++
  npm run start

除此之外, 也可以使用 pm2 运行.

npm i --save
npm i -g pm2
pm2 start ./pm2.yaml
⁠配置

配置文件是 .yaml 文件, .yaml 文件对缩进以及格式的要求较为严格, 在修改时请注意格式.

配置文件例子: example.yaml⁠

telegrams:
  - &Telegram
    alias: Telegram
    botToken: '123456789:bottoken' # Telegram Bot Token 若不推送可不修改。

clients:
# 客户端例 1
  -
    clientAlias: qb                  # 客户端别名
    type: qBittorrent                     # 客户端类型 仅支持 qBittorrent 与 deluge, 区分大小写
    username: username                    # 用户名, 仅 客户端类型 为 qBittorrent 时需要
    password: password                    # 密码
    clientUrl: http://10.10.10.10:7302    # 客户端 webui 链接
    pushMessage: true                     # 是否向 Telegram 推送消息
    telegram: *Telegram                   # telegram *Telegram 表示 引用前文提到的 &Telegram, 用此选择推送使用的机器人
    torrentsChannel: -1234567890          # 客户端状态信息推送频道 id
    notifyChannel: -1234567891            # rss 通知推送频道 id
    cron: '*/4 * * * * *'                 # 客户端 maindata 更新 cron 表达式, 必填
    autoReannounce: true                  # 是否在种子添加之后 4 分钟左右自动汇报
    maxSpeed: 83886080                    # 最大速度, 若客户端 上传速度 或 下载速度 在本速度以上, 则不添加种子
    sameServerClients: [0, 1]             # 同一服务器的客户端, 在计算 最大速度 时计算同一服务器 所有客户端 的速度和
                                          # 若注释 sameServerClients 行, 则只计算本客户端速度, [0, 1] 指 客户端索引
                                          # 若填写 [0, 1], 应当为 0 和 1 同时填写
    autoDelete:                           # 自动删种
      enable: true                        # 自动删种使能, 设置为 false 时, 不启用自动删种
      cron: '* * * * *'                   # 自动删种任务 cron 表达式
      # 以下为删种条件
      maxFreeSpace: 53687091200           # 最大剩余空间, 若客户端剩余空间 低于 本大小时, 删除种子, 本行不可注释, 若不想删种留 -1 即可, 单位为 Byte
      # maxRatio: 3                       # 最大分享率, 种子分享率超过本值时删除, 本行可注释, 注释后不因分享率删种
      maxAvailability: 3                  # 最大可用率, 种子可用率超过本值时删除, 本行可注释, 注释后不因可用率删种
      maxSeedTime: 345600                 # 最大做种时间, 种子 做种时间 超过本值时删除, 本行可注释, 注释后不因做种时间删种, 单位为 秒
      maxLeechTime: 86400                 # 最大下载时间, 种子 下载时间 超过本值时删除, 本行可注释, 注释后不因下载时间删种, 单位为 秒
      minSpeed: 31457280                  # 最小速度, 若客户端 上传速度 在本速度以上, 则不删除种子, 仅适用于 maxFreeSpace 与 maxAvailability 引起的删种操作, 单位为 Byte
      excludeCatagory:                       # 排除的类别, qb 客户端内为 分类(Catagory), de 为 label
        - dont_delete
        - seeding
# 客户端例 2 
  -
    clientAlias: de
    type: deluge
    password: password
    clientUrl: http://10.10.10.10:7303
    pushMessage: true
    telegram: *Telegram
    torrentsChannel: -1234567890
    notifyChannel: -1234567891
    cron: '*/4 * * * * *' # 每四秒种一次
    autoReannounce: true
    maxSpeed: 83886080
    sameServerClients: [0, 1]             # 同一服务器的客户端, 在计算 最大速度 时计算同一服务器 所有客户端 的速度和
                                          # 若注释 sameServerClients 行, 则只计算本客户端速度, [0, 1] 指 客户端索引
                                          # 若填写 [0, 1], 应当为 0 和 1 同时填写
    autoDelete:
      enable: false
      cron: '* * * * *'
      maxFreeSpace: 53687091200

rssTasks:
# rss 任务例 1: 正常 rss
  - 
    taskName: 'task 1'              # 任务名称
    rssUrl: 'https://example.top/torrentrss.php?passkey=passkey'      # rss url
    enable: true                    # 任务使能(开关)
    client: 0                       # 客户端索引, 从 0 开始, clients 下 客户端的序号
    autoReseed: false               # 是否开启自动辅种, 为 true 时开启自动辅种
    onlyReseed: false               # 是否仅开启自动辅种, 为 true 时仅限自动辅种
    skipSameTorrent: true           # 是否跳过相同种子, 在添加种子前验证 所有 客户端内是否存在 同一 种子, 若存在, 则跳过
    minSize: 10737418240            # 最小种子大小, 种子在本大小以下的种子, 不会添加, 单位为 Byte
    maxSize: 1073741824000          # 最大种子大小, 种子在本大小以上的种子, 不会添加, 单位为 Byte
    savePath: '/Downloads'          # 保存路径, 不填写 (必须注释本行才算不填写) 则使用默认路径
    catagory: 'seeding'                  # 标签, 若无需要, 请注释, 若填写, 请注意是否应该关闭 qb 的 自动管理种子 功能
    conditions:                     # 关键词, 支持 包含 与 不包含 两种情况, 为数组, 各个元素为 并且 的关系
    # type 类型, 仅支持 include 与 exclude, 分别为 包含 与 不包含
      -
        type: include               # 类型为包含
        words:                      # 关键词, 类型为 包含 时, 各个元素为 或 的关系
      -
        type: exclude               # 类型为不包含
        words:                      # 关键词, 类型为 包含 时, 各个元素为 并且 的关系
    speedLimit:                     # 限速
      upload: 0                     # 上传, 单位为 Byte, 0 为不限速
      download: 0                   # 下载, 单位为 Byte, 0 为不限速
    cron: '* * * * *'
# rss 任务例 2 仅自动辅种 (自动辅种属于 实验性 功能, 慎用)
  - 
    taskName: 'task 2'
    rssUrl: 'https://example.net/torrentrss.php'
    enable: true
    client: 0
    autoReseed: true                # 开启自动辅种
    onlyReseed: true                # 开启仅辅种功能
    minSize: 1073741824
    maxSize: 1073741824000
    conditions:
      -
        type: include
        words: 
      -
        type: exclude
        words: 
          - 'PTH'                   # 排除掉关键词 PTH, 避免辅到官种
          - 'PTHome'
    speedLimit:
      upload: 0
      download: 0
    cron: '* * * * *'
# rss 任务例 3  抓取免费种, 避免 HR
  - 
    taskName: free
    rssUrl: 'https://example.org/torrentrss.php'
    cookie: 'cookie'                # cookie 需要抓取 免费种 或 HR 时必须填写.
    enable: true
    client: 0
    autoReseed: true
    onlyReseed: false               # 关闭 仅辅种
    skipSameTorrent: true
    scrapeFree: true                # 是否开启抓取免费种
    scrapeHr: true                  # 是否开启抓取 HR 并避免
    minSize: 1073741824
    maxSize: 1073741824000
    conditions:
      -
        type: include
        words: 
      -
        type: exclude
        words: 
          - 'example'                  # 排除官种关键词
    speedLimit:
      upload: 0
      download: 0
    cron: '* * * * *'

Tag summary

Content type

Image

Digest

Size

70.5 MB

Last updated

over 4 years ago

docker pull lswl/rmr