前言
在21年,我写过一篇《如何优雅的看番》,当时只是简单的介绍了一下下载和播放用的软件,顺便再介绍了一下补帧。但随着时间的推移,原先的那套方法早已陈旧了。正好最近有些空闲时间,把目前我使用的追/补番流程记录一下。
目前使用到的软件有以下:
通过这些软件,可以实现:
- 自动追更+下载+整理
- 随处播放,记录播放历史
- 拥有精美的UI和海报墙,
看着很爽 - 自动同步播放记录
下面就依次介绍这些软件的功能与安装设置步骤,为了便于管理,我都是采用Docker进行安装。
个人媒体库——Emby
Emby是一款优秀的媒体服务器软件,致力于为用户提供丰富的多媒体体验。通过Emby,您可以方便地在家庭内的各种设备上观看您喜爱的电影、电视剧和其他视频内容。而且,Emby还具备强大的媒体管理功能,让您的影视资源井然有序,随时随地畅享观影乐趣。
首先要搭建的就是Emby,只要有NAS的用户都应该听过它的大名,用来管理本地的影音数据再合适不过了。
1
2
3
4
5
6
7
8
9
10
11
12
13
| docker run -d \
--name emby \
--restart unless-stopped \
--stop-timeout 30 \
-p 8096:8096 \
-p 8920:8920 \
-v /var/opt/emby:/config \
-v /mnt/luoboPool/public:/data \
--device=/dev/dri \
-e PUID=0 \
-e PGID=0 \
-e TZ=Asia/Shanghai \
amilys/embyserver:4.9.0.46
|
这里我没有选用官方的镜像,而是使用amilys大佬做的整合版,里面内置了一些插件还是比较好用的。这里我指定了4.9.0.46
版本是因为神医助手这个插件不再继续适配最新测试版了,所以就停在这个版本了。
接下来就是安装和配置相关的插件,amilys大佬使用了一个扩展脚本,所以我们就可以修改其来实现配置docker/emby/config/ext.sh
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
| #!/bin/sh
######## 说明 2023-07-30 ########
#一个sh脚本,容器每次启动时运行
#方便自定义添加功能
#################################
echo "Emby扩展启动脚本"
#去掉下行注释可以关闭次脚本
#exit 0
########下面可以自行添加功能########
## 修改容器hosts
#echo -e "13.226.210.20 api.themoviedb.org" >> /etc/hosts
#echo -e "13.225.142.99 api4.thetvdb.com" >> /etc/hosts
## Emby-crx 美化 媒体库ID为空时不启用
## 媒体库id,用逗号分隔。进入媒体库后url里的parentId
## MediaId="21466,21463"
MediaId="239"
sed -i "s/this\.parentId = \"\";/this\.parentId = \"$MediaId\";/" /system/dashboard-ui/emby-crx/config.js
## 扩展插件:
# embyLaunchPotplayer 外部播放
# ede.user 弹幕
# actorPlus 未知演员隐藏
extmod='["embyLaunchPotplayer","actorPlus"]'
sed -i '/\ extmod/s/\[.*\]/'$extmod'/g' /system/dashboard-ui/ext.js
# 修改弹幕插件
sed -i 's#<script src="danmaku.min.js"></script>#<script src="https://cdn.jsdelivr.net/gh/chen3861229/dd-danmaku@gh-pages/ede.user.js" charset="utf-8"></script>#g' /system/dashboard-ui/index.html
exit 0
|
相较于原始脚本,我将弹幕脚本修改为chen3861229大佬继续维护的版本dd-danmaku。
其次,我为emby-erx美化插件指定了媒体库,并修复了配置脚本没有工作的问题,最终的效果如下:


可以看到海报墙还是非常赏心悦目的。
关于如何创建媒体库之类的Emby设置网上已经有很多相关的教程了,我这里就不再赘述了,就只写一下和网上配置不一样的地方吧。
首选图像下载语言
这里设置为空,然后在神医助手里开启原语言海报
,这样下载的海报就是日文原版的,看起来更舒服。- 媒体库可以自己用PS设计一个封面,看起来会更加醒目。
对于客户端的选择,根据我的使用体验来看,目前使用体验比较好的是:
- PC:小雅优化的官方PC客户端
- Android:Yampy
- TV:amilys优化的官方TV客户端,对于部分有子集化的字幕(这个后面会介绍)使用Kodi+emby官方插件
Emby默认的元数据来源为The Movie Database (TMDB),已经满足95%的刮削需求了。但是,有些资源还是找不到,这时就可以从Bangumi 番组计划上获取了。
这里就需要使用jellyfin-plugin-bangumi插件了,虽然是为jellyfin编写的,但是作者也为Emby做了适配。
1
| sudo curl -L -o /var/opt/emby/plugins/Emby.Plugin.Bangumi.dll https://github.com/kookxiang/jellyfin-plugin-bangumi/releases/download/1.7.1/Emby.Plugin.Bangumi.dll
|
直接将其下载到之前配置好的Emby配置目录里并重启即可使用了。
除了元数据获取,它还可以在播放完成后自动点格子,还是非常方便的。
有了媒体库,下面需要的就是如何将网上的资源下载进来了。这里我使用的是wushuo894大佬编写的Ani-rss,可以自动检测蜜柑计划的更新并下载,同时还有重命名以及洗版功能。种子下载则是qBittorrent。PeerBanHelper则是为了避免被吸血。由于这三个工具是一起使用的,所以我直接写了个docker compose来一键启动:
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
| name: bt-download
networks:
qb_ipv6:
enable_ipv6: true
ipam:
config:
- subnet: 2001:db8:abc1::/64
services:
qBittorrent:
image: linuxserver/qbittorrent
container_name: qBittorrent
ports:
- 16000:16000 #网页端口
- 18064:18064 #下载端口
- 18064:18064/udp
environment:
- PUID=1000
- PGID=994
- TZ=Asia/Shanghai
- WEBUI_PORT=16000
- TORRENTING_PORT=18064
volumes:
- /var/opt/qbittorrent:/config
- /mnt/luoboPool/public:/data
- /home/luobo/qbittorrent/VueTorrent:/VueTorrent
restart: unless-stopped
networks:
- qb_ipv6
ani-rss:
image: wushuo894/ani-rss
container_name: ani-rss
ports:
- 7789:7789
environment:
- PORT=7789
- CONFIG=/config
- TZ=Asia/Shanghai
volumes:
- /var/opt/ani-rss:/config
- /mnt/luoboPool/public:/data
restart: unless-stopped
networks:
- qb_ipv6
PeerBanHelper:
image: registry.cn-hangzhou.aliyuncs.com/ghostchu/peerbanhelper
container_name: PeerBanHelper
ports:
- 9898:9898
environment:
- TZ=Asia/Shanghai
volumes:
- /var/opt/PBH:/app/data
restart: unless-stopped
networks:
- qb_ipv6
|
记得修改qBittorrent的端口和相关的挂载路径。
我这里在配置时,启用了ipv6支持,主要是下载bt时有ipv6连接性会更好一点(也就是更快)
对于ani-rss的设置,我这里就写一些关键的配置
保存位置:/data/番剧/${year}年${quarter}月/${title}
这样就可以按照季度进行分类的
开启自动删除
、仅在主RSS更新后删除备用RSS
、备用RSS
这样就能开启洗版功能,可以实现先下载内嵌字幕的版本,等字幕组更新后再换回内封版本
其他的参考官方的文档就好了
这里补充一下,ani-rss是基于蜜柑计划的,而蜜柑计划主站已经被干扰了,所以可以采用自建镜像站的方法。这里我使用CloudFlare的Worker,脚本为:
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
| const TELEGRAPH_URL = 'https://mikanani.me';
const MY_DOMAIN = 'https://example.com'
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request))
})
async function handleRequest(request) {
const url = new URL(request.url);
url.host = TELEGRAPH_URL.replace(/^https?:\/\//, '');
const modifiedRequest = new Request(url.toString(), {
headers: request.headers,
method: request.method,
body: request.body,
redirect: 'manual'
});
const response = await fetch(modifiedRequest);
const contentType = response.headers.get('Content-Type') || '';
// 如果内容类型是 RSS,才进行替换操作
if (contentType.includes('application/xml')) {
const text = await response.text();
const replacedText = text.replace(/https?:\/\/mikanani\.me/g, MY_DOMAIN);
const modifiedResponse = new Response(replacedText, response);
// 添加允许跨域访问的响应头
modifiedResponse.headers.set('Access-Control-Allow-Origin', '*');
return modifiedResponse;
} else {
const modifiedResponse = new Response(response.body, response);
// 添加允许跨域访问的响应头
modifiedResponse.headers.set('Access-Control-Allow-Origin', '*');
return modifiedResponse;
}
}
|
qBittorrent
这里也没有什么太多需要配置的,我这里就是配置了一个第三方的WebUI——VueTorrent。
下载好后在使用备用 WebUI
里填写对应的路径即可。
PeerBanHelper
这个主要是为了防止在公网做种时被吸血,配置好qBittorrent连接后就可以不用管了。
字体自动子集化——fontInAss
对于新番而言,字幕组在内封字幕的时候同时也会封入字体文件,这样我们就不用操心字体的问题。但是,在收集一些老番的时候,字幕往往是外挂的,这样在没有字体的环境下就会回退到默认字体,看起来就一点也不美观。
目前,已经有一种解决方案——将字体子集化并嵌入字幕,但是这种方式还是无法避免需要手动进行处理。为此,我找到了一个可以自动化处理的软件——fontInAss,来解决这个问题。
它的安装和配置很简单,还是一样的Docker一把梭。
1
2
3
4
5
6
| docker run -d --name=fontinass --restart=unless-stopped \
-p 8012:8012 \
-e EMBY_SERVER_URL=http://172.17.0.1:8096 \
-v /var/opt/fontinassData:/data \
-v "/mnt/luoboPool/public/Downloads/超级字体整合包 XZ":/fonts/XZ \
riderlty/fontinass:latest
|
这里唯一要注意的就是需要预先下载好字体的整合包,可以在这里找到。(当然让它用到时再自动下载也可以)
之后访问Emby从8012端口进入就好了。
自动备份——Rclone
这款软件也是介绍过了很多次了,用它可以很方便的将数据同步到网盘上面。
1
2
| #!/bin/sh
rclone copy /mnt/luoboPool/public/番剧 sp:/番剧 --exclude-from="/home/luobo/exclude-anime.txt"
|
这里我加上了一个排除文件,避免传上Emby刮削后的文件。
1
2
3
4
| *.nfo
*.parts
*.!qB
*.json
|
最后就是编写定时脚本让其每天自动更新了。这里我没有使用传统的crontab,而是另一种据说更现代的方式——systemd/Timers - ArchWiki。
根据文档,我们只需要编写.service
和.timer
文件就好了。
/etc/systemd/system/sync-to-onedrive.service
1
2
3
4
5
6
7
| [Unit]
Description=Copy to onedrive
[Service]
User=luobo
Group=luobo
ExecStart=/bin/bash /home/luobo/sync.sh
|
/etc/systemd/system/sync-to-onedrive.timer
1
2
3
4
5
6
7
8
9
| [Unit]
Description=Run sync daily
[Timer]
OnCalendar=*-*-* 4:00:00
Persistent=true
[Install]
WantedBy=timers.target
|
小结
整理资源真的是一件很爽的事情,特别是看到最后的海报墙以后。也是很感谢这些软件的制作者,为我省下了许多的时间。