Linux安装Transmission与FlexGet 自动刷PT流量

这是不算原创的原创的文章。自己也是刚刚接触PT,并不是什么大能,写不出创新性很强的文章。但这篇文章确实是在我一路磕磕碰碰之后从集各个优点总结出来的,希望能对看到的你有所帮助。

教程适用于Debian9和Ubuntu16以上的系统,请安装前予以确认
默认以ROOT权限进行操作

1.安装Transmission

输入指令

apt-get update
apt-get install transmission-daemon -y

修改配置文件,由于安装完成后会自动运行,需要先停止运行才能更改。否则任何修改都无效

apt-get install -y nano
service transmission-daemon stop
nano /var/lib/transmission-daemon/info/settings.json

需要修改其中的部分内容

"alt-speed-enabled": false,  #限速,禁用
"dht-enabled": false,  #禁用DHT(不通过tracker寻找节点),PT需禁用,但BT下载设置为true会使得下载更快
"download-queue-enabled": true,   #下载队列限制
"download-queue-size": 50,    # 最大同时下载数,默认为5,太小不方便刷量
"lpd-enabled": false, #禁用LDP(本地节点发现,用于在本地网络寻找节点),PT最好禁用
"peer-limit-global": 960,   #全局最大连接用户数,带宽和cpu能力较强的话可以设置的较高,单核请设置为500以下
"peer-limit-per-torrent": 120, #单个种子最大连接用户数
"pex-enabled": false,  #禁用PEX(节点交换,用于同已与您相连接的节点交换节点名单),PT需禁用,但BT下载设置为true会使得下载更好
"rpc-password": "你的Transmission远程管理密码", 
"rpc-port": 8000,  #Transmission管理端口
"rpc-username": "你的Transmission远程管理用户名", 
"rpc-whitelist": "127.0.0.1",  #白名单地址,下面一行设置为true这行才有效
"rpc-whitelist-enabled": false, #不启用白名单,即任何网段均可远程管理

修改完成后保存(按Ctrl+X退出。这时会询问你是否需要保存修改,输入Y确认保存。下一步会让你输入想要保存的文件名,无需修改文件名直接回车就行)

通过指令,重新启动Transmission即可

service transmission-daemon start

可选步骤)安装transmission-web-control面板可以使得操作会更方便直观

wget https://github.com/ronggang/transmission-web-control/raw/master/release/install-tr-control-cn.sh
bash install-tr-control-cn.sh

这时,通过访问通过http:// 你的VPS的ip地址:8000,可以访问Transmission的we-bui

2.安装FlexGet

逐条执行以下指令(否则有可能出错)

apt-get install -y python-pip python-setuptools nano
pip install --upgrade pip
pip2 install flexget

修改FlexGet配置文件

tasks:
  ny:
    rss: https://nanyangpt.com/torrentrss.php?rows=10&linktype=dl&passkey=xxxxxxxx
    accept_all: yes
    content_size:
      min: 256
      max: 15360
    download: /var/lib/transmission-daemon/torrents
    transmission:
      host: 127.0.0.1
      port: 8000
      username: username
      password: password
  ttg:
    rss: https://totheglory.im/putrss.php?par=xxxxxxx&ssl=yes
    accept_all: yes
    content_size:
      min: 256
      max: 4000
    download: /var/lib/transmission-daemon/torrents
    transmission:
      host: 127.0.0.1
      port: 8000
      username: username
      password: password
web_server: 8080

简单的对几个参数简单说明下

  • tasks:表示添加多少个任务,一个代表一个站点,你可以在这个配置的基础上继续添加被的站点
  • ny | ttg : 这个只是任务的名称,可以随便取,改冒号前面的就可以
  • rss:PT站的RSS订阅链接
  • accept_all:如果需要筛选标题就选择 no,全部 rss 就选择 yes
  • content_size:可以筛选文件的大小,如上面就是 256M~4000M 之间
  • download:就是种子的下载位置,一个 task 可以对应一个位置,这个位置必须要存在才行!
  • transmission:写入之前设定的关于transmission的值即可
  • web_server:表示开启 flexget 的网页端,方便编辑 config.yml 文件,端口 8080 代表访问 ip:8080 即可访问 flexget 的 WebUI。
    更多客制化的内容可以点击这里进行详细了解

因为没有这个种子文件下载目录,需要先创建

mkdir /var/lib/transmission-daemon/torrents

FlexGet配合transmission还需要插件来进行支持,安装插件

pip2 install transmissionrpc

添加自动任务

crontab -e

在最后一行添加

*/5 * * * * /usr/local/bin/flexget -c /root/.flexget/config.yml execute

表示每5分钟更新一次RSS,可根据自己的需要调整长短

可选步骤)配置FlexGet的web-ui
设置 web 密码,注意不太太简单,否则不成功!用户名默认是 flexget

flexget web passwd 需要设定的flexget密码

开启 webui 后台运行

flexget daemon start --daemonize

打开 http:// 你的VPS的ip地址:8080 就能看到 Flexget 的 web 界面了,登录后即可在 config 处直接修改配置文件

一些Flexget的常用命令

  • flexget check : 用于检查 config.yml 配置文件是否有格式错误。
  • flexget –test execute : 手动模拟一次 RSS 操作,仅供测试,不会下载种子文件到本地。(注意 test 前是 2 个-,显示有问题)
  • flexget execute : 手动开始一次 RSS 下载,就等于正式 RSS 了一次。
  • flexget status : 查看 flexget 的 RSS 记录。

3.自动删除种子文件

先创建Shell文件

nano trans_cleanup.sh

其中内容为:

#! /bin/bash
#====================================================================
# trans_cleanup.sh
#
# Copyright (c) 2011, WangYan <[email protected]>
# All rights reserved.
# Distributed under the GNU General Public License, version 3.0.
#
# Monitor disk space, If the Over, delete some files.
#
# See: http://wangyan.org/blog/trans_cleanup.html
#
# V0.2, since 2012-10-29
#====================================================================
 
# The transmission remote login username
USERNAME="username"
 
# The transmission remote login password
PASSWORD="password"
 
# The transmission download dir
DLDIR="/var/lib/transmission-daemon/downloads"
 
# The maximum allowed disk (%)
DISK_USED_MAX="90"
 
# Enable auto shutdown support (Disable=0, Enable=1)
ENABLE_AUTO_SHUTDOWN="0"
 
# Log path settings
LOG_PATH="/var/log/trans_cleanup.log"
 
# Date time format setting
DATA_TIME=$(date +"%y-%m-%d %H:%M:%S")
 
#====================================================================
 
dist_check()
{
    DISK_USED=`df -h $DLDIR | grep -v Mounted | awk '{print $5}' | cut -d '%' -f 1`
    DISK_OVER=`awk 'BEGIN{print('$DISK_USED'>'$DISK_USED_MAX')}'`
}
 
dist_check
 
if [ "$DISK_OVER" = "1" ];then
        for i in `transmission-remote --auth $USERNAME:$PASSWORD -l | grep 100% | grep Done | awk '{print $1}' | grep -v ID`
        do
                [ "$i" -gt "0" ] && echo -n "$DATA_TIME [Done] " >> $LOG_PATH
                transmission-remote --auth $USERNAME:$PASSWORD -t $i --remove-and-delete >> $LOG_PATH 2>&1
                [ "$i" -gt "0" ] && sleep 10 && dist_check
                [ "$DISK_OVER" = "0" ] && break
        done
fi
 
if [ "$DISK_OVER" = "1" ];then
        for ii in `transmission-remote --auth $USERNAME:$PASSWORD -l | grep Stopped | awk '{print $1}' | grep -v ID`
        do
                [ "$ii" -gt "0" ] && echo -n "$DATA_TIME [Stopped] " >> $LOG_PATH
                transmission-remote --auth $USERNAME:$PASSWORD -t $ii --remove-and-delete >> $LOG_PATH 2>&1
                [ "$ii" -gt "0" ] && sleep 10 && dist_check
                [ "$DISK_OVER" = "0" ] && break
        done
fi
 
if [ "$DISK_OVER" = "1" ];then
        for iii in `transmission-remote --auth $USERNAME:$PASSWORD -l | grep -v Sum | awk '{print $1}' | grep -v ID`
        do
                [ "$iii" -gt "0" ] && echo -n "$DATA_TIME [Up or Down] " >> $LOG_PATH
                transmission-remote --auth $USERNAME:$PASSWORD -t $iii --remove-and-delete >> $LOG_PATH 2>&1
                [ "$iii" -gt "0" ] && sleep 10 && dist_check
                [ "$DISK_OVER" = "0" ] && break
        done
fi
 
if [ "$DISK_OVER" = "1" ];then
        rm -rf $DLDIR/*
fi
 
if [ "$ENABLE_AUTO_SHUTDOWN" = "1" ];then
        SHUTDOWN=1
        for STATUS in `transmission-remote --auth $USERNAME:$PASSWORD -l | awk '{print $9}'`
        do
                if [[ "$STATUS" = "Up" || "$STATUS" = "Uploading" ]];then
                        SHUTDOWN=0
                fi
        done
        TASK_TOTAL=`transmission-remote --auth $USERNAME:$PASSWORD -l | grep -Ev '(ID|Sum)' | wc -l`
        if [ "$TASK_TOTAL" -gt "0" ] && [ "$SHUTDOWN" -eq "1" ];then
                echo -n "$DATA_TIME " >> $LOG_PATH
                shutdown now >> $LOG_PATH 2>&1
        fi
fi

自行修改其中的username和password,以及DISK_USED_MAX=”90″,这个数值表示最大可占用的硬盘空间,超过以后就会自动删除pt种子。不要设置太大,谨防下载速度太快爆硬盘,会导致服务器无法连接。

创建自动任务,在crontab里添加:

*/1 * * * * /bin/bash /root/trans_cleanup.sh

每分钟检查一次硬盘空间占用

备注

  • 如果硬盘空间太小,可能会导致每个种子的分享率不高,按需要调节每个种子文件大小限制,或者减少添加的task
  • Transmission 由于本身自带的特点:下载完成后自动校验。这会导致CPU负载过高,目前没有什么太好的解决方法
  • 这种方式有欺骗tracker的效果,及文件已经删除了,但tracker会仍然认为你在做种。魔力值会加速增加,但具有位置风险

一些参考文献,十分感谢:
https://caltong.com/135
https://www.ljchen.com/archives/963
https://ymgblog.com/2018/04/30/396/

Last modification:October 15th, 2019 at 07:24 am
If you think my article is useful to you, please feel free to appreciate

Leave a Comment