Alist-Strm第二个大版本
大版本更新日志:
- 版本大更新,推翻之前所有脚本重构代码逻辑
- UI更换
- 创建strm使用alist的webdav服务,不再使用api。(意味着不支持签名了)
- 优化创建strm流程,加速单次运行时长。
- 支持设置下载时间间隔,避免某些存储过快请求导致阈值风控。
- 增加登录密码找回功能
- 增加项目web端口自定义启动支持(以避免host网络模式下端口冲突)
- 修复上个版本的定时任务偶尔失效问题(使用容器内置的cron服务进行定时任务管理)
- 将上个版本的校验功能分离出去,避免脚本误判导致误删本地有效strm文件导致文件丢失
- 校验功能增加慢扫(网络请求strm中的直链)
- 增加视频文件大小阈值功能(低于设置大小不创建strm)
- 增加额外功能(批量替换strm中的域名,用于alist端的IP、域名更换)
- 增加脚本内检查更新功能
- 优化日志查看页面,避免日志过长卡死浏览器
github地址,如果各位觉得脚本好用的可以帮我点个小星星哦。
部署
docker一键部署
命令行版本:
docker run -d --name alist-strm -p 18080:5000 -v /home:/home -v /volume1/alist-strm/config:/config -e WEB_PORT=5000 -e SECURITY_CODE=alist-strm itefuir/alist-strm:latest
#18080是宿主机端口 不是一定要这个 容器端口5000是一定要的
#/home是本地路径
#/config是项目的app.env和数据库的存放路径
#WEB-PORT是项目的网页端口(如果修改了webport也要对应修改容器映射出来的端口)
#SECURITY_CODE是安全码(用于重置密码时使用)
docker-compose.yaml配置
version: "3"
services:
alist-strm:
stdin_open: true
tty: true
volumes:
- /volume1/video:/volume1/video
- /volume1/alist-strm/config:/config
ports:
- "15000:5000"
container_name: alist-strm
# restart: always
image: itefuir/alist-strm:latest
network_mode: bridge
environment:
- WEB_PORT=5000
- SECURITY_CODE=alist-strm
配置说明
配置文件配置说明:
配置文件别名:就随意,等于备注
alist的url:是上面写的例如:http://192.168.100.1:5244
用户名、密码就是alist后台的账号密码
你想要生成 .strm 的 Alist 根路径:这是你alist的路径。访问alist后,点击你想要生成strm的目录像下图这样,那么就是填入 `/115/我的接收`
目标目录:这个每次都会有人搞错啊。这里需要填写的是容器内部的路径。
下载文件时间间隔:填入你想要的时间间隔区间,是区间哈。比如说`2-5`那就是说脚本会自动从2-5中取随机数,在每下载一个文件之后自动停止多久时间。(如果不想要停止的话就填入0-0)
启用下载功能:是否启用下载元数据功能(即为是否下载图片、字幕等格式文件到目的路径。这些格式单独到脚本全局设置中了)
更新模式:分为增量和全量更新。(增量更新会向alist变量请求之后生成目录树后对比缓存目录树,只对有变动的文件进行创建。全量就是直接在本地操作了)
定时任务配置说明:
很多东西都是字面意思就不做过多的解释了。
在这里可以添加多个配置文件进行创建定时任务。选择一个完成之后可以继续点击下拉框多选择一个。
解释一下这三个任务模式:
运行strm创建:运行配置指定配置文件
strm文件有效性检测(快扫):对配置文件中的目的路径下的strm文件进行校验,快扫模式下是根据最新一次的缓存目录树跟本地进行对比。如果有出现本地有的最新的缓存目录树中没有的则判定为无效。缓存文件默认为24h过期,缓存文件由创建strm脚本生成。
strm文件有效性检测(慢扫):慢扫模式是通过curl命令对strm文件中的直链访问根据返回的状态码进行判断。(每一个strm文件的直链校验会有一个间隔时间,和下载间隔时间一样)
那么校验出失效的要如何删除呢?
在项目导航栏的失效的strm文件查看
中,在这里你可以看到所有通过校验脚本校验出的失效的目录树。点击删除目录树后会同步删除strm文件以及空文件夹。
其他功能
这玩意儿没啥好说的,就填入新旧域名即可了。
需要注意的无非就是目的目录注意别填错了。
常见问题
为什么我创建的strm无法播放
排查办法:
- 先进alist网页看看是否能够正常播放
- 检查
alist
设置(全局)是否开启了签名所有 - 检查想要创建strm挂载的云存储是否单独开启了签名
- 检查docker网络跟alist网络是否互通(使用
bridge
网络模式创建的容器是没有IPV6的,请注意)
从旧版本升级到新版本网页报错了,部分功能不可用
解决办法:
- 停止容器
- 删除旧版本的数据库
- 重启容器
在容器未停止时删除了数据库,导致原有的账号密码丢失,重置也不管用
解决办法:
- 删除容器
- 重新创建一个容器
- 如果还不行只能重启机器了,数据缓存在内存中了无法释放。
115
一跑起来就触发风控被阻断了
可能有效的解决办法:
- 增加alist中的分页数量(默认是56,可以尝试设置为9999)
- 如果还不行的话,尝试多cookie负载。
关于docker路径映射与项目中填写目的路径的相关解释:
假设你的宿主机上有一个目录 /home/user/myproject
,你想在 Docker 容器中使用这个目录。你可以这样做:
- 确定宿主机路径:
/home/user/myproject
。 - 在容器中创建挂载点:假设你想在容器中使用
/app
作为挂载点。 - 建立连接:运行 Docker 容器时,使用
-v
参数将宿主机的路径和容器的挂载点连接起来:
docker run -v /home/user/myproject:/app myimage
这条命令的意思是:把宿主机上的 /home/user/myproject
目录映射到容器的 /app
目录。
- 在容器中使用文件:现在,当你的项目运行在容器中时,你可以直接访问
/app
目录,这个目录实际上就是宿主机上的/home/user/myproject
目录。
为什么我创建了strm文件之后流媒体服务器播放还是走本地流量
这个问题跟本项目关系不是很大,但是还是会有很多人问。这个是需要对流媒体服务器进行其他的操作的。而不是仅仅依靠strm文件就可以自动走302直链的。关于这个问题请自行百度查找教程。
项目结语
后续如果有什么bug欢迎加入我们的交流群进行交流。也可以对项目提提建议(听不听那我不敢保证哦)。也欢迎大家在博客底下评论留言。本脚本由本人独立完成,如果有什么不对的地方欢迎大佬们指正。
4 条评论
谢谢博主的分享。我是问题是,日志中:INFO - 文件大小不匹配。。。预期: 462472,实际: 51。另外看不到下载的文件,如字幕。但日志提示,已经下载了
查看下是不是alist开了签名了
115风控太严重了,能不能加个115的目录间隔设置。
最新版本默认加了暂停时间了