Skip to content

Floating Live 弹幕接收工具的可视化界面版本

Notifications You must be signed in to change notification settings

Minteea/floating-live-gui

Repository files navigation

Floating Live GUI

Floating Live 弹幕接收工具的可视化界面版本,在 floating-live 模块的基础上添加了一些操作功能。

后端使用NodeJS开发,可视化程序界面使用Electron实现,前端界面使用React + Typescript开发,UI框架为Ant Design。

目前正处于开发阶段,请谨慎用于正式的使用场景。若使用时出现报错等情况,可在github页面上提issue。

工具库版本:Minteea/floating-live

使用方法

安装

目前暂未发布可执行程序版本,但可以自行打包为可执行程序。

目前也可以通过运行源代码的方式打开程序。

确认电脑上已安装 nodeJS (建议安装最新的稳定版),并在项目文件夹下输入下列指令以安装依赖,此处以npm包管理器为例:

npm install

运行

输入下列指令打开程序

npm run start

出现一个程序窗口,代表程序成功运行。

打包

npm run package

编译后的程序位于项目下的/out文件夹,打开文件夹并执行FloatingLiveGUI.exe即可。

功能

添加房间

进入【添加房间】选项卡,选择平台并输入直播间id,即可搜索房间。

点击添加按钮可将直播间添加到列表中,点击打开按钮可直接打开房间。

可以在【开始】选项卡中对房间进行操作。

目前支持bilibili直播间及AcFun直播间,后续会添加对更多平台的支持。

弹幕保存

进入【弹幕保存】选项卡,打开【记录弹幕到本地】即可记录弹幕。

可以更改弹幕文件保存位置,若文件夹路径不存在则会创建一个。

弹幕格式

为了提高弹幕记录的性能,弹幕记录文件为纯文本格式,文件后缀为.floatrec,由多个json对象组成,用逗号分隔,形式如下:

{消息数据...}, {消息数据...}, {消息数据...},

可以将上述内容手动改成json格式,即去掉最后一个多余的逗号,再用中括号[]包裹上述内容:

[{消息数据...}, {消息数据...}, {消息数据...}]

单条消息数据的ts类型格式如下:

interface MessageInterface {
    /** 平台名称, 一般为英文小写 */
    platform: string;
    /** 房间号 */
    room: number | string;
    /** 信息类型 */
    type: string;
    /** 消息时间戳 */
    timestamp: number;
    /** 数据信息, 不同的数据类型具有不同的格式 */
    info: {
        [attr: string]: any;
    };
    /** 其他属性 */
    [attr: string]: any;
}

以一条弹幕消息为例:

{
  "platform": "bilibili",     // 直播平台
  "room": 31426837,           // 房间号
  "type": "comment",          // 消息类型
  "timestamp": 1710344147079, // 时间戳
  "id": "comment:308906789-1710344147079",  // 消息id
  "info": {
    "color": 5816798,         // 颜色
    "mode": 1,                // 弹幕模式
    "content": "晚上好OwO",   // 消息内容
    "user": {                 // 用户信息
      "name": "Minteea薄茶",  // 用户名
      "id": 308906789,        // 用户id
      "medal": {              // 粉丝牌
        "level": 25,            // 粉丝牌等级
        "name": "鹿侯爷",       // 粉丝牌
        "id": 5659864,          // 粉丝牌所属主播用户id
        "membership": 3         // 粉丝牌所属直播间会员等级
      },
      "membership": 3,        // 直播间会员等级
      "type": 0               // 用户类型
    }
  }
}

目前支持的消息类型及支持程度如下: 🟩支持 🟨部分支持 ⬜尚未支持

类型 描述 bilibili AcFun
comment 评论 🟩 🟩
gift 礼物 🟩 🟩
superchat 付费留言 🟩
membership 开通直播间会员 🟩
entry 进入直播间 🟩 🟩
like 点赞 🟩
share 分享直播间 🟩
follow 关注直播间 🟩 🟩
join 加入粉丝团 🟩
block 禁言 🟩
lottery 直播抽奖消息
lottery_result 抽奖中奖名单
bonus 用户发送红包
bonus_result 红包中奖名单
live_start 直播开始 🟩 🟩
live_end 直播结束 🟩 🟩
live_cut 直播被切断 🟩 🟩
live_detail 直播信息更改 🟩 🟩
live_stats 直播数据更新 🟩 🟩

网页版本操作

开发模式下,程序也可以使用网页版进行操作。确保主程序窗口中【本地服务 > 启用websocket服务】处于打开状态。

打开浏览器,在地址栏中输入localhost:5173即可进入网页界面(vite server 默认入口)。

此时页面需要与后端连接才能对程序进行操作。在浏览器页面中进入【连接服务】,点击连接按钮即可连接主程序,设置项将实时同步。

TODO

当前版本 DEV 0.10.0

⬜计划中 · 🟨开发中 · ✅已实现

  • ✅ B站登录支持
  • ✅ 配置与登录信息保存
  • ✅ 服务端插件系统
  • 🟨 网页端插件系统
  • ⬜ 自动发送弹幕屏蔽插件
  • ⬜ 网页服务插件
  • ⬜ 弹幕记录文件读取
  • ⬜ 插件加载器

Q&A

现在已经有很多直播弹幕工具了,为什么还要自己再开发一个

虽然现在有不少直播弹幕接收程序,但是这些程序大部分都只支持一种平台。一些支持多平台的直播弹幕工具也并不开源,甚至要收费,难以实现高度自由的程序拓展。

这个弹幕接收程序的目标是接收来自不同平台的弹幕,将接收到的弹幕处理转化为统一的、易读的弹幕数据,并尽可能多地保存有效信息,提高程序及相关插件的易开发性和可拓展性。

为什么要用NodeJS而不是其他语言作为后端

众所周知,JavaScript是网页开发的常用语言,而后端代码与前端语言统一可以省去很多麻烦,比如可以使用同一套类型声明而无需在前后端同时修改。例如在这个项目的前端代码中就使用了在 floating-live 库中定义的类型及接口。而且前后端使用一种语言可以降低项目开发者的语言门槛。

技术栈

  • 语言 - TypeScript

  • 运行环境 - Nodejs

  • 桌面框架 - electron

  • web框架 - fastify

  • 构建工具 - yarn + Electron Forge

  • 前端框架 - React

  • 状态管理 - nanostores

  • UI框架 - Ant Design

相关链接

弹幕获取

About

Floating Live 弹幕接收工具的可视化界面版本

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages