DSH Plugins Marketplace

DSH Plugins

Plugins

/

dsh-bili-danmaku-overlay

d

dsh-bili-danmaku-overlay

Identified★ 1

Bilibili live danmaku as an always-visible overlay in the DSH Web UI.

B站直播弹幕浮层

简体中文 | English

在 DSH Web 界面里以常驻浮层显示 B 站直播间弹幕。浮层切换页面时不会卸载,可以一边干活一边看弹幕。

dsh-badge license-mit-badge

功能

  • 实时弹幕,断线自动重连;实时连接不可用时自动回退到历史拉取
  • 同时监控多个直播间,每个房间一个独立浮窗
  • B站小电视圆形入口,聚合显示整体连接状态和最新弹幕,点击展开菜单管理全部直播间,并可以直接重新打开这台浏览器连接过的直播间
  • 浮窗标题显示直播间真实标题,双击可以临时改名
  • 可以拖动浮窗右下角调整大小,也可以把浮窗最小化为标题栏或收回悬浮球,都不会中断监控
  • 房间未开播时先显示「当前房间未开播」,点「查看弹幕」才展开内容并解锁输入框
  • 显示在线人数,可以发弹幕,所有配置项都能在插件设置页里改

安装

dsh plugin --profile web add github:Mooling0602/dsh-bili-danmaku-overlay

安装完成后重启 dsh。包内自带 cordis.patch.yml,dsh 会自己把插件插入 bundle。也带有构建好的 JavaScript,所以安装过程不需要编译。

之后打开插件设置页,把 defaultRoom 设成要监听的直播间号即可。

卸载:

dsh plugin --profile web remove dsh-bili-danmaku-overlay

配置登录凭据

[!NOTE] 登录凭据保存在 dsh 宿主机上,而不是浏览器本地缓存。

确保你所使用的 dsh 实例只属于你自己,否则不建议使用本插件!

有两种登录方式,任选其一即可。推荐直接扫码登录。

第一种是在插件里扫码登录。当插件没有可用的凭据时,悬浮球菜单会显示相关报错,点击后弹窗里可以扫码登录。获取的登录态将保存在 ~/.dsh/bili-danmaku-overlay/credential.json,文件只有你自己可读,并且所有 profile 共用,因此只需扫一次而不是每个 profile 扫一次。扫码登录会自行续期,不需要你反复操作。

第二种是在 ~/.dsh/.credentials.yaml 里放 SESSDATA 和 bili_jct,由你自己维护。

refs:
  BILIBILI_SESSDATA: <你的 SESSDATA>
  BILIBILI_JCT: <你的 bili_jct>

取值方式:浏览器登录 B 站后打开开发者工具 -> Application -> Cookies -> https://www.bilibili.com,然后找到并复制这两个值。

只看弹幕只需 SESSDATA,发弹幕还需要 bili_jct。

这份凭据的有效期较短,且不续期,需要频繁维护。不想维护的话,用扫码登录更省事。

两种凭据都存在时由 preferCustomCredential 决定用哪个,默认开启表示优先用你手写的那份,扫码登录作为回退。关掉它则优先用扫码登录,例如手写的那份属于你已经不想再用的账号。

插件设置

所有配置项都能在插件设置页里改,修改后即时生效。

选项默认值说明
defaultRoom空默认直播间号,留空则每次手动输入
autoConnectfalse页面加载后自动连接默认直播间
historyLimit200浮窗最多保留的弹幕条数
historyFetch50每次拉取的历史条数
pollMinMs100历史轮询的最快间隔,出错时自动退避到更慢
statsIntervalMs60000在线人数刷新间隔
heartbeatMs30000弹幕服务器心跳间隔
showEnterMessagestrue显示「进入直播间」消息
showSuperChattrue显示醒目留言
requestTimeoutMs12000接口请求超时
checkCredentialOnLoadtrue页面加载时检查登录凭据,不可用时弹窗说明;仅在自动连接开启时生效
preferCustomCredentialtrue优先使用 dsh refs 中的凭据而不是扫码登录获得的登录态;首选不可用时改用另一个

前端设置

配置页里的「前端设置」只保存在当前浏览器,不写入 dsh 配置,拖动滑块即时生效。

选项范围默认值
悬浮球大小32–96px48px
窗口内缩放(DPI)50–300%100%
弹幕窗口大小240–720 × 180–760px320×300px

弹幕窗口的大小直接拖动窗口右下角调整,最小化的窗口只显示标题栏,不受影响。

「窗口内缩放」改变弹幕窗口里文字、间距和按钮的大小,也作用于悬浮球点开后的「正在监控弹幕的直播间」列表,但不影响窗口本身的大小,两者可以分开调。100% 表示跟随当前页面的浏览器缩放;数值过大或过小时设置页会给出提示,但仍然可以保存。

「前端设置」右上角的重置按钮会把悬浮球大小、窗口内缩放和弹幕窗口大小一起还原成默认值,没有改动时该按钮不可用。

说明

  • 在线人数是真实观看人数,不是 B 站某些接口返回的人气值。
  • 鼠标移到窗口左上角的状态点上,可以看到未开播、连接失败、正在查看历史弹幕、已连接这些具体状态。

开发

源码是 TypeScript,index.js 和 client.js 是构建产物。

npm run build
npm run typecheck

改完 src/ 后重新构建。client.js 刷新页面即可生效;index.js 是 Host 侧,需要重启 dsh。

许可证

MIT

Comments

Loading…