这是一个针对 Neuro-sama 直播数据的爬虫项目。
- 直播监控: 实时监控 Bilibili 直播间开播状态。
- 弹幕采集: 使用 Selenium 自动化采集直播间弹幕。
- 数据处理: (开发中) 弹幕数据清洗与格式化。
- 数据传输: (开发中) 将数据推送至后端 API。
- Python 3.14+
- Docker (推荐用于部署)
- uv (推荐用于包管理)
- Chrome & ChromeDriver (本地运行时需要)
本项目使用环境变量进行配置。
- 复制
.env.example为.env。 - 填入后端接口信息 (
BACKEND_API_URL,BACKEND_API_TOKEN)。 - 配置直播间 ID (
BILIBILI_ROOM_IDS)。
使用 uv (推荐):
uv sync或者使用 pip:
pip install -e .# 使用 uv
uv run python src/main.py
# 或者直接运行 (需激活虚拟环境)
python src/main.py# 构建镜像
docker build -t neuro-sama-crawler .
# 运行容器
docker run --rm -it neuro-sama-crawler- 弹幕本地存储:弹幕数据采集后首先写入本地 jsonl 文件,便于后续统一整理、归档或批量上传。
- Pipeline 管理:
APIClient.register_crawler(crawler)会为每个爬虫分配文件句柄并挂载到爬虫对象,on_crawler_stop会关闭句柄,防止资源泄漏。 - 弹幕写盘字段:在写入时自动过滤内部使用的
ct(弹幕出现时间标识),同时在每条记录中加入now字段(格式%y-%m-%d-%H%M,例如25-12-07-1450)以标注写盘时间。 - 上传脚本与批量发送:新增
scripts/scp.sh(支持--dry-run、--output-dir、SSH key、重试),并在APIClient中实现send_data用于异步触发该脚本并捕获日志/返回码。 - Audio 请求鲁棒性:
AudioCrawler的网络请求已切换为带浏览器头的_fetch_json,包含重试和超时设置,以降低被 412/反爬拦截的概率,并修复了协程未 await 的 bug。 - Docker 构建与测试:Dockerfile 能在构建阶段运行测试,镜像命名为
neuro-sama-crawler:latest。