起因
周五一个晴朗的下午,正打着哈欠对着电脑屏幕无所事事,突然想看 Mark McMorris 的记录片《Unbroken》,由于在红牛官网看有点累,所以下载了下来。看完之后就按照习惯随手上传到了阿里云盘,看着阿里云盘9.5T的容量和保存丰富的影音库,突然想到阿里云盘支持 WebDAV,能挂载到本地,就想能不能试试把阿里云盘里面的电影、美剧和动漫接入我的本地影音管理工具Plex(Emby、Jellyfin 和 Infuse 同理,操作稍微有一点不同)。
准备工作
我尝试了两种把阿里云盘创建 WebDAV 的方式,分别是:
- 利用 docker 创建阿里云盘的 WebDAV 服务
- 利用 RaiDrive 创建阿里云盘的 WebDAV 服务
在这之前,我们需要打开浏览器来获取阿里云盘的 refreshToken
第一步,打开浏览器,打开 阿里云盘 官网并登录
第二部,按F12打开开发者工具,点击 Application(应用程序),在打开的菜单里点击 Local Storage(本地储存),点击 Local Storage 下的 https://www.aliyundrive.com/,然后在二级菜单里点击右边的 token,就可以看到下面的 refreshToken 了。
利用 docker 创建阿里云盘的 WebDAV 服务
在这里我利用的是 rclone-mount 这个 docker 镜像来实现,但是我后来有找到了更好上手的方法,如下:
- 利用 zxbu/webdav-aliyundriver 来实现 WebDAV
- 下载 Jar 包运行
- Docker run 运行
- Docker compose
补充
上面的折腾主要是因为我一个穷学生没有 NAS,如果你有群晖 NAS 的话,也可以利用 docker 部署到本地后,直接在群晖内挂载此 WebDAV 就可以在群晖的文件管理里随时访问。
- docker - 注册表 - 搜索
webdav-aliyundriver
- 下载结果的第一个
zx5253/webdav-aliyundriver
- 启动此镜像
- 在常规设置里勾选
使用高级权限执行容器
- 在高级设置的装载路径填写
/etc/aliyun-driver
- 容器端口设置默认为8080
- 高级设置 - 环境 - 添加以下变量
ALIYUNDRIVE_REFRESH_TOKEN
为上文获取的refresh_token
ALIYUNDRIVE_AUTH_USER-NAME
为 WebDAV 设置用户名ALIYUNDRIVE_AUTH_PASSWORD
为 WebDAV 设置密码- 最后在群晖里直接挂载 WebDAV
利用 RaiDrive 创建阿里云盘的 WebDAV 服务
如果你觉得用 docker 太难,RaiDrive 绝对是更为简单的选择,这里我们则需要准备几个文件:
- 首先下载 RaiDrive
- 下载 Winsw 的 exe 文件
- 下载 zxbu/webdav-aliyundriver 里的 Jar 文件
到这里,整个流程已经完成了一半,我们剩下要做的是创建一个 Winsw 的 xml 文件,内容如下:
<service>
<!-- ID of the service. It should be unique across the Windows system-->
<id>webdav-aliyundriver</id>
<!-- Display name of the service -->
<name>webdav-aliyundriver</name>
<!-- Service description -->
<description>webdav-aliyundriver</description>
<!-- Path to the executable, which should be started -->
<executable>java</executable>
<!--
aliyundrive.refresh-token 填写TOKEN
server.port 填写端口
这里出于避免与其它服务冲突将其默认8080修改为8181,当然你也可以修改成自己的端口
-->
<arguments>-jar webdav-aliyundriver-2.4.2.jar --aliyundrive.refresh-token="填写TOKEN" --server.port="8181" --aliyundrive.auth.enable=true --aliyundrive.auth.user-name="admin" --aliyundrive.auth.password="admin"</arguments>
<!--
OPTION: onfailure
Defines a sequence of actions, which should be performed if the managed executable fails.
Supported actions: restart, reboot, none
-->
<onfailure action="restart" delay="10 sec"/>
<onfailure action="restart" delay="20 sec"/>
<!--
OPTION: resetfailure
Time, after which the Windows service resets the failure status.
Default value: 1 day
-->
<resetfailure>1 hour</resetfailure>
<!--
OPTION: priority
Desired process priority.
Possible values: Normal, Idle, High, RealTime, BelowNormal, AboveNormal
Default value: Normal
-->
<priority>Normal</priority>
<!--
OPTION: stoptimeout
Time to wait for the service to gracefully shutdown the executable before we forcibly kill it
Default value: 15 seconds
-->
<stoptimeout>15 sec</stoptimeout>
<!--
OPTION: stopparentprocessfirst
If set, WinSW will terminate the parent process before stopping the children.
Default value: false
-->
<stopparentprocessfirst>false</stopparentprocessfirst>
<!--
OPTION: startmode
Defines start mode of the service.
Supported modes: Automatic, Manual, Boot, System (latter ones are supported for driver services only)
Default mode: Automatic
-->
<startmode>Automatic</startmode>
<waithint>15 sec</waithint>
<sleeptime>1 sec</sleeptime>
<log mode="roll-by-size">
<sizeThreshold>10240</sizeThreshold>
<keepFiles>8</keepFiles>
</log>
</service>
做完所有步骤后,我们可以看到文件夹里有三个文件:
- Winsw 的 exe 文件
- Winsw 的 xml 文件
- Webdav-aliyundrive 的 jar 文件
此时,我们将第一个和第三个文件命名保持一致,然后在 xml 文件里修改 refreshToken(就是我们在前面得到的)。
剩下就可以开始启动服务了:
- 以管理员身份打开 cmd
- 使用 cd 命令进入进入下载的软件包解压后放置的位置,例如
cd aliyundriver
- 执行命令
webdav-aliyundriver-2.4.2.exe install
- 若提示安装成功,执行命令
net start webdav-aliyundriver
,如果这一步显示 1064 报错,安装 jdk1.8 可解决,版本过高可能会出现问题。 - 若提示请求的服务已经启动,打开 RaiDrive,点击 Add
选择服务 WebDAV,盘符和名称自定义,端口8181,账号和密码都是 admin,记得去掉地址后面的那个选框。
配置完成以后,点击连接,就可以看到阿里云盘已经挂载到本地了。1
连接 Plex
剩下的就是将本地资料库添加到 Plex 进行刮削了,由于 Plex 自带的刮削器不太给力,比如说我就遇到了有些动漫和美剧无法找到的情况,我们可以用两个插件来解决这个问题。
Absolute-Series-Scanner 可以扫描且补全剧集的缺失信息
Hama.bundle 用来从 Anidb 刮削数据,补全动漫刮削的缺失
The Movie Database (TMDb) 用来补全电影和剧集刮削的缺失
Absolute Series Scanner
我们先从 GitHub 上下载 Scanner,然后找到 Plex Media Server 的文件夹,位置在 C:\Users\用户名\AppData\Local\Plex Media Server\
,将 Scanners
目录和子目录下的所有.py
文件放置于 Plex 服务器文件夹内即可生效。2
Hama bundle
直接从 Github 下载最新的代码,解压于 Plex Media Server
内的 Plug-ins
子目录下即可生效。
确定插件下载完成后,我们需要启用插件。打开 Plex 的媒体库设置,然后进入高级设置。
将扫描器选为 Absolute Series Scanner,代理选为 HamaTV。在 HamaTV 设置部分中:
- 将
Serie Lanaguge Priority
设置为zh-Hans, zh, zh-Hant, ja, main, en
- 将
Episode Language Priority
设置为zh-Hans, zh, zh-Hant, ja, main, en
- 将
TheTVDB Poster Language Priority
设置为zh, ja
如果你有其他亚洲语言需求,可以参考 GitHub 库里的语言参考表:
Languages codes | AniDB | TheTVDB |
chinese (unspecified) | zh | zh |
chinese (traditional) | zh-Hant | N/A |
chinese (simplified) | zh-Hans | N/A |
chinese (cantonese) | zh-x-yue | N/A |
chinese (mandarin) | zh-x-cmn | N/A |
chinese (taiwanese) | zh-x-nan | N/A |
japanese | ja | ja |
japanese (transcription) | jap | N/A |
korean | ko | ko |
korean (transcription) | x-kot | N/A |
刷新媒体库的元数据,就可以看到原来无法刮削的动漫被完美读取了。
简介、制作公司、卡司都可以完美的显示。
对海报不满意也可以从海报库里进行修改。
TMDb
Hama bundle 已经很够用了,笔者暂时没有遇到无法读取的媒体。为了以防万一,我们也可用官方推荐的 TMDb 进行刮削。
这里我们不需要做任何的下载,Plex 右上角点击"设置",左侧设置栏选择"代理",电影下方的 The Movie Database 菜单,拖动 "The Movie Database" 到第一行就大功告成。
最后点击旁边的齿轮,勾选全部并且把国家选为中国,然后重复之前把 Hama bundle 作为代理的操作就可以开始扫描了。
如果遇到扫描匹配不正确的情况,我们也可以手动修正匹配,选择正确的信息。
最终成果展示
电影
剧集
尾声
折腾了那么多,其实还是为了一个漂亮的影视管理。如果你想要一个流畅的追剧体验的话,线上流媒体才是一个更完美的选择。本文的的目的是给像我一样没有 NAS 的同学写一个打造影视库的指南。如果你有类似需求,就上手试试吧!