前几天不是把家里的小霸王给改造成了NAS嘛,然后本来就是想架个EMBY然后在家里直接就看番了的,找了一圈发现BT下载是比较好用的,结果下载下来文件名格式又不一样,不符合EMBY的解析要求,于是就有了这篇文章


找种子

我推荐用蜜柑计划 - Mikan Project (mikanani.me)

虽然有时候上不去,但是资源是全的,速度也很不错,可以试试

配置下载

我一开始用的qbitorrent(群晖套件版的),但是那个配置起来超级麻烦,而且发现RSS订阅后不会自动下载(不知道是我的问题还是啥)

然后我记得群晖里有一个自带的Download Station,启动后发现其实它是支持BT下载的

我们找到Download Station,然后打开RSS,在里面添加我们的RSS链接

我这里选的是那种分集用[]给括起来的字幕组(好正则匹配,后面会说为什么要re匹配),直接加进去就行了

然后在下面下载过滤器新建一个过滤器,根据自己的需要填写过滤规则

设置完后,记得在RSS Feeds里面,把之前已经发出来的剧集先根据自己的需要下载好

自动重命名

因为EMBY需要AnimeName SxxExx这样的命名格式,但是字幕组发布的资源命名通常都是乱的,所以我们需要配置一个自动重命名

我先写好了一个Python程序,放在/volume1/Storage/AutoRename/AutoRename.py里面(路径可以自己进SSH去找),内容如下

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
import os
import sys
import re
import time
import shutil

##### 初始化参数 #####

# 工作目录
workdir = '/volume1/Animes'

# 排除目录
ignoredir = [
'@eaDir',
'#recycle'
]

# 日志目录
logdir = '/volume1/Storage/log/synoscheduler/3'

# 日志保留时长(时间戳差,自己去算)【604800 7天】
logpreserve = 604800

# 更改工作目录
os.chdir(workdir)

# 排除目录函数
def RemoveIgnoreDirs(src: list, ignores: list) -> None:
for ignore in ignores:
try:
src.remove(ignore)
except Exception:
pass

# 移除保留时长外的log文件夹的函数
def RemovePreviousLog(src: list, logpreserve: int) -> None:
toRemove = False
loglist = os.listdir(src)
now = int(time.time())
for log in loglist:
try: logtime = int(log)
except Exception as e:
print(f'{e} when removing {logdir}/{log}')
continue
if now - logtime > logpreserve:
toRemove = True
shutil.rmtree(f'{logdir}/{log}')
print(f'Removed {logdir}/{log}')
if not toRemove:
print('Nothing to remove.')

if __name__ == '__main__':
print(f'{" Renameing Animes ":=^60}')
# 获取目录下所有番剧的名字
animes = os.listdir()
RemoveIgnoreDirs(animes, ignoredir)
for anime in animes:
# 获取番剧的季信息
seasons = os.listdir(f'./{anime}')
RemoveIgnoreDirs(seasons, ignoredir)
for season in seasons:
# 获取番剧每一话
episodes = os.listdir(f'./{anime}/{season}')
RemoveIgnoreDirs(episodes, ignoredir)
for episode in episodes:
try:
episode_num = str(re.search(r'\[[0-9][0-9](\.)?[0-9]?(v)?[0-9]?集?\]', episode).group()).replace('[', '').replace(']', '').replace('v2', '').replace('集', '')
except AttributeError:
print(f'No matching pattern on "{episode}"')
continue
filetype = episode.split('.')[-1]
filename = f'{anime} {season}E{episode_num}.{filetype}'
print(f'Renaming "{episode}" -> {filename}')
os.rename(f'./{anime}/{season}/' + episode, f'./{anime}/{season}/' + filename)
# 移除保留期限外的日志
print(f'\n{" Removing old logs ":=^60}')
RemovePreviousLog(logdir, logpreserve)
# 结束提示
print(f'\n{" Done ":=^60}\n')

这就是为什么选择字幕组的时候我选了分集号用中括号[]括起来的原因

接着我们打开群晖的控制面板,找到任务计划,新建一个任务

点击新增 -> 用户定义的脚本 根据自己的需要创建即可,一开始在任务名称里面会写Task x,这个x就是你的任务号,群晖的任务log会保存在<你指定的目录>/synoscheduler/<ID>这样的位置,所以这个ID记得记下来然后把脚本里面的ID改掉

保存后群晖就会自动执行重命名任务了,当EMBY进行扫描的时候,扫描到命名正确的文件就会自动加入媒体库了

注:EMBY媒体库的结构举例(也是我这个脚本适合的目录结构)

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
W:.
├─为美好的世界献上爆焰!
│ └─S01
│ 为美好的世界献上爆焰! S01E01.mp4
│ 为美好的世界献上爆焰! S01E02.mp4

├─勇者死了
│ └─S01
│ 勇者死了 S01E01.mp4
│ 勇者死了 S01E02.mp4

├─总之就是非常可爱
│ └─S02
│ 总之就是非常可爱 S02E01.mp4
│ 总之就是非常可爱 S02E02.mp4

├─我推的孩子
│ └─S01
│ 我推的孩子 S01E01.mp4
│ 我推的孩子 S01E02.mp4

├─第二次被异世界召唤
│ └─S01
│ 第二次被异世界召唤 S01E01.mp4
│ 第二次被异世界召唤 S01E02.mp4

└─英雄联盟:双城之战
└─S01
英雄联盟:双城之战 S01E01.mp4
英雄联盟:双城之战 S01E02.mp4
英雄联盟:双城之战 S01E03.mp4
英雄联盟:双城之战 S01E04.mp4
英雄联盟:双城之战 S01E05.mp4
英雄联盟:双城之战 S01E06.mp4
英雄联盟:双城之战 S01E07.mp4
英雄联盟:双城之战 S01E08.mp4
英雄联盟:双城之战 S01E09.mp4