一个为Emby、Jellyfin服务器提供直链播放的小项目
- 轻量化Emby服务器,降低Emby服务器的性能需求以及硬盘需求
- 运行稳定
- 相比直接访问Webdav,Emby、Jellyfin服务器可以提供更好的视频搜索功能以及自带刮削器,以及多设备同步播放进度
- 提高访问速度,播放速度不受Jellyfin服务器带宽限制
- Github Workflows自动下载打包上传至Release
- 增加更多Webdav服务器的支持
- 对接TMDB实现分类、重命名、刮削等功能
- 从config文件中读取多个参数
这里以Windows为例(Linux参考):
在微软商店搜索python
,选择python3
(小版本任选)
打开命令行输入以下命令:
pip install webdavclient3
下载仓库的autofil.py
文件,并在本地目录打开
在当前目录打开终端(命令行),输入以下命令以查看使用方法:
python3 .\autofilm.py -h
python3 .\autofilm.py --webdav_url webdav服务器地址 --username webdav账号 --password webdav密码 --output_path 输出文件目录
示例:我的Alist地址为https://alist.example.com:666
,我要下载/视频/动漫/
里面的视频,下载路径在D盘电影文件夹中的动漫文件夹
,我的Alist的访问账号的myAlist
,密码是listpwd
python3 .\autofilm.py --webdav_url https://alist.example.com:666/dav/视频/动漫/ --username myAlist --password Alistpwd --output_path D:电影//动漫//
- subtitle:是否下载字幕文件,默认
true
- nfo:是否下载NFO文件,默认
false
- img:是否下载JPG和PNG图片文件,默认
false
我的NAS上搭建了Alist和Emby两个服务器,我的音乐库在阿里云盘上,最开始是利用Alist挂载阿里云盘然后Rclone到本地挂载到Emby上,但是每次Emby扫库时,NAS的运行压力就会变大,而且观看体验并不好
在浏览博客间偶然发现Emby可以利用strm
文件代替视频文件,于是有了这个仓库,Emby会访问strm
文件,其中有视频源文件的播放地址,Emby服务器就会把这个地址发给客户端让客户端让客户端自行尝试播放
整个python程序的结构很简单,打开对应的Webdav服务器,遇到MP4
,MKV
,FLV
,AVI
视频文件就在对应本地文件夹输出一个同名strm
文件,其内容为视频的链接,其中Alist需要关闭签名,关闭签名后,直链需要把URL中的/dav/
改为/d/
;如果遇到ASS
,SRT
,SSA
字幕文件或JPG
刮削图像或NFO
视频信息文件就直接下载到对应文件夹中,方便Emby的视频读取
至此,整个AutoFilm输出文件夹就可以代替原本的Emby视频媒体库了,如果Alist开启了302重定向,Emby客户端会跳转访问阿里云盘的地址,因此访问速度与Alist和Emby服务器完全不相干,如果NAS是采用CloudFlare进行内网穿透的话,播放效果也不再受到影响
- Emby:服务器下载直链视频,并提交客户端进行流控,连接速度同时受限于Emby服务器的上下行带宽
- Jellyfin:直接提交给客户端播放器,连接速度不受Jellyfin服务器带宽限制
- Plex:无法识别,处理不了
感谢七米蓝分享Alist,为本项目的Workflows提供视频源