blivedm 0.5.0

Bilibili live room danmaku WebSocket client with TTS and plugin support
Documentation
# blivedm_rs

一个功能强大的 Bilibili 直播间弹幕 WebSocket 客户端 Rust 库,支持实时弹幕监控、文字转语音(TTS)和浏览器 Cookie 自动检测。

[English Version README](README.en.md)

## 🚀 主要功能

- **🖥️ 交互式 TUI 界面** - **v0.5.0 新功能!** 基于 ratatui 的终端用户界面,可滚动消息显示和交互式输入
- **🤖 智能自动回复** - **v0.4.0 新功能!** 基于关键词检测的自动回复系统,支持 Bilibili API 集成
- **🔍 智能 Cookie 检测** - 自动从主流浏览器(Chrome、Firefox、Edge、Opera)检测登录状态
- **💬 实时弹幕监控** - 连接 Bilibili 直播间,实时接收弹幕、礼物、进房等消息
- **🔊 多平台 TTS 支持** - 支持本地 TTS(Windows PowerShell、macOS say、Linux espeak-ng)和远程 TTS 服务器
- **🎛️ 插件化架构** - 模块化设计,支持自定义插件扩展功能
- **🖥️ 跨平台支持** - 原生支持 Windows、macOS、Linux
- **⚡ 高性能异步** - 基于 Tokio 的异步架构,低资源占用,高并发处理
- **🔧 灵活配置** - 支持 TOML 配置文件和命令行参数,可自定义 TTS 音量、语音等参数

## ✨ 自动浏览器 Cookie 检测

**无需手动提取 Cookie!** 客户端现在可以自动从您的浏览器检测 bilibili cookies。

支持 Linux、macOS 和 Windows 上的 Chrome、Firefox、Edge、Chromium 和 Opera。详情请参阅[浏览器 Cookie 文档](docs/browser-cookies.md)。

## 快速开始

### 安装方式

#### 从 crates.io 安装(推荐)

如果您已安装 Rust,可以直接从 crates.io 安装:

```bash
cargo install --locked blivedm
```

安装后即可在任何位置使用 `blivedm` 命令。

#### 从源码本地构建安装

```bash
# 克隆仓库
git clone https://github.com/jiahaoxiang2000/blivedm_rs.git
cd blivedm_rs

# 构建并安装到本地
cargo install --locked --path .
```

安装后即可在任何位置使用 `blivedm` 命令。

### 使用示例

```bash
# v0.4.0 新功能:启用自动回复插件
blivedm --room-id 12345 --auto-reply

# 自动检测浏览器 cookies(推荐)
blivedm --room-id 24779526

# 使用配置文件
blivedm --config config.toml

# 查看有效配置
blivedm --print-config

# 手动 cookies(必须包含 SESSDATA)
blivedm --cookies "SESSDATA=your_sessdata; other_cookie=..." --room-id 12345

# 使用 TTS REST API 服务器
blivedm --room-id 12345 --tts-server http://localhost:8000 --tts-volume 0.7

# 使用本地 TTS(macOS)
blivedm --room-id 12345 --tts-command say --tts-args "-v,Mei-Jia"

# 使用本地 TTS(Linux)
blivedm --room-id 12345 --tts-command espeak-ng --tts-args "-v,cmn"

# ⚠️ Windows 用户建议:使用 TTS 服务器获得更好的语音体验
# 本地 PowerShell TTS 存在技术限制,推荐使用远程 TTS 服务器:
blivedm --room-id 12345 --tts-server http://localhost:8000

# 显示所有可用选项
blivedm --help
```

### TTS 服务器设置(Windows 用户推荐)

**Windows 用户特别推荐使用 TTS 服务器!** 相比受限的本地 PowerShell TTS,服务器提供更好的语音质量和功能。

```bash
# 克隆并设置 TTS 服务器
git clone https://github.com/jiahaoxiang2000/danmu-tts.git
cd danmu-tts
# 按照仓库中的设置说明进行操作
```

**TTS 服务器优势:**

- 🎙️ **高质量语音** - 支持神经网络 TTS 和多种语音引擎
- 🌐 **多语言支持** - 支持中文、英文等多种语言
- ⚙️ **灵活配置** - 可自定义语音参数、音调、语速
- 🔧 **易于部署** - 独立运行,无需复杂配置

详细设置说明请参阅 [danmu-tts 仓库](https://github.com/jiahaoxiang2000/danmu-tts)。

## 📋 配置文件支持

**新功能!** 现在支持 TOML 配置文件,简化复杂命令行参数:

### 配置文件位置

客户端按以下顺序查找配置文件:

1. `--config` 指定的路径
2. 当前目录的 `config.toml`
3. `~/.config/blivedm_rs/config.toml`(XDG 配置目录)

### 配置文件格式

创建 `config.toml` 文件:

```toml
# 连接设置
[connection]
room_id = "24779526"
# cookies = "SESSDATA=your_sessdata; other_cookie=value"

# v0.4.0 新功能:自动回复配置
[auto_reply]
enabled = true
triggers = [
    { keywords = ["测试", "test"], response = "这是一个测]试回复" },
]
cooldown_seconds = 3

# TTS 配置
[tts]
server = "http://localhost:8000"
voice = "zh-CN-XiaoxiaoNeural"
backend = "edge"
quality = "medium"
format = "wav"
sample_rate = 22050
volume = 0.8

# 或使用本地 TTS 命令
# command = "say"
# args = "--voice=Kyoko"

# 调试日志
debug = false
```

### 配置优先级

配置值按以下优先级解析(从高到低):

1. **命令行参数**(最高优先级)
2. **环境变量**(如 `ROOM_ID``Cookie`3. **配置文件**4. **默认值**(最低优先级)

### 配置相关命令

```bash
# 使用指定配置文件
blivedm --config path/to/config.toml

# 查看有效配置(调试用)
blivedm --print-config

# 命令行参数覆盖配置文件
blivedm --config config.toml --room-id 12345 --debug

# v0.4.0 新功能:启用自动回复功能
blivedm --config config.toml --auto-reply
```

**提示:** 如果未找到配置文件,程序会自动创建示例配置文件 `config.toml.example` 供参考。

## 从源码构建

如果您希望从源码构建或进行开发,可以按照以下步骤:

```bash
# 克隆仓库
git clone https://github.com/jiahaoxiang2000/blivedm_rs.git
cd blivedm_rs

# 构建项目
cargo build --release

# 运行弹幕客户端(自动检测浏览器 cookies)
./target/release/blivedm --room-id 24779526

# 使用配置文件
./target/release/blivedm --config config.toml

# 或使用手动 cookies(必须包含 SESSDATA)
./target/release/blivedm --cookies "SESSDATA=your_sessdata; other_cookie=..." --room-id 24779526
```

### 系统要求

- **Rust**: 最新稳定版本
- **Linux**:
  - 音频支持:`sudo apt-get install libasound2-dev`
  - 构建工具:`sudo apt-get install pkg-config libssl-dev`
  - 可选 TTS:`sudo apt-get install espeak-ng`
- **macOS**: 无需额外依赖(使用内置 `say` 命令进行 TTS)
- **Windows**: 无需额外依赖(通过 System.Speech 使用内置 PowerShell TTS)

详细使用指南请参阅 [Danmu](docs/danmu.md) 页面。

## 文档

完整文档位于 [`docs/`](docs/) 文件夹中。主要部分包括:

- [入门指南]docs/README.md:介绍和设置说明。
- [浏览器 Cookie 自动检测]docs/browser-cookies.md**新功能!** 自动 cookie 检测的工作原理。
- [使用指南]docs/usage.md:如何在您的项目中使用该库。
- [架构]docs/architecture.md:项目架构和设计。
- [客户端模块]docs/client.md:客户端实现的详细信息。
- [弹幕模块]docs/danmu.md:弹幕模块的信息。
- [调度器]docs/scheduler.md:调度器组件概述。
- [插件]docs/plugins.md:可用插件及其使用方法。

## 参考

- [blivedm]https://github.com/xfgryujk/blivedm:Bilibili 直播弹幕协议的原始 Python 实现。
- [blivedm-rs]https://github.com/yanglul/blivedm_rs:blivedm 库的 Rust 移植版。
- [bililive-rs]https://github.com/LightQuantumArchive/bililive-rs:另一个用于 Bilibili 直播的 Rust 实现。
- [bilibili-API-collect]https://github.com/SocialSisterYi/bilibili-API-collect:SocialSisterYi 的 Bilibili API 集合。