关于媒体库方案的内容,整理到现在,我觉得可以稍微总结一下了,也针对部分网友使用过程中遇到的问题,我也一并说明一下.

0x00 现状

目前构建了3个docker镜像,分别对应文件上传、生成strm、302播放(含图片302):

1
2
3
ilovn/115upload
ilovn/media_library_sync
ilovn/media302

0x01 建议方案

之所以会有所谓的建议方案,主要是很多人其实不理解到底要做什么?如果你仅仅需要一个工具,把你现在已经是alist后端,生成了strm的emby在302上发挥作用,那么下面这几行命令就是你需要的:

1
2
3
4
5
6
7
docker pull ilovn/media302:latest && \
docker run -d \
--restart always \
-e UPSTREAM_HOST="http://172.17.0.1:8096" \
--name media302 \
-p 8090:8090 \
ilovn/media302:latest

其中,UPSTREAM_HOST是你的emby服务器,确保media302所在的环境能访问到即可,然后在你的客户端、网页用media302所在的ip和8090端口访问,你的302就可用了.

注意,cd2本身不支持302访问,所以你的strm里面的地址,请认真检查是http/https开头,并确保是类似alist这种支持302的服务提供的.

总有些人在啥都不懂的情况下,看了后面的方案开始BB,要cookie、要配置很多,拜托,你的需求是什么自己想清楚了就瞎BB,爱用不用.

0x02 media302完整方案

之前有网友联系,即使是小白,其实也可以很快配置出来,而且,提供cookie后,media302能给你提供一个直接可用的302服务端,这也是为什么说可以抛弃alist的原因.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
docker pull ilovn/media302:latest && \
docker run -d \
--restart always \
-v /data/115/115-cookies.txt:/usr/src/app/115-cookies.txt \
-v /etc/timezone:/etc/timezone:ro \
-v /etc/localtime:/etc/localtime:ro \
-e UPSTREAM_HOST="http://172.17.0.1:8096" \
-e EMBY_TOKEN="emby token" \
-e UPSTREAM_115_SERVER="http://127.0.0.1:8091" \
-e REPLACE_PATH_1="/mnt/strm" \
-e REPLACE_PATH_2="/Media" \
--name media302 \
-p 8090:8090 \
-p 8091:8091 \
ilovn/media302:latest

详细使用,可以参考家庭媒体库方案(六):302方案(图片302优化方案,含后端)

同时有了这个服务端,可以通过caddy这类工具,把这个服务暴露出来:

1
2
3
4
5
6
7
8
xxx.xxx.xxx {
handle_path /d/115/* {
reverse_proxy http://127.0.0.1:8091
}
handle_path /static/* {
reverse_proxy http://127.0.0.1:8091
}
}

0x03 文件上传

这个镜像很简单,就是纯粹的上传,上传并发、上传后删除文件等,都是可配置的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
docker pull ilovn/115upload:latest && \
docker run -d \
--restart always \
-v /home/cat/115-cat-cookies.txt:/usr/src/app/115-cookies.txt \
-v /etc/timezone:/etc/timezone:ro \
-v /etc/localtime:/etc/localtime:ro \
-v /mnt:/mnt \
-e SRC_PATH="/mnt/AutoLink" \
-e DST_PATH="/Media" \
-e MAX_WORKERS=3 \
-e MAX_RETRIES=5 \
-e INTERVAL=60 \
-e REMOVE_DONE="true" \
--log-driver=syslog \
--name 115upload \
ilovn/115upload:latest

0x04 生成strm

这个方案目前基本稳定,我自己在用,有问题也会处理. 详细可参考:家庭媒体库方案(七):媒体库管理和更新方案

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
sudo docker pull ilovn/media_library_sync:latest && \
sudo docker run -d --restart always \
-v /data/medialibsync/115-cookies.txt:/usr/src/app/115-cookies.txt \
-v /data/medialibsync/db:/usr/src/app/db \
-v /mnt:/mnt \
-v /etc/timezone:/etc/timezone:ro \
-v /etc/localtime:/etc/localtime:ro \
-e PUID=1000 \
-e PGID=1000 \
-e FILE_SITE="https://xxx.xxx.xxx/static" \
-e EMBY_SITE="http://172.17.0.1:8096" \
-e EMBY_TOKEN="emby token" \
-e STRM_DIR="/mnt/strm" \
-e REPLACE_STRM_PATH="/Media" \
-e OVERWRITE="false" \
-e NEED_NFO="true" \
-e NEED_IMAGE="false" \
-e JOB_INTERVAL="5" \
-e INIT_QUICK_SCAN="true" \
-e SCAN_DIRS="/Media/Animes|/Media/Movies|/Media/TVShows" \
--name medialibsync \
ilovn/media_library_sync:latest

0x05 答疑

  1. 为什么不整理成一个镜像?
    很简单, 专业的工具做专业的事情,同时也利于大家分散部署,比如你的PT下载可能是在欧洲,emby可能在国内或者香港、新加坡等,分散部署可以让工具聚焦自己的主力工作,上传的就专业做上传就行.同理,302可以部署在国内,提升302请求的响应速度.

  2. media302用域名的时候,infuse不支持图片302
    这是infuse的bug

  3. media302支持strm和本地混合吗?
    不支持,我没这诉求

  4. media302会支持plex、jellyfin吗?
    不搞了,没意思