Alist-Strm第二个大版本

大版本更新日志:

  1. 版本大更新,推翻之前所有脚本重构代码逻辑
  2. UI更换
  3. 创建strm使用alist的webdav服务,不再使用api。(意味着不支持签名了)
  4. 优化创建strm流程,加速单次运行时长。
  5. 支持设置下载时间间隔,避免某些存储过快请求导致阈值风控。
  6. 增加登录密码找回功能
  7. 增加项目web端口自定义启动支持(以避免host网络模式下端口冲突)
  8. 修复上个版本的定时任务偶尔失效问题(使用容器内置的cron服务进行定时任务管理)
  9. 将上个版本的校验功能分离出去,避免脚本误判导致误删本地有效strm文件导致文件丢失
  10. 校验功能增加慢扫(网络请求strm中的直链)
  11. 增加视频文件大小阈值功能(低于设置大小不创建strm)
  12. 增加额外功能(批量替换strm中的域名,用于alist端的IP、域名更换)
  13. 增加脚本内检查更新功能
  14. 优化日志查看页面,避免日志过长卡死浏览器

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/我的接收`

image-20241022234726385

目标目录:这个每次都会有人搞错啊。这里需要填写的是容器内部的路径。
下载文件时间间隔:填入你想要的时间间隔区间,是区间哈。比如说`2-5`那就是说脚本会自动从2-5中取随机数,在每下载一个文件之后自动停止多久时间。(如果不想要停止的话就填入0-0)
启用下载功能:是否启用下载元数据功能(即为是否下载图片、字幕等格式文件到目的路径。这些格式单独到脚本全局设置中了)
更新模式:分为增量和全量更新。(增量更新会向alist变量请求之后生成目录树后对比缓存目录树,只对有变动的文件进行创建。全量就是直接在本地操作了)

定时任务配置说明:

image-20241022235714341

很多东西都是字面意思就不做过多的解释了。

image-20241022235847758在这里可以添加多个配置文件进行创建定时任务。选择一个完成之后可以继续点击下拉框多选择一个。

image-20241022235922308

解释一下这三个任务模式:

运行strm创建:运行配置指定配置文件

strm文件有效性检测(快扫):对配置文件中的目的路径下的strm文件进行校验,快扫模式下是根据最新一次的缓存目录树跟本地进行对比。如果有出现本地有的最新的缓存目录树中没有的则判定为无效。缓存文件默认为24h过期,缓存文件由创建strm脚本生成。

strm文件有效性检测(慢扫):慢扫模式是通过curl命令对strm文件中的直链访问根据返回的状态码进行判断。(每一个strm文件的直链校验会有一个间隔时间,和下载间隔时间一样)

那么校验出失效的要如何删除呢?

在项目导航栏的失效的strm文件查看中,在这里你可以看到所有通过校验脚本校验出的失效的目录树。点击删除目录树后会同步删除strm文件以及空文件夹。

其他功能

image-20241023000740928

这玩意儿没啥好说的,就填入新旧域名即可了。

image-20241023000906267

需要注意的无非就是目的目录注意别填错了。

常见问题

为什么我创建的strm无法播放

排查办法:

  1. 先进alist网页看看是否能够正常播放
  2. 检查alist设置(全局)是否开启了签名所有
  3. 检查想要创建strm挂载的云存储是否单独开启了签名
  4. 检查docker网络跟alist网络是否互通(使用bridge网络模式创建的容器是没有IPV6的,请注意)

从旧版本升级到新版本网页报错了,部分功能不可用

解决办法:

  1. 停止容器
  2. 删除旧版本的数据库
  3. 重启容器

在容器未停止时删除了数据库,导致原有的账号密码丢失,重置也不管用

解决办法:

  1. 删除容器
  2. 重新创建一个容器
  3. 如果还不行只能重启机器了,数据缓存在内存中了无法释放。

115一跑起来就触发风控被阻断了

可能有效的解决办法:

  1. 增加alist中的分页数量(默认是56,可以尝试设置为9999)
  2. 如果还不行的话,尝试多cookie负载。

关于docker路径映射与项目中填写目的路径的相关解释:

假设你的宿主机上有一个目录 /home/user/myproject,你想在 Docker 容器中使用这个目录。你可以这样做:

  1. 确定宿主机路径/home/user/myproject
  2. 在容器中创建挂载点:假设你想在容器中使用 /app 作为挂载点。
  3. 建立连接:运行 Docker 容器时,使用 -v 参数将宿主机的路径和容器的挂载点连接起来:
docker run -v /home/user/myproject:/app myimage

这条命令的意思是:把宿主机上的 /home/user/myproject 目录映射到容器的 /app 目录。

  1. 在容器中使用文件:现在,当你的项目运行在容器中时,你可以直接访问 /app 目录,这个目录实际上就是宿主机上的 /home/user/myproject 目录。

为什么我创建了strm文件之后流媒体服务器播放还是走本地流量

这个问题跟本项目关系不是很大,但是还是会有很多人问。这个是需要对流媒体服务器进行其他的操作的。而不是仅仅依靠strm文件就可以自动走302直链的。关于这个问题请自行百度查找教程。

项目结语

后续如果有什么bug欢迎加入我们的交流群进行交流。也可以对项目提提建议(听不听那我不敢保证哦)。也欢迎大家在博客底下评论留言。本脚本由本人独立完成,如果有什么不对的地方欢迎大佬们指正。

最后修改:2024 年 10 月 23 日
如果觉得我的文章对你有用,请随意赞赏