你好,收割机!你好,收割机!
首页
收割机
通用教程
首页
收割机
通用教程
  • 收割机

    • 01. 收割机简介
    • 02. 安装教程
    • 03. 站点导入
    • 04. 使用指南
    • 05. 常见问题
    • 06. SSH 使用
    • 07. 企业微信
    • 08. 自行适配
    • 09. 自定义主题
  • 通用教程

    • 阿里云盘
    • 百度 OCR
    • CookieCloud
    • Django 密码错误处理
    • Tailscale 内网互访
    • Telegram 机器人
    • 各种 NAS 进入容器命令行
    • 常用内网穿透

自行适配站点

PT站点众多,一个人难以完全收集,全部适配就成了难题,现在开放自定义配置文件功能,各位大佬可以去哔哩哔哩大学简单学习一下Xpath,就可以参照已经有的配置文件自行适配站点了

2025.12.15
page_search = [
  "torrents.php?search={}", # NP站点基本都支持
  "search.php?search={}",   # 新站基本都支持
  "special.php?search={}",  # 站点自定义的特殊页面
  "live.php?search={}",     # 站点自定义的特殊页面
] # 种子搜索页面,大括号同上

适配教程

  1. 观察站点,注意界面风格与显示效果

  2. 找一个风格基本一致的站点作为基础模板来适配新站点

  3. 开始适配

  4. 适配完成后将配置文件放入 sites 文件夹

  5. 清除站点配置缓存或者重启容器

  6. 加入收割机助手插件

    1. 将下载的插件解压缩,在根目录找到manifest.json,用文本编辑器(推荐:vscode,sublime,MarsCode等)打开,

      ​

    2. 找到文件中的两个 matches ,随便找一个域名,复制,并将网址改成你适配的站点的网址,保存后重新加载插件即可

      img.png

      img_1.png

前置教程

导出内置站点配置文件

  1. 进入 NAS 终端

  2. 输入命令:

    # 格式
    # OPTIONS 表示参数,一般不需要
    # CONTAINER 表示容器名或者容器 Id
    # SRC_PATH 表示源路径
    # DEST_PATH 表示目标路径
    # 从主机复制到docker
    # docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH
    # 从docker复制到主机
    # docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
    # 示例如下 表示从容器的/app/internal下复制所有文件到本地的用户主目录下的 APP 文件夹内,*可以替换为配置文件名称,比如:1pt.toml
    docker cp harvest:/app/internal/* ~/app/ 
    docker cp harvest:/app/internal/1pt.toml ~/app/ 
    

使用教程

  1. 修改文件与name字段,两者保持一致,比如文件名是:收割机,那么name字段也要是收割机img_2.png

    name = "收割机"
    
  2. 修改域名:删除原有的域名,按照相同的格式填上域名,不要忘记域名后面的/

    url = ["https://shougeji.zip/", ] # 站点域名,多个域名用`,`隔开
    
  3. iyuu字段:如果是IYUU支持的站点,填写本站在IYUU中的站点ID,如果不支持,请填0

    iyuu = 0
    
  4. 检查站点功能开关:

    sign_in = true # 签到开关,无需签到的站点或者无法签到的站点请设置为false
    get_info = true # 抓取站点信息
    repeat_torrents = true # 辅种,不支持IYUU和PiecesHash辅种的请设置为False
    brush_free = true # 免费刷流,未启用,忽略
    brush_rss = true # RSS刷流,未启用,忽略
    hr_discern = false # 是否开启HR种子下载,未启用功能,忽略
    search_torrents = true # 是否支持种子搜索,未启用,忽略
    pieces_repeat = true # 是否支持pieces-hash辅种
    proxy = true # 站点是否使用代理,为false是自动屏蔽代理
    alive = true # 站点存活与否
    
  5. 检查各个访问链接是否正确:

    page_index = "index.php" # 主页
    page_torrents = "torrents.php?incldead=1" # 种子列表也
    page_sign_in = "attendance.php" # 签到页
    page_control_panel = "usercp.php" # 控制面板页
    page_detail = "details.php?id={}" # 个人主页,大括号不要改,这里会自动填入站点UID
    page_download = "download.php?id={}&passkey={}" # 种子下载链接,同上
    page_user = "userdetails.php?id={}" # 个人详情页,同上
    page_search = [
     "torrents.php?search={}", # NP站点基本都支持
     "search.php?search={}",   # 新站基本都支持
     "special.php?search={}",  # 站点自定义的特殊页面
     "live.php?search={}",     # 站点自定义的特殊页面
    ] # 种子搜索页面,大括号同上
    page_message = "messages.php" # 短消息页面
    page_hr = "myhr.php?hrtype=1&userid={}" # HR页面
    page_leeching = "getusertorrentlistajax.php?userid={}&type=leeching" # 吸血中,下载中的种子,未启用
    page_uploaded = "getusertorrentlistajax.php?userid={}&type=uploaded" # 上传中的种子 未启用
    page_seeding = "getusertorrentlistajax.php?userid={}&type=seeding" # 做种的种子列表
    page_completed = "getusertorrentlistajax.php?userid={}&type=completed"  # 已完成的种子列表 未启用
    page_mybonus = "mybonus.php" # 魔力详情页
    page_viewfilelist = "viewfilelist.php?id={}" # 种子文件列表页,暂未启用
    imdb_search = "torrents.php?search_area=4&search={}" # 通过IMDB ID搜索入口
    page_pieces_hash_api = "api/pieces-hash" # pieces-hash辅种接口
    
  6. 站点信息相关

    my_invitation_rule = "//span/a[contains(@href,'invite.php?id=')]/following-sibling::text()[1]" # 邀请数量
    my_time_join_rule = "//td[contains(text(),'加入')]/following-sibling::td/span/@title" # 注册时间
    my_latest_active_rule = "//td[contains(text(),'最近动向')]/following-sibling::td/span/@title" # 最近访问时间
    my_uploaded_rule = "//font[@class='color_uploaded']/following-sibling::text()[1]" # 上传量
    my_downloaded_rule = "//font[@class='color_downloaded']/following-sibling::text()[1]" # 下载量
    my_ratio_rule = "//font[@class='color_ratio'][1]/following-sibling::text()[1]" # 分享率
    my_bonus_rule = "//a[@href='mybonus.php']/following-sibling::text()[1]" # 魔力值
    my_per_hour_bonus_rule = "//h1[contains(text(),'每小时获得的合计')]/following::table[1]//tr[2]/td[last()]/text()" # 时魔,在魔力页面测试
    my_score_rule = "//td[contains(text(),'分')]/following-sibling::td/text()[1]" # 做种积分
    my_level_rule = "//table[@id='info_block']//span/a[contains(@class,'_Name') and contains(@href,'userdetails.php?id=')]/@class" # 用户等级信息
    my_passkey_rule = "//td[contains(text(),'密钥')]/following-sibling::td[1]/text()" # Passkey密钥,控制面板页面
    my_uid_rule = "//table[@id='info_block']//span/a[contains(@class,'_Name') and contains(@href,'userdetails.php?id=')]/@href" # UID,所有页面
    my_email_rule = "//td[contains(text(),'邮箱')]/following-sibling::td[1]//text()" # 20250505 新增项目,注册邮件地址,一般在控制面板使用,
    my_username_rule = "//table[@id='info_block']//span/a[contains(@class,'_Name') and contains(@href,'userdetails.php?id=')]/b/text()" # 20250505 新增项目,用户名,所有页面
    my_hr_rule = "//a[@href='myhr.php']//text()" # H&R
    my_leech_rule = "//img[@class='arrowdown']/following-sibling::text()[1]" # 下载中,吸血中
    my_publish_rule = "//p/preceding-sibling::b/text()[1]" # 已发布,未启用
    my_seed_rule = "//img[@class='arrowup']/following-sibling::text()[1]" # 做种中
    my_seed_vol_rule = "//p/preceding-sibling::div/div/text()[1]" # 做种体积,在做种列表页面,部分站点在个人主页
    my_mailbox_rule = "//a[@href='messages.php']/font[contains(text(),'条')]/text()[1]" # 邮件提示信息
    my_message_title = "//img[@alt='Unread']/parent::td/following-sibling::td/a[1]//text()" # 短消息标题
    my_notice_rule = "//a[@href='index.php']/font[contains(text(),'条')]/text()[1]" # 公告提示消息
    my_notice_title = "//td[@class='text']/div/a//text()" # 公告标题
    my_notice_content = "//td[@class='text']/div/a/following-sibling::div" # 公告内容
    
    
  7. 种子列表相关

    torrents_rule = "//table[@class='torrents']/tr" # 种子列表,测试时看到的数字应该与当前页面的种子数量一致
    torrent_title_rule = ".//td[@class='embedded']/a/b/text()" # 种子标题
    torrent_subtitle_rule = ".//a[contains(@href,'detail')]/parent::td/text()[last()]" # 副标题
    torrent_detail_url_rule = ".//td[@class='embedded']/a[contains(@href,'detail')]/@href" # 详情链接
    torrent_category_rule = ".//td[@class='rowfollow nowrap'][1]/a[1]/img/@title" # 种子分类
    torrent_poster_rule = ".//table/tr/td[1]/img/@src" # 海报
    torrent_magnet_url_rule = ".//td/a[contains(@href,'download.php?id=')]/@href" # 下载链接
    torrent_size_rule = ".//td[5]/text()" # 种子大小
    torrent_progress_rule = ".//div[contains(@title,'ing')]/@title" # 下载进度
    torrent_hr_rule = ".//table/tr/td/img[@class='hitandrun']/@title" # HR
    torrent_sale_rule = ".//img[contains(@class,'free')]/@alt" # 免费促销信息
    torrent_sale_expire_rule = ".//img[contains(@class,'free')]/following-sibling::font/span/@title" # 促销到期时间
    torrent_release_rule = ".//td[4]/span/@title" # 发布时间
    torrent_seeders_rule = ".//a[contains(@href,'#seeders')]/text()" # 做种人数
    torrent_leechers_rule = ".//a[contains(@href,'#leechers')]/text()" # 下载人数
    torrent_completers_rule = ".//a[contains(@href,'viewsnatches')]//text()" # 完成人数
    torrent_tags_rule = ".//a[contains(@href,'detail')]/../span[contains(@class,'tags')]/text()" # 种子标签
    
  8. 种子详情页相关

    detail_title_rule = "//h1/text()[1]" # 种子标签
    detail_subtitle_rule = "//td[contains(text(),'副标题')]/following-sibling::td/text()[1]" # 副标题
    detail_download_url_rule = "//td[contains(text(),'种子链接')]/following-sibling::td/a/@href[1]" # 下载链接
    detail_size_rule = "//td//b[contains(text(),'大小')]/following::text()[1]"  # 种子大小
    detail_category_rule = "//td/b[contains(text(),'类型')]/following-sibling::text()[1]" # 种子分类
    detail_count_files_rule = "//td/b[contains(text(),'文件数')]/following-sibling::text()[1]" # 资源文件数目
    detail_hash_rule = "//td/b[contains(text(),'Hash')]/following-sibling::text()[1]" # 种子 hash
    detail_free_rule = "//h1/b/font/@class" # 促销
    detail_free_expire_rule = "//h1/b/span/@title" # 促销到期时间
    detail_douban_rule = "//td/a[starts-with(@href,'https://movie.douban.com/subject/')][1]" # 豆瓣链接
    detail_imdb_rule = "//a[@class='faqlink' and starts-with(@href,'https://www.imdb.com/title/')]/@href" # imdb链接
    detail_poster_rule = "//td/a/span[contains(text(),'简介')]/../../following-sibling::td//img[1]/@src" # 海报
    detail_tags_rule = "//td[contains(text(),'标签')]/following-sibling::td//text()" # 标签
    detail_hr_rule = "//h1/img[@class='hitandrun']/@title" # HR
    
  9. 用户等级信息

    [level.User] # 固定格式 level.用户等级
    level_id = 1 # 用户等级ID,从1开始逐级+1
    level = "User" # 等级名称,与level.后面保持一致
    days = 0 # 升级所需周数
    uploaded = "0" # 升级所需上传量,格式:120GB,1024GB,3TB
    downloaded = "0" # 升级所需下载量,格式同上
    bonus = 0.0 # 升级所需魔力,整数的后面加上.0
    score = 0 # 升级所需做种积分
    ratio = 0.0 # 升级所需分享率
    torrents = 0 # 发种数目
    leeches = 0 # 做中暑
    seeding_delta = 0.0 # 做种
    keep_account = false # 是否达到保留账号等级
    graduation = false # 是否毕业
    rights = "新用户的默认级别。只能在每周六中午12点至每周日晚上11点59分发布种子。" # 当前等级的权益
    
    [level.VIP] # VIP等级基本可以保持不动,按照站点信息修改等级权益即可
    level_id = 0
    level = "VIP"
    days = 0
    uploaded = "0"
    downloaded = "0"
    bonus = 0.0
    score = 0
    ratio = 0.0
    torrents = 0
    leeches = 0
    seeding_delta = 0.0
    keep_account = true
    graduation = true
    rights = "1.VIP贵宾会员期限内不受系统分享率限制,可以在贵宾期限内无限制下载。可以在贵宾期限内无视H&R规则,畅快下载;2.VIP贵宾会员期限内不会因分享率过低而被系统封禁,免除自动降级,贵宾期限内不计算下行流量;3.VIP贵宾会员期限内开启排行榜查看权限;4.VIP贵宾会员期限内无视每年的年终考核和年中考核;5.拥有捐赠者黄星标识的会员,每小时做种获取魔力值双倍的奖励。"
    
    

xpath调试教程

  1. F12打开开发者工具,选择元素选项,在内容上点一下

    img_3.png

  2. ctrl+F或者command+F打开查找框

    img_4.png

  3. 把XPATH规则填入进去按回车,后面会显示当前找到了几条元素,如果是1/1,恭喜,规则可以用,如果是0就是没找到,有很多条就是有很多规则相同的元素,需要自行分析一下修改规则,上面示例中就是在种子详情页获取种子下载链接的Xpath(获取页面中的a链接的网址,指定a链接的网址中包含download.php和passkey字段)

tips:

自行测试

  1. 修改容器日志等级为DEBUG,参考开启调试后台:开启调试后台
  2. 将配置文件放入映射的sites文件夹中
  3. 清理站点配置缓存
  4. 添加站点
  5. 签到,更新数据来一套,同时注意观察docker实时日志,找到出错的字段,然后修改
最近更新: 2025/12/17 12:32
Contributors: ngfchl
Prev
07. 企业微信
Next
09. 自定义主题