Alist已在v2.6.2支持加载xml弹幕文件,原文仅做记录


Alist是一款优秀的支持多存储的文件列表程序,播放器采用artplayer
artplayer支持xml弹幕加载但Alist没有添加相关功能,遂自己改动

  1. 环境准备

    安装node.jsyarn

  2. 构建前端

    Alist的前端项目是Alist-web,clone并进入目录,
    安装artplayer-plugin-danmuku插件:

    yarn add artplayer-plugin-danmuku

    播放器文件是/src/pages/list/preview/video.tsx,导入库文件:

    import artplayerPluginDanmuku from 'artplayer-plugin-danmuku';

    artplayer-plugin-danmuku 默认没有声明文件,所以要在库文件下添加声明:
    在alist-web-2\node_modules\artplayer-plugin-danmuku文件下新建index.d.ts文件,内容填入

    declare module 'artplayer-plugin-danmuku';

    根据artplayer-plugin-danmuku文档添加所需功能后
    执行

    yarn && yarn build

    得到dist目录下的目标文件

  3. 构建后端

    构建后端需要安装一堆环境,故选择使用github Action进行构建
    将构建前端生成的dist目录打包为dist.tar.gz,上传至某处获得直链
    clone Alist到自己的Github,修改build.sh文件开头,修改为自己的dist文件直链

    #!/bin/bash
    
    # 构建前端,在当前目录产生一个dist文件夹
    BUILD_WEB() {
      curl -L https://xxxx.xxx/dist.tar.gz -o dist.tar.gz
      tar -zxvf dist.tar.gz
      rm -f dist.tar.gz
    }
    
    CDN_WEB() {
      curl -L https://xxxx.xxx/dist.tar.gz -o dist.tar.gz
      tar -zxvf dist.tar.gz
      rm -f dist.tar.gz
    }

    如果你需要构建在其他操作系统运行的alist,还需要在xgo -targets添加你需要的版本
    并且需要设定golang版本以避免默认版本的bug

    xgo -go go-1.17.1 -targets=linux/arm64,windows/amd64,darwin/amd64 -out "$appName" -ldflags="$ldflags" -tags=jsoniter .

    提交后,GitHub会自动构建。

  4. 使用

大约10分钟,GitHub构建完成,在Actions里找到构建的程序下载并启动
启动后修改dataconfig.json 的assets字段为 "/",以确保程序正确加载重新构建的前端文件

这里好像不能评论···

preView