Skip to content

JavaHello/BilibiliDanmaku

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

bili_danmaku_archiver

Rust 编写的 Bilibili 直播弹幕采集与分析系统,使用 SQLite + FTS5 存储与检索,后端接口基于 Axum,前端界面基于 React。

目录结构

  • crates/core/:数据模型、SQLite、分析逻辑
  • crates/live/:Bilibili 直播 websocket 采集
  • apps/cli/:录制与命令行查询
  • apps/server/:Axum HTTP 接口
  • frontend/:React 控制台

这样 bili_server 不会链接直播采集依赖,bili_cli 也不会链接 Axum,编译后的二进制更小。

后端能力

  • 持续录制 DANMU_MSG
  • FTS5 + LIKE 回退的模糊搜索
  • 按时间范围查看弹幕
  • 用户最关注问题 Top 排行
  • 基于规则词典的情绪分析
  • tokenizers 分词 + ort 跑中文 ONNX embedding
  • ndarray 存储向量并做 mean pooling
  • linfa-clustering KMeans 聚类
  • 基于规则的情绪与问题标签
  • 按时间桶聚合的弹幕时间轴

后端运行

录制弹幕:

cargo run -p bili_cli -- record --room-id 30263297 --db danmaku.db --print

命令行搜索:

cargo run -p bili_cli -- search "普洱" --db danmaku.db --room-id 30263297 --limit 20

启动 API 服务:

cargo run -p bili_server -- --db danmaku.db --addr 127.0.0.1:3000 --model-dir models --tag-config tag-config.json

命令行跑 embedding 聚类:

cargo run -p bili_cli -- cluster \
  --db danmaku.db \
  --room-id 30263297 \
  --tokenizer /path/to/tokenizer.json \
  --model /path/to/model.onnx \
  --k 8 \
  --limit 500

API

  • GET /api/messages
  • GET /api/messages/timeline
  • GET /api/analysis/overview
  • GET /api/analysis/questions/top
  • GET /api/analysis/sentiment
  • GET /api/analysis/clusters
  • GET /api/models
  • POST /api/models/download
  • GET /api/config/tags
  • PUT /api/config/tags

常用参数:

  • room_id
  • query
  • exclude_keywords:逗号分隔,例如 复读,抽奖,送钛杯
  • start_ts
  • end_ts
  • limit
  • bucket_secs

聚类接口额外参数:

  • tokenizer_path
  • model_path
  • k
  • max_len
  • samples

模型下载接口请求体:

{
  "repo_id": "sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2",
  "revision": "main",
  "model_file": "onnx/model.onnx",
  "tokenizer_file": "tokenizer.json"
}

标签配置接口返回/保存的是完整 JSON,服务启动时如果 tag-config.json 不存在会自动生成默认配置。

前端运行

cd frontend
npm install
npm run dev

前端开发服务器默认在 5173,并代理 /api127.0.0.1:3000

说明

  • embedding 聚类依赖本地可访问的 tokenizer.json 与中文 embedding ONNX 模型
  • 前端模型分析页支持从 Hugging Face 下载模型到本地 model-dir,并从本地列表中直接选择
  • 前端提供“标签配置”页面,可直接编辑 tag-config.json 对应的规则 JSON
  • 私有仓库可通过 HF_TOKENHUGGINGFACE_TOKEN 环境变量透传认证
  • ort 采用动态加载模式,运行时需要可用的 ONNX Runtime 动态库
  • sent_at 统一按毫秒时间戳处理
  • 首次构建需要本机能够下载 Rust / npm 依赖

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors