前言

在PT世界中,由于转载行为的存在,通常各站会记录很多他站也存在的资源。在这种情况下,为了最大化分享效率,将资源分享给尽可能多的用户,同时也能获取各站的做种奖励,大多数PTer都会选择通过辅种进行多站做种。

辅种(Cross Seed):即将同一份文件同时在多个Tracker做种。注意的是,对于PT而言,辅种需要添加不同站点的种子而不能将同一个种子添加多个Tracker

对于大多数内站而言,IYUU 以及 IYUU Plus 均能实现精准辅种,但是由于IYUU的支持需要获取站点的种子信息,同时外站隐私要求较高,大多数外站均不支持IYUU自动辅种,因此本文将介绍通过Jackett实现外站辅种的方案。

工具介绍

Jackett

仓库官网: https://github.com/Jackett/Jackett

Jackett 是一个跨平台的聚合类种子资源索引器,使用它可以在多个Tracker上同时搜索需要的资源,由于Jackett提供API接口,十分方便其他工具对其进项调用。在本例中,Jackett也将作为搜索工具搜索待辅种目录的文件并通过API将相关信息发送给辅种工具进行处理。

jackett-search

Cross Seed AutoDL

仓库官网: https://github.com/BC44/Cross-Seed-AutoDL

前文提到,我们利用Jackett作为索引器检索本地资源并通过API将相关信息发送给相关工具,而 Cross Seed AutoDL 就是我们使用的辅种扫描工具。它使用Pyhon编写,支持跨平台使用,安装也十分简便。

该工具首先扫描本地的保存目录,然后发送请求到Jackett搜索相关的种子,再通过一系列内容比对(大小,名称等)获取到大致相似的种子文件并保存到相关目录,可以配合AutoTorrent来实现自动添加至种子客户端。

![Cross Seed AutoDL Work Flow](https://img.006900.xyz/imgs/cross-seed/Cross Seed AutoDL Work Flow.webp)

Cross seed

仓库官网: https://github.com/mmgoodnow/cross-seed

Cross Seed 依赖于Node,和 Cross Seed AutoDL类似,均支持跨平台使用,其原理也都是通过Jackett的API获取种子信息后进行比对来下载种子,该工具拥有一些Cross Seed AutoDL 没有的特性,例如:

  • Daemon 模式,可以在种子文件添加后自动开启扫描
  • Inject模式,扫描到需要的种子后自动添加到客户端(目前仅支持rtorrent以及qbittorrent)
  • 官方Docker支持

由于 Cross seed 拥有的这些实用特性,作者目前维护也较为频繁,后续我推荐使用 Cross seed 进行辅种处理。

Autotorrent

仓库官网: https://github.com/JohnDoee/autotorrent

Autotorrent 也是由Python编写的一个小工具,它能够扫描相关目录,自动添加相应的种子到相关客户端,目前支持以下种子客户端:

  • rtorrent

  • deluge

  • transmission

  • qbittorrent

服务搭建与使用

Jackett 搭建

Jackett 官方提供了编译完成的二进制文件,如果想要自行安装也十分简便。我推荐以下几种安装方法:

在Jackett搭建完毕之后,即可在浏览器上输入相关地址进入Jackett的配置与使用了,由于使用配置全程有图形化界面,这里便不在过多赘述,如果不懂得朋友可以参考以下文章或者留言求助:

Cross Seed AutoDL 安装与使用

使用简介

由于 Cross Seed AutoDL 只是一个单纯的Py脚本,因此安装十分简单:

  1. 克隆Github仓库:

    1
    git clone https://github.com/BC44/Cross-Seed-AutoDL.git
  2. 安装相关依赖:

    1
    pip3 install -r requirements.txt
  3. 相关用法:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    usage: CrossSeedAutoDL.py [-h] [-p] [-d delay] -i input_path -s save_path -u
    jackett_url -k api_key [-t trackers]
    [--ignore-history] [--strict-size]

    Searches for cross-seedable torrents

    optional arguments:
    -h, --help show this help message and exit
    -p, --parse-dir Optional. Indicates whether to search for the items inside
    the input directory as individual releases
    -d delay, --delay delay
    Pause duration (in seconds) between searches (default:
    10)
    -i input_path, --input-path input_path
    File or Folder for which to find a matching torrent
    -s save_path, --save-path save_path
    Directory in which to store downloaded torrents
    -u jackett_url, --url jackett_url
    URL for your Jackett instance, including port number
    if needed
    -k api_key, --api-key api_key
    API key for your Jackett instance
    -t trackers, --trackers trackers
    Tracker(s) on which to search. Comma-separated if
    multiple (no spaces). If ommitted, all trackers will
    be searched.
    --ignore-history Optional. Indicates whether to skip searches or downloads for files that have previously been searched/downloaded previously.
    --strict-size Optional. Indicates whether to match torrent search
    result sizes to exactly the size of the input path.

这里着重讲解一下 -p参数:如果运行时携带 -p 参数的话,脚本会将目录当做存储多个种子的目录,否者则会将目录当作一个种子。

用法示例

  • 扫描目录下的所有文件:

    1
    python3 CrossSeedAutoDL.py -p -i "D:\TorrentClientDownloadDir\complete" -s "D:\DownloadedTorrents" -u "http://127.0.0.1:9117" -k "cb42579eyh4j11ht5sktjswq89t89q5t"
  • 扫描单个文件:

    1
    python3 CrossSeedAutoDL.py -i "D:\TorrentClientDownloadDir\complete\My.Movie.2010.720p.mkv" -s "D:\DownloadedTorrents" -u "http://127.0.0.1:9117" -k "cb42579eyh4j11ht5sktjswq89t89q5t"
  • 扫描剧集包(通常为文件夹形式):

    1
    python3 CrossSeedAutoDL.py -i "D:\TorrentClientDownloadDir\complete\My.Show.Season.06.Complete" -s "D:\DownloadedTorrents" -u "http://127.0.0.1:9117" -k "cb42579eyh4j11ht5sktjswq89t89q5t"

定时任务

由于 Cross Seed AutoDL 没有Daemon模式,每次使用都需要运行一遍不太方便,因此在Linux上我们可以对其创建定时任务,方便其自动化运行:

首先输入命令 crontab -e,并在窗口中输入以下命令让其每天零点零一分运行一次

1
1 0 * * * python3 CrossSeedAutoDL.py -p -i "D:\TorrentClientDownloadDir\complete" -s "D:\DownloadedTorrents" -u "http://127.0.0.1:9117" -k "cb42579eyh4j11ht5sktjswq89t89q5t"

自动添加到 Transmission

由于 Cross Seed AutoDL只能下载到相关的种子文件,添加到种子客户端这个最后一公里依旧需要我们手动进行,尚不满足全自动辅种的要求,本节即是为了解决该问题而存在的。

上文说过,Autotorrent工具可以解决自动化添加种子的问题,但是该工具辅种的方案是添加一系列的链接来进行的,个人认为该方式容易打乱我硬盘的结构,不方便我进行整理,所以我放弃了该方案,有兴趣的朋友可以尝试使用一下。

对于使用 Transmission 的朋友,可以使用Github上的大佬分享的相关脚本实现种子的添加:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#!/bin/bash
# runs cross seed and ingests the generated torrents into transmission
torrentsDir=/home/seedbox/torrents #存放种子文件的目录
logFile=/home/seedbox/torrents/cross-seed.log #日志文件地址
passwd=user:pass # transmission 用户名称与密码

echo "cross-seed: `date` Starting search" >> ${logFile}

# run cross-seed
#/usr/local/bin/cross-seed search >> ${logFile} 2>&1

# look at the generated torrent files
find ${torrentsDir} | egrep -v "^${torrentsDir}$"| while read filename; do
# get the torrent name
grepString=`echo ${filename}| sed 's;^.*];;' | sed 's;\.torrent;;'`

# get the torrent id
torrentID=`transmission-remote --auth "${passwd}" --list | grep "${grepString}" | awk '{print $1}' | head -1`

# get the file location
location=`transmission-remote --auth "${passwd}" --torrent "${torrentID}" -i | grep Location:| awk '{print $2}'`

# Add the torrent into transmission
find ${torrentsDir} -name "*${grepString}*" -exec transmission-remote --auth "${passwd}" --start-paused -a {} --download-dir ${location} \;

# Remove the torrent file
find ${torrentsDir} -name "*${grepString}*" -exec rm -f {} \;

# log the addition
logger "cross-seed: added torrent ${filename}"
done
echo "cross-seed: `date` Finished search" >> ${logFile}

Cross Seed 安装与使用

目前我尚未开始使用该工具,等待后续使用以后再进行介绍更新….

总结

我们的辅种方案通常分为以下几个步骤:

  1. 扫描,扫描本地待辅种目录
  2. 检索,使用Jackett的API对相关网站进行检索
  3. 处理,再检索完毕之后根据一定的规则过滤出符合要求的种子并下载
  4. 做种,通过脚本或手工添加种子文件至客户端实现做种功能

Jackett 功能十分强大,无论是将其作为单纯的检索器帮助我们检索种子内容,还是通过API配合SonarrRadarr 实现自动化追剧,抑或是本文的自动化辅种都具有很好的效用。也希望大家多多利用工具,实现自己高效的PT生活。