Coder Social home page Coder Social logo

xfgryujk / blivechat Goto Github PK

View Code? Open in Web Editor NEW
2.1K 18.0 245.0 8.49 MB

用于OBS的仿YouTube风格的bilibili直播评论栏

License: MIT License

Python 20.64% JavaScript 60.09% HTML 0.19% Vue 12.05% Dockerfile 0.09% CSS 6.94%
bilibili bilibili-live obs-studio

blivechat's Introduction

blivechat

用于OBS的仿YouTube风格的bilibili直播评论栏

OBS截图

Chrome截图

样式生成器截图

特性

  • 兼容YouTube直播评论栏的样式
  • 高亮舰队、 房管 、主播的用户名
  • 自带两种样式生成器,经典YouTube风格和仿微信风格
  • 支持屏蔽弹幕、合并礼物等设置
  • 支持前端直连B站服务器或者通过后端转发
  • 支持自动翻译弹幕、醒目留言到日语,可以在后台配置翻译目标语言
  • 支持标注打赏用户名的读音,可选拼音或日文假名
  • 支持配置自定义表情,不需要开通B站官方表情
  • 支持插件开发

使用方法

以下几种方式任选一种即可。正式使用之前记得看注意事项

推荐的方式:如果你需要使用插件、翻译等高级特性,则在本地使用;否则推荐直接通过公共服务器在线使用。因为本地使用时不会自动升级版本,有时候出了问题不能及时解决;但公共服务器会禁用部分高级特性,如果你有需要,只能本地使用了

一、本地使用

  1. 下载本地分发版(仅提供x64 Windows版)。也可以在B站商店下载

  2. 双击blivechat.exe运行服务器。或者用命令行可以指定host和端口号:

    blivechat.exe --host 127.0.0.1 --port 12450

    或者也可以在配置文件里指定host和端口号

  3. 用浏览器打开http://localhost:12450,输入主播在开始直播时获得的身份码,复制房间URL

  4. 用样式生成器生成样式,复制CSS

  5. 在OBS中添加浏览器源,输入URL和自定义CSS

二、公共服务器

直接用浏览器打开公共服务器,剩下的步骤和本地使用时是一样的

三、源代码版(自建服务器或在Windows以外平台)

  1. 由于使用了git子模块,clone时需要加上--recursive参数:

    git clone --recursive https://github.com/xfgryujk/blivechat.git

    如果已经clone,拉子模块的方法:

    git submodule update --init --recursive
  2. 编译前端(需要安装Node.js):

    cd frontend
    npm i
    npm run build
  3. 运行服务器(需要Python3.8以上版本):

    pip3 install -r requirements.txt
    python3 main.py

    或者可以指定host和端口号:

    python3 main.py --host 127.0.0.1 --port 12450
  4. 用浏览器打开http://localhost:12450,以下略

四、Docker(自建服务器)

  1. docker run --name blivechat -d -p 12450:12450 \
      --mount source=blivechat-data,target=/mnt/data \
      xfgryujk/blivechat:latest
  2. 用浏览器打开http://localhost:12450,以下略

服务器配置

服务器配置在data/config.ini,可以配置数据库和允许自动翻译等,编辑后要重启生效

自建服务器时强烈建议不使用加载器,否则可能因为混合HTTP和HTTPS等原因加载不出来

常用链接

blivechat's People

Contributors

chuangzhu avatar dependabot[bot] avatar halfmai avatar reitowo avatar simon300000 avatar ssoda01 avatar xfgryujk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

blivechat's Issues

功能建议:自定义表情包功能

刚刚在别的直播间看到发 (doge) 会出现狗头表情包,所以就想到了这个功能
主播可以加自己的表情包然后透过一些(關鍵字)来触发,显示在弹幕姬上
如果可以的话甚至可以复刻油管专属会限表情包功能
不知大佬意下如何

关于最小化问题

发布版的blivechat的exe文件最小化的时候能不能最小化到托盘?频繁切窗口的话感觉很容易被误关掉

【功能增加】是否会考虑加入弹幕关键词抓取功能?

作者好,非常喜欢您的项目,我是一名B站主播。
我们直播间玩的是一种单机游戏,但是我们利用水友弹幕指挥自己国家,主播帮忙进行操作,然后开海打战。

是否可以增加一个,关键词抓起功能,然后高亮显示或者用什么方式来提现主播,以防看漏或者忘记操作。

比如: 弹幕1:罗马帝国 宣战 大秦。
弹幕2: 种地盟 议和 星球帝国。

这里的“宣战”和“议和” 就是关键词,也是主播需要去操作的地方。
作者是否愿意增加此功能呢~ 期待你的回信。

1.6 TODO

  • 升级弹幕协议
  • 支持官方表情
  • 后端架构优化,到B站的连接和到客户端的连接解耦
  • 客户端断开连接后延迟销毁房间,防止短时间后重连
  • 前端优化,不要在子组件修改父组件状态
  • UI小优化,升级舰长图标、支持同时显示房管和舰长图标
  • 考虑房间内也做i18n?
  • 支持自定义表情,后端可配置是否允许上传图片
  • docker目录优化,挂载的卷合成一个

符号转译问题

反斜杠“\”会被转译成"¥",这算是BUG还是刻意为之呢?
原始弹幕
原始弹幕.png

弹幕姬显示弹幕
弹幕姬显示弹幕.png

编译时出错

在运行npm run build时出错

> [email protected] build
> vue-cli-service build


⠹  Building for production...Error: error:0308010C:digital envelope routines::unsupported
    at new Hash (node:internal/crypto/hash:67:19)
    at Object.createHash (node:crypto:135:10)
    at module.exports (/Users/liulee/Documents/blivechat/frontend/node_modules/webpack/lib/util/createHash.js:135:53)
    at NormalModule._initBuildHash (/Users/liulee/Documents/blivechat/frontend/node_modules/webpack/lib/NormalModule.js:417:16)
    at handleParseError (/Users/liulee/Documents/blivechat/frontend/node_modules/webpack/lib/NormalModule.js:471:10)
    at /Users/liulee/Documents/blivechat/frontend/node_modules/webpack/lib/NormalModule.js:503:5
    at /Users/liulee/Documents/blivechat/frontend/node_modules/webpack/lib/NormalModule.js:358:12
    at /Users/liulee/Documents/blivechat/frontend/node_modules/loader-runner/lib/LoaderRunner.js:373:3
    at iterateNormalLoaders (/Users/liulee/Documents/blivechat/frontend/node_modules/loader-runner/lib/LoaderRunner.js:214:10)
    at iterateNormalLoaders (/Users/liulee/Documents/blivechat/frontend/node_modules/loader-runner/lib/LoaderRunner.js:221:10)
    at /Users/liulee/Documents/blivechat/frontend/node_modules/loader-runner/lib/LoaderRunner.js:236:3
    at runSyncOrAsync (/Users/liulee/Documents/blivechat/frontend/node_modules/loader-runner/lib/LoaderRunner.js:130:11)
    at iterateNormalLoaders (/Users/liulee/Documents/blivechat/frontend/node_modules/loader-runner/lib/LoaderRunner.js:232:2)
    at Array.<anonymous> (/Users/liulee/Documents/blivechat/frontend/node_modules/loader-runner/lib/LoaderRunner.js:205:4)
    at Storage.finished (/Users/liulee/Documents/blivechat/frontend/node_modules/enhanced-resolve/lib/CachedInputFileSystem.js:55:16)
    at /Users/liulee/Documents/blivechat/frontend/node_modules/enhanced-resolve/lib/CachedInputFileSystem.js:91:9
/Users/liulee/Documents/blivechat/frontend/node_modules/loader-runner/lib/LoaderRunner.js:114
			throw e;
			^

Error: error:0308010C:digital envelope routines::unsupported
    at new Hash (node:internal/crypto/hash:67:19)
    at Object.createHash (node:crypto:135:10)
    at module.exports (/Users/liulee/Documents/blivechat/frontend/node_modules/webpack/lib/util/createHash.js:135:53)
    at NormalModule._initBuildHash (/Users/liulee/Documents/blivechat/frontend/node_modules/webpack/lib/NormalModule.js:417:16)
    at handleParseError (/Users/liulee/Documents/blivechat/frontend/node_modules/webpack/lib/NormalModule.js:471:10)
    at /Users/liulee/Documents/blivechat/frontend/node_modules/webpack/lib/NormalModule.js:503:5
    at /Users/liulee/Documents/blivechat/frontend/node_modules/webpack/lib/NormalModule.js:358:12
    at /Users/liulee/Documents/blivechat/frontend/node_modules/loader-runner/lib/LoaderRunner.js:373:3
    at iterateNormalLoaders (/Users/liulee/Documents/blivechat/frontend/node_modules/loader-runner/lib/LoaderRunner.js:214:10)
    at /Users/liulee/Documents/blivechat/frontend/node_modules/loader-runner/lib/LoaderRunner.js:186:6
    at context.callback (/Users/liulee/Documents/blivechat/frontend/node_modules/loader-runner/lib/LoaderRunner.js:111:13)
    at /Users/liulee/Documents/blivechat/frontend/node_modules/cache-loader/dist/index.js:240:7
    at /Users/liulee/Documents/blivechat/frontend/node_modules/neo-async/async.js:2830:7
    at done (/Users/liulee/Documents/blivechat/frontend/node_modules/neo-async/async.js:2865:11)
    at /Users/liulee/Documents/blivechat/frontend/node_modules/neo-async/async.js:2818:7
    at Array.<anonymous> (/Users/liulee/Documents/blivechat/frontend/node_modules/cache-loader/dist/index.js:229:9) {
  opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
  library: 'digital envelope routines',
  reason: 'unsupported',
  code: 'ERR_OSSL_EVP_UNSUPPORTED'
}

Node.js v17.7.2

添加播放gif动图功能

您好,John。你所做的让我感觉到太惊喜了。没想到有人能做出像twitch直播的功能。如果方便,我也想为这个repository贡献自己的一份力量。谢谢,如果看到了请回复。

运行出问题了

sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) unable to open database file
(Background on this error at: http://sqlalche.me/e/e3q8)
[2488] Failed to execute script main

这是错误报告,可能是这个网址导致的
使用最新的releases版,在powershell输入.\blivechat.exe --host 127.0.0.1 --port 12450 运行
因为直接打开exe会由于出错导致窗口直接关闭

关于本地使用的 GUI 问题

有打算搞GUI嘛?

没有的话我就用tk写个UI了。

TODO:

  • 能最小化到托盘窗口,控制台窗口容易一不小心点了关掉。

1.4 TODO

  • 添加服务器配置
  • 添加自动翻译弹幕到日语

仿微信样式的建议

在微信样式中,弹幕聊天气泡还在用老式的圆润边框。这个边框和SC使用的圆角长方形在视觉上有极大的违和感。
希望作者可以考虑下把防微信模式的聊天气泡样式改为和SC一致的圆角长方形或者提供一种选项,允许用户自行切换。

运行出问题了

sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) unable to open database file
(Background on this error at: http://sqlalche.me/e/e3q8)
[2488] Failed to execute script main

这是错误报告,可能是这个网址导致的
使用最新的releases版,在powershell输入.\blivechat.exe --host 127.0.0.1 --port 12450 运行
因为直接打开exe会由于出错导致窗口直接关闭

大神们,能不能添加个功能

Hi,你好。
我是一个月前和你接触的迷弟。我是想添加个收到礼物会播放一个提前预设的gif图和录音,就像twitch平台那样。但是没搞定,所以只能求助大神们。我的想法是类似弹幕一样,有一个独立的网页,但是这个网页只是在接收到礼物会显示出来,预设一段播放时间,然后就变透明。你们觉得怎么样?

支持deepl.com api翻译弹幕

因为deepl翻译相较于腾讯翻译&百度翻译会更加精准且人性化,所以如果可以在blivechat使用deepl翻译会更便于理解
希望可以考虑支持

1.5 TODO

  • 重构前端
  • 添加前端直连B站弹幕服务器
  • 添加打赏用户名标注拼音
  • 前端一段时间没有收到消息自动断线
  • 添加仿line样式生成器
  • 添加测试房间
  • 添加标准翻译API

【PR request】我写了自定义弹幕表情包功能

DoodleBears/blivechat
在README.md 有写简单的介绍
实机演示图

自定义弹幕表情包(弹幕转图片) —— 用正则表达式对弹幕内容做replace成img标签

  1. 用正则表达式替换用户弹幕内容为html内容(在文字之间插入图片)
  2. 从本地读取图片在/frontend/dist/static放入自己图片
  3. 配置 danmu_pic.json 主要3个参数keyword、image、height,对应弹幕关键词,图片名称,图片高度

其他小改动

  1. 最低金额设置可为float —— 设置为0时能显示金瓜子礼物,设置为0.1时候则仅显示金瓜子礼物(因为金瓜子礼物最低价格0.1RMB)
  2. 区分舰队中的舰长、提督、总督,方便CSS做设定
  3. 同时显示管理员和舰长的icon,样式采用舰队样式(判定舰队优先级高于管理员)

功能建议:新弹幕显示在顶端

目前似乎大多数弹幕显示工具弹幕似乎都是"新弹幕添加到末尾"的,在使用中,如果虚拟主播把自己的形象和弹幕显示放在同一侧,这样新弹幕就很有可能被遮挡,观众无法确认弹幕是否发送成功,如果看录播则会出现不知道主播正在与之互动的最新弹幕是哪一个,而价值相对下降的旧的弹幕则会被长时间顶上去,更容易看到。

因此我希望该项目能不能提供可选项,让新的弹幕显示在画面顶端,旧的弹幕向下运动? 这样更能节省直播界面空间,就算用什么挡住了弹幕显示的下半部分也几乎不会影响体验。

仔细观看了您提供的css设置和各种弹幕设置,没有看到类似的功能,希望能添加此使用功能 0v0

  • 对不起手滑按到提交了,遂编辑之

在1.4.2版本里选择字体的问题!

1.4.0能用的字体在新版本(1.4.2)里用不了了。

在选择字体的列表里,选哪个都应用不了中文上,直接粘贴字体名称的话,右边的预览窗口倒是能预览到字体,但是粘贴CSS到obs就应用不了字体。

斐讯N1 DOCKER启动容器时Exited (1) 错误,docker logs没有名为“blivedm”的模块

拉去的容器是:
docker pull ghcr.io/jitingcn/blivechat:sha-81ef492
https://github.com/jitingcn/blivechat/pkgs/container/blivechat

报错信息:

root@N1:~# docker logs blivechat
Traceback (most recent call last):
  File "main.py", line 11, in <module>
    import api.chat
  File "/root/blivechat/api/chat.py", line 15, in <module>
    import blivedm.blivedm.client as blivedm_client
ModuleNotFoundError: No module named 'blivedm.blivedm'

关于翻译问题

启动软件,出现腾讯翻译无法获取qtv参数,有道翻译处于冷却状态,b站自带翻译出现-400状态码,提示无效参数,有道和百度可能是我ip被暂时屏蔽,但是腾讯翻译换ip还是无法获取qtv参数

样式生成小bug

在播放动画且字样消失后,即使在其他地方修改样式,消失的文本也不会再出现了。并且送礼super chat似乎没有正确的动画
希望预览动画时,消失动画能够提前发生。
命令行可以ctrl+c退出/托盘模式
还想问一下new member是什么意思 有人关注么0 0

缺少文件

release下载的zip运行mian.py的时候报错
ModuleNotFoundError: No module named 'blivedm.blivedm'
打开blivedm文件夹的时候发现确实什么都没有
当然,在code页面能找到这个文件

1.3 TODO

  • 添加数据库(sqlalchemy+线程)
  • 配置持久化 前端配置放在URL参数
  • 多配置
  • 头像缓存持久化

SuperChat功能意見

想知道這個項目會不會繼續更新?
未來會不會有類似真正的SuperChat功能?
例如 可以讓DD們投餵金瓜子或者上艦後一定秒數內(可以自定義時長?)可以輸入 $ xxxxx 取代原本Sent 小電視飛船x1
並且可以置頂一定時間(可以自定義?)

1.2 TODO

  • 增加最大消息数
  • 重复标记颜色用HSL,色调插值
  • SC配置按美元汇率
  • SC内容优化
  • 加强头像频率限制
  • 前端心跳、掉线重连
  • 弹幕频率低时平滑滚动
  • 自动检查更新

房间URL文本框内与按钮地址不一致

自行部署在python main.py时出错

windows sever 2012
PS D:\blive\blivechat> python main.py
Traceback (most recent call last):
File "D:\blive\blivechat\main.py", line 11, in
import api.chat
File "D:\blive\blivechat\api\chat.py", line 15, in
import blivedm.blivedm.client as blivedm_client
ModuleNotFoundError: No module named 'blivedm.blivedm'

建议加入弹幕对齐设置

默认弹幕都是左对齐,适合放在屏幕左侧。
希望加入选项,能够设置为右对齐和居中对齐。

选择弹幕自动消失,旧弹幕消失之后,新弹幕出现的位置仍然在旧弹幕下方,不会从初始位置出现,希望能调整为弹幕消失之后新弹幕从初始位置出现。

腾讯翻译白嫖版好像不能用了

2021-08-21 19:16:33 INFO [__main__]: Server started: 127.0.0.1:12450
2021-08-21 19:16:33 ERROR [models.translate]: TencentTranslateFree init failed: initial global variables not found
NoneType: None

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.