Flexget 进阶。自动下载与删除。

安装 flexget

flexget 需要 python2.7, 3.4, 3.5 或者 3.6。(居然支持3.6了 ( ̄▽ ̄)/ )

命令

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
sudo pip3 install flexget

flexget -V # 检查版本
flexget check # 检查配置文件
flexget --test execute # 测试
flexget status # 状态
flexget --db-cleanup # 初始化 SQLite数据库
flexget execute # 运行

which flexget # 查看安装路径,用于 crontab 定时任务

crontab 配置参考

Control daemon:

1
2
3
sudo status flexget
sudo stop flexget
sudo start flexget

yml 配置文件

 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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
templates:
  default:
    transmission:
      host: localhost
      port: 9091
      username: username
      password: 'password'

    free_space:
      path: /srv/ftp/data
      space: 10240

    download: /home/rc/Downloads

  ##----------------##
  limit_size:
    content_size:
      min: 512
      max: 61440
      strict: no

  ##----------------##
  clean:
    clean_transmission:
      enabled: yes
      host: localhost
      port: 9091
      username: username
      password: 'password'
      finished_for: 7 days
      tracker: xxxxxxx|xxxxx
      delete_files: yes
    disable: details

  ##----------------##
  ttg_wiki:
    if:
      - "'1080p' in title": reject
      - "'720p' + 'WiKi' in title": accept
    
tasks:
  byr_test:
    rss: https://xxxxx.xxx
    accept_all: yes 
    template:
      - default
      #- limit_size
    content_size:
      min: 52
      max: 6144
      strict: no
    transmission:
      ratio: 2
      path: /srv/ftp/data

  ##----------------##
  wiki:   
    rss: https://xxxxx.xxx
    accept_all: yes 
    template:
      - default
      - limit_size
      - clean 
    transmission:
      #ratio: 2
      path: /srv/ftp/data
 
  ##----------------##
  hdsky:
    rss: https://xxxxx.xxx
    template:
      - default
      - clean
    if:
      - "'Complete' in title": reject
      - "'iPad' in title": accept
    content_size:
      min: 400
      max: 10240
      strict: no
    transmission:
      ratio: 2
      path: /srv/ftp/mp4
  
  ##----------------##

# 号注释,yml 需要严格对齐,使用两个空格缩进,形成代码块,yml 文件的语法格式:字段+冒号+空格+内容

templates: # 模板。

tasks: # 任务。

transmission 模块需要安装,另外,transmission-daemon或者 GUI 需要设置 rpc。

模块transmission password 记得加上引号。

1
pip install transmissionrpc

space 单位 M,content_size 一样,用于限制大小。download 放的是torrent文件路径。path 为种子内容下载路径。

具体可以参考 官方文档

使用 transmission 模块和使用 watch-dir 相比,更灵活更方便,对不同的 rss ,可以设置不同的分享率 ratio ,以及不同的下载路径 path 。但是添加了的 torrent 文件需要自己写其他脚本删除或者移动。参见其他

后续

使用 flexget 的自动删种可能效果不是很好,需要使用另外的脚本处理。

待续……

参考1参考2 transmission-remote参考3

其他

如果想在种子发布一段时间后猜开始下载,比如越过 新种免费期,可以使用下面的脚本配合 watch-dir 实现。

 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
#!/bin/bash
#author [email protected]
#date 2018-05-07
#-----------设置-------------#
# flexget torrent 下载路径
flexgetPath="/home/rachpt/Downloads/temp/"
# transmission watch-dir
autoDownloadPath="/home/rachpt/Downloads/ttg/"
# 间隔时间,秒
intervalsTime=25200
#----------------------------#
filelist=$(find $flexgetPath -iname "*.torrent*")

# 使用换行分割
IFS_OLD=$IFS
IFS=$'\n'

for filename in $filelist
do  
	modifiedTime=`stat -c %Y "$filename"`
    currentTime=`date +%s`

	if [  $[$currentTime - $modifiedTime] -gt $intervalsTime ]
	then
		mv -f "$filename" "$autoDownloadPath${flexgetPath##*/}"
	fi
done
IFS=$IFS_OLD

<span id="tr-auto-delete">transmission 完成下载后自动移动种子文件到指定文件夹脚本。

 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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#!/bin/bash
# author [email protected]
# required dumptorrent to find the real name of torrent
# get dumptorrent here: https://sourceforge.net/projects/dumptorrent/files/
#----------------设置------------------#
dumptorrentPath="/usr/local/bin/dumptorrent"
flexgetPath="/home/rachpt/Downloads/ttg/"
moveTotPath="/home/rachpt/Downloads/finish/"
logoPath="/home/rachpt/Downloads/finish/info"

#----------------日志函数---------------#
function printLogo {
	echo "=================================" >> $logoPath
	echo "匹配成功"  >> $logoPath
	echo "下载到了:"$TR_TORRENT_DIR >> $logoPath
	echo "种子编号:"$TR_TORRENT_ID >> $logoPath
	echo -e "于:"$TR_TIME_LOCALTIME " \c" >> $logoPath
	echo "完成对:"$TR_TORRENT_NAME" 的移动!" >> $logoPath
}

#----------------处理空格---------------#
function moveBlank {
	find "$1" -name "* *" |
	while read name
	do
		na=$(echo $name | tr ' ' '.')
		mv "$name" $na
	done
}
#--------------移动种子文件-------------#
moveBlank $flexgetPath

# 生成点分割文件名
function createMoveToPath {
	dotTrPath=`echo "$newname" | sed 's/[ ][ ]*/\./g'`

	if [ -n $dotTrPath ]
	then
		totalMoveToPath="$moveTotPath$dotTrPath.torrent"
	else
		totalMoveToPath="$moveTotPath$newname.torrent"
	fi
}

filelist=$(find $flexgetPath -iname "*.torrent.*")
# 使用换行分割
IFS_OLD=$IFS
IFS=$'\n'

for filename in $filelist
do  
	newname=`$dumptorrentPath "$filename" | gawk 'BEGIN{FS=":"} /Name/{print $2}'`
    newname=`echo "$newname" | sed 's/^ [ ]*//g'`

	if [ "$newname" = "$TR_TORRENT_NAME" ]
	then
		createMoveToPath
		mv -f "$filename" "$totalMoveToPath"  >> $logoPath

		printLogo
	fi
done
IFS=$IFS_OLD
#----------------移动完成---------------#