​ 这是我家庭媒体库的支线任务,毕竟我的数据库方案也已经七七八八了,之所以搞这个方案和验证,主要是开发的大佬描述的能力太强了,相对原来的cd2/alist+AutoSymlink+Media302方案,省去了AutoSymlink,同时对文件挂载有难度的人来说,门槛降低了许多,我会尽量把我折腾并最终顺利跑起来的步骤记录,按照操作肯定没啥难度的.

0x00 说明

​ 本次实验并不是从零开始的,相反,很多环节都是原来就存在的节点,我们只是把strm生成这个步骤简化了,还可以跟你原来的emby、media302等方案无缝衔接.

0x01 必要准备

​ 很多人之前可能并没有使用python-115,那么我个人建议,你可以通过学习和了解python-115来快速知道,我们接下来要做的事情.

部署web-302-115-simple

这是开发大佬的高性能简化版302后端,python文件可以在这里找到,拿到这个文件后,可以在你的本地执行验证一下:

1
python3 web_115_302_simple.py

你还可以指定服务在那个端口上启动:

1
python3 web_115_302_simple.py -p 8998

建议在同目录放置115的cookie文件,名字设置为115-cookies.txt就行,里面是字符串格式的Cookie.这样就能在遇到需要验证的时候,自动完成切换.

0x02 部署python-alist

相较于前面的web-302-115-simple的极简部署,python-alist可能更加简单,但是因为依赖的东西可能比较多,我整理成一个脚本,让你看起来只要每次启动这个脚本就行,看起来清爽很多.

先安装一下python-alist:

1
pip3 install -U python-alist

再安装一下fuse相关的应用和依赖:

1
2
sudo apt install libfuse2
pip3 install fusepy

如果是非root用户在跑这些应用,可能还需要修改/etc/fuse.conf,把user_allow_other前的#删掉并保存.

然后,整理一下几个参数备用:

1
2
3
4
5
6
7
8
# alist 服务的地址
ALIST_HOST=http://10.0.0.1:5244
# 用户名
ALIST_USERNAME=alist的用户名
# 密码
ALIST_PASSWORD=alist的密码

# 302的后端服务地址 也就是前面配置的web-302-115-simple的服务地址

0x03 写个简单的脚本

脚本就叫alist-fise.sh,把你准备好的参数,放到我下面的脚本内容中,并保存到alist-fise.sh:

注意:

  • –base-dir 是你在alist里面挂载的115的路径,不一定是/115,根据需要修改;
  • –strm-make 前面配置的web-302-115-simple的服务地址
  • –open-file 前面配置的web-302-115-simple的服务地址
  • 最后一行的–不要删,后面跟着的是你要挂载的目标目录,目录必须存在并且文件夹内是空的
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
# alist 服务的地址
ALIST_HOST=http://10.0.8.3:5244
# 用户名
ALIST_USERNAME=alist的用户名
# 密码
ALIST_PASSWORD=alist的密码

python-alist fuse \
--origin "$ALIST_HOST" \
--username "$ALIST_USERNAME" \
--password "$ALIST_PASSWORD" \
--base-dir '/115' \
--refresh \
--strm-predicate-type expr \
--strm-predicate '(
path.media_type.startswith(("video/", "audio/")) and
path.suffix.lower() != ".ass"
)' \
--predicate-type expr \
--predicate '(
path.is_dir() or
path.media_type.startswith("image/") or
path.suffix.lower() in (".nfo", ".ass", ".ssa", ".srt", ".idx", ".sub", ".txt", ".vtt", ".smi")
)' \
--strm-make-type fstring \
--strm-make '前面配置的web-302-115-simple的服务地址/{path.relative_to("/115")}' \
--open-file-type fstring \
--open-file '前面配置的web-302-115-simple的服务地址/{path.relative_to("/115")}' \
-- /mnt/alist

然后跑起来吧:

1
sh alist-fuse.sh
1
2
3
4
5
6
ubuntu@VM-0-6-ubuntu:~$ sh alist-fise.sh 

👋 Welcome to use alist fuse 👏

mounted at: '/mnt/alist'
FUSE options: {'mountpoint': '/mnt/alist', 'allow_other': True, 'foreground': True, 'max_readahead': 0, 'noauto_cache': True, 'ro': True}

检查一下你的挂载目录,是不是文件都来了,是不是媒体文件都变成了同名的strm文件,剩下的就是去emby里面添加对应的媒体库,指向这些目录吧,如果原来你是同结构的strm,那么还可以清空原目录,直接挂载过去,emby都不需要重新设置.

0x04 问题待优化

​ 目前媒体元数据的图片这些也是走302连接,但是因为fuse2的问题,可能存在图片显示不完整问题,开发大佬表示已经在优化了,后面解决了如果部署步骤有更新我会说明.