一、背景
1、玩Emby有一段时间了,但是一直没有上NAS,设备只有一个刷了OpenWrt的N1,主打的就是一个物尽其用(qiong)。Emby是在Docker下运行,以前挂着硬盘用,但是重启设备就会掉盘,所以就不想依赖本地储存了,这时候Alist也流行起来,正好弥补了这个痛点。
2、随着ALIST起来的还有TVBOX系列APP,当时这个APP在电视上可以说是神一样的存在,直播、点播一网打尽,但随着用户越来越多,阿里云盘官方也采取了一些操作,现在阿里云盘分享的内容直接播放已经很卡了,很多大神分享的Alist也不能正常播放了,甚至有些播放源还夹杂了广告,遂放弃TVBOX,准备继续折腾EMBY。
3、由于没有本地储存,一直在研究Alist和Emby的组合方式,试过Rclone,不知道什么原因总是失败,也听别人反馈这个挂载不是很稳定,这时候出了一个CloudDrive的软件,于是第一时间在Docker上安装了,还别说,这个APP挂载很稳定,速度也很快,比阿里云盘app下载速度还快,后面升级到CloudDrive2也一直在用,但是这个软件不是开源的,最近也开始收费了,而且挂载的资源在Emby媒体库里面会经常重新扫描,导致设备占用过高,最糟心的是每次设备重启后都需要手动重启Emby,因为CloudDrive和Emby都是Docker应用,开机他们一起启动,Emby在CloudDrive挂载完成之前就启动了,所以识别不到媒体库,遂打算放弃。
4,最近偶然发现Emby媒体库支持strm文件,类似于视频的快捷方式,新建一个文本文件,文本内容为视频文件的播放链接,然后重命名为视频文件名,后缀改为strm,参考Emby文档。想想这就是为N1量身打造的。
二、总体思路
我们需要获取Alist服务器上指定目录下的视频文件名称、路径、播放链接,然后在Emby媒体库路径下生成相同的路径、文件名(后缀改为strm,内容为播放链接)的文本文件,同时也可以把字幕文件一起复制过来。效果如下图:
Alist文件
本地文件(Emby媒体库)
可以看到字幕和媒体信息都能识别
三、实现过程
上面思路都讲清楚了,实现过程对各位程序员来说应该不是难事,由于我个人不是程序员,只接触过最简单的Python,所以就打算用python来实现,但是很久没用过了也忘得差不多了,只能请出ChatGpt帮忙了,于是有了下面这段对话:
不得不说GPT真的强大,虽然这段程序实现的效果跟我预期的不一致,但是改改就能用,比自己写效率高多了。
然后就是针对性的改改代码,加几个简单的循环,在代码里输入WebDav地址、用户名、密码、输出路径,然后运行即可把Alist里面的视频按要求搬运过来。
四、注意事项
在获取Alist文件直链的时候可以直接右键文件复制链接查看链接的的形式,如果链接中有签名的话需要在设置中关闭签名,参考Github,关闭签名后,其实视频播放链接就是文件WebDav路径,但是需要把路径中的“/dav”改成“/d”。
五、优势和效果
这种方案最大的优势就是节省本地空间,而且比之前挂载的方法稳定,因为读取的就是本地文件,不会存在反复扫描的情况,设备重启后也不用担心掉盘或者需要重启Emby才能识别媒体库。
两千多个视频文件,空间占用只有几百KB:
六、后续
这种方法虽然简便,但是每次更新都需要在电脑上点下程序,后续的的想法是能做一个OpenWrt下的程序,或者打包成Docker镜像运行。
#Emby# #Alist# #TVBox#