准备工作
- Alist(挂载网盘,方便后续生成strm)
- alist-strm(通过alist生成本地strm)
- emby(影视播放)
- moviepilot-v2(pt搜索,影视整理及后续搜刮)
- qbittorrent下载所需影视到服务器本地,然后由(pt下载)
- upload+rclone(上传本地影视到网盘)
- wxchat(mp微信通知,可选)
- embyExternalUrl(302直链播放,可选)
- PT站账户
大致流程
该流程通过企业微信程序联动 moviepilot-v2 搜索 PT 站的影视,完成下载、整理、上传到网盘、以及播放的全流程。
企业微信程序联动
- 使用企业微信程序搜索 PT 站 的影视内容。
- 通过 moviepilot-v2 获得相关影视信息。
下载到服务器
- 将所需影视发送到 qBittorrent 进行下载。
- 下载的影视文件存储在本地服务器。
影视整理
- 使用 moviepilot-v2 对下载的影视进行重命名。
- 将影视整理到指定目录。
上传至网盘
- 使用 upload 工具将整理好的影视文件上传至网盘。
- 上传完成后,本地的影视文件被删除。
获取 Alist 网盘影视内容
- 通过 alist-strm 获取网盘中的影视内容。
- 创建 .strm 文件并保存到服务器的本地。
本地影视搜刮
- 使用 moviepilot-v2 插件对本地的 .strm 文件进行搜刮。
播放准备
- 通过 Emby 扫描本地的 .strm 文件。
- 最终实现能够播放影视内容(302直链)。
程序安装
目录说明:
/em/docker:所有程序配置文件映射目录
/em/strm:本地strm存放目录
/em/media:本地影视存放目录
1. Alist
docker run -d \
--restart=always \
-v /em/docker/alist:/opt/alist/data \
-p 5244:5244 \
-p 6800:6800 \
-e PUID=0 \
-e PGID=0 \
-e UMASK=022 \
--name=alist \
-e TZ=Asia/Shanghai \
xhofe/alist-aria2:latest
随机生成一个密码
docker exec -it alist ./alist admin random
登录后台-设置-其它-令牌(后面要用)
2.qbittorrent
docker run -d \
--name=qbittorrent \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Etc/UTC \
-e WEBUI_PORT=5050 \
-p 5050:5050 \
-p 34567:34567 \
-p 34567:34567/udp \
-v /em/docker/qbittorrent/config:/config \
-v /em/media:/media \
-v /em/docker/qbittorrent/downloads:/downloads \
--restart unless-stopped \
lscr.io/linuxserver/qbittorrent:4.6.0
默认用户名:admin 密码:adminadmin
3. moviepilot-v2
docker run -itd \
--name moviepilot-v2 \
--hostname moviepilot-v2 \
-p 3000:3000 \
-v /em/media:/media \
-v /em/strm:/strm \
-v /em/docker/moviepilot-v2/config:/config \
-v /em/docker/moviepilot-v2/core:/moviepilot/.cache/ms-playwright \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
-e 'NGINX_PORT=3000' \
-e 'PORT=3001' \
-e 'PUID=0' \
-e 'PGID=0' \
-e 'UMASK=000' \
-e 'TZ=Asia/Shanghai' \
-e 'AUTH_SITE=iyuu' \
-e 'IYUU_SIGN=xxxx' \
-e 'SUPERUSER=admin' \
# -e 'API_TOKEN=无需手动配置,系统会自动生成。如果需要自定义配置,必须为16位以上的复杂字符串' \
--restart always \
jxxghp/moviepilot-v2:latest
安装完成后,添加下载器qbittorrent,然后设置目录
媒体库目录就是存放整理好的影视资源的目录,也是我们下面upload程序需要监控的目录
其它的一些设置直接看官方的wiki或者在网上找教程就行,很简单教程也很多。
4.微信通知(可选)
网上自行找教程,需要说的一点就是moviepilot-v2上添加微信通知之后需要重启,不然微信程序的验证无法通过。
贴一份代理的程序命令
docker run -d \
--name wxchat \
--restart=always \
-p 3020:80 \
ddsderek/wxchat:latest
5.upload
docker run -d -p 5001:5001 \
-v /em/docker/upload/config.json:/usr/src/app/config.json \
-v /em/docker/upload/app.log:/usr/src/app/app.log \
-v /em/media/date/dsj/:/em/media/date/dsj/ \
-v /em/media/date/dy/:/em/media/date/dy/ \
-v /usr/bin/rclone:/usr/local/bin/rclone \
-v /root/.config/rclone:/root/.config/rclone \
--name upload \
--restart unless-stopped \
250520/upload
提前安装好rclone,并通过webdav连接alist/root/.config/rclone
是本地的rclone配置文件所在的目录。
程序是让chatgpt写的,勉强能用
拉取docker镜像之后会在/em/docker/upload
目录下生成config.json
和app.log
两个目录,删掉,并创建同名的两个文件,在config.json
文件贴上如下配置
{
"dsj_dir": "/em/media/date/dsj/",
"dy_dir": "/em/media/date/dy/",
"rclone_dest_dsj": "tianyi:dsj",
"rclone_dest_dy": "tianyi:dy",
"tg_bot_token": "xxxx",
"tg_chat_id": "xxxx",
"monitoring_status": false
}
第一行/em/media/date/dsj/
是上面设置的电视剧媒体库目录
第二行/em/media/date/dy/
是电影
第三第四行tianyi:dsj
和tianyi:dy
是相应的网盘名称和路径。tianyi
是我rclone添加的网盘名称
第五行是tgbot的token,在文件上传成功或失败后发送提醒
第六行是你的tgid
6.alist-strm
docker run -d \
--name alist-strm \
-p 18080:5000 \
-v /em/strm/alist:/strm \
-v /em/docker/alist-strm/config:/config \
itefuir/alist-strm:latest
配置参考 :
我是分别为dsj和dy创建了两个配置,一个全量更新和一个增量更新。
先分别手动运行一次全量更新,然后定时任务每五分钟运行一次增量更新。
7.emby
docker run -d \
--name emby \
-v /em/strm:/strm \
-v /em/docker/emby/config:/config \
-e UID=0 \
-e GID=0 \
-e GLIST=0 \
-e GIDLIST=0,0 \
--net=host \
--device /dev/dri:/dev/dri \
--privileged \
--restart always \
amilys/embyserver:beta
安装完成后,进入后台创建api
媒体库路径选择本地strm
8.embyExternalUrl(可选)
cd /em
wget https://github.com/bpking1/embyExternalUrl/archive/refs/tags/v0.4.6.tar.gz
tar -zxvf v0.4.6.tar.gz
解压完成后打开/em/embyExternalUrl-0.4.6/emby2Alist/nginx/conf.d/constant.js
文件,修改以下三处
再修改/em/embyExternalUrl-0.4.6/emby2Alist/nginx/conf.d/config/constant-mount.js
中以下三处
修改完后重启,然后emby连接端口由原来的8096改为8091,就可以进行302直链播放。
只有你的网盘直链302重定向才有效果。
结束
我的方案其实还有很多可以简化的地方,但是这样虽然看着程序多,其实也不难-。-