Repository navigation
Releases: Janson20/BiliCommentBot
Release list
v2.3.1
重构
- 拆分 main.py 为 bot.py + server.py + 独立 HTML 模板 (#1)
- 历史记录改为内存缓冲 + 批量 flush,避免 O(n) I/O
- 主循环改用 threading.Event.wait(),代替每秒 sleep(1)
- HTML 模板从 Python 字符串独立为 templates/index.html
新功能
- 回复过滤策略:关键词(白名单/黑名单)、评论长度、用户黑白名单 (#2)
- 评论去重逻辑,避免重复处理评论
- DeepSeek API 更新默认模型及地址
Bug 修复
- 修复历史记录加载被后续初始化覆盖导致 WebUI 为空
- 修复视频缓存 desc 为空(APP API 不返回 description,回退到 title)
- 修复 like_user_video 跳过 reply_delay 的问题
- 修复 refresh_token 不持久化
- 修复 DeepSeek API 无重试(加入指数退避重试)
- 修复 reload_config 不刷新缓存
v2.3.0
v2.3.0 — 修复"请求过于频繁"错误 & 全面切换 B站 APP 端 API
概述
彻底解决了大量用户反馈的「视频列表获取失败:请求过于频繁」问题。通过将视频相关接口从受限严格的 Web 端切换到频率限制宽松的 APP 端,并全面优化频率控制策略,视频列表获取成功率从 0 提升至接近 100%。
核心修复
1. 视频列表 API 切换为 B站 APP 端
- Web 端旧接口
api.bilibili.com/x/space/arc/search已废弃,该接口对爬虫类请求极其敏感,首次请求即触发-799频率限制 - 新接口
app.bilibili.com/x/v2/space/archive/cursor,模拟 BiliDroid Android 客户端请求(含 appkey+sign 签名和全套 APP 请求头),限制宽松 - 页间增加了自适应延迟,避免连续请求触发限制
- 被频率限制时可保存已获取的部分数据,不再全部丢弃
2. 频率控制策略升级
| 机制 | 旧 | 新 |
|---|---|---|
| 退避算法 | 线性 (1+0.5n) → 最多 5x | 指数 (2^n) → 最多 10x |
| 默认最小间隔 | 2s | 3s |
| 频率限制检测 | 仅 HTTP 429 | HTTP 429 + JSON 响应体错误码 (-509/-412/-799/10403) |
| 错误恢复 | 全部丢弃 | 部分结果保存 + 过期缓存回退 |
3. BVID↔AID 本地互转
- 移除
/x/web-interface/viewAPI 调用,改用纯数学算法本地转换 - 零网络开销,不再占用频率限制配额
4. 点赞视频切换为 APP 端
- 旧接口
api.bilibili.com/archive/like依赖 csrf token → 新接口app.bilibili.com/x/v2/view/like使用 APP 签名认证
基础设施
- 新增
_app_sign()— BiliDroid appkey+sign 签名算法 - 新增
_make_app_headers()— 随机 BiliDroid UA + APP 专用请求头 - 新增
_APP_COMMON_PARAMS— APP 请求通用标识参数 - 更新
.dockerignore/.gitignore规则
受影响的配置项
rate_limit.min_request_interval默认值从2.0提高到3.0- 旧
video_cache.json缓存格式已变化,建议首次运行前删除该文件
对比测试
修复前: 视频列表获取 18.2s → 全部失败 (-799)
修复后: 视频列表获取 0.5s → 19个视频全部成功
Full Changelog: v2.2.0...v2.3.0
v2.2.0
v2.1.0
新功能:
- 添加链式回复支持(楼中楼)功能
- 支持配置最大回复深度
- 默认启用链式回复
Bug 修复:
- 修复楼中楼回复参数错误(parent_id 传递错误)
- 修复机器人重复回复自己的评论(添加 UID 过滤)
- 修复楼中楼回复后历史记录未保存
优化:
- 增强日志记录
- 更新 Web UI 配置界面
- 更新配置示例和文档
文档:
- 更新 README.md
Full Changelog: v2.1.0...v2.2.0
v2.1.0
v2.1.0 更新
新功能
- 🔒 登录密码保护 — 新增 Web UI 访问密码功能,在配置 > 安全中开启,支持自定义密码修改、随机生成16位强密码,密码以 SHA-256 哈希存储在配置文件中
功能增强
- 🔥 回复后自动点赞用户视频 — 回复评论后可自动点赞该评论用户的最新视频
- 👥 仅给粉丝视频点赞 — 可配置只给关注了你的用户的视频点赞,需配置 UID
- 🎯 仅回复指定视频 — 支持填写 BVID 仅回复某个特定视频的评论,留空则回复全部视频
- 📊 更详细的操作日志 — 所有关键操作增加完整的日志记录,方便排查问题
修复与优化
- 优化评论上下文提示逻辑,生成回复更精准
- 优化一键启动器,简化更新流程
- 修复依赖兼容性问题
- 修复 Docker 镜像构建工作流
- README 文档内容更新完善
Full Changelog: v2.0.1...v2.1.0
v2.0.1
版本 v2.0.1 更新日志
🎉 新增功能
- Docker Hub 镜像发布
- 镜像地址:
janson20/bilicommentbot:latest - 用户可直接通过
docker pull拉取预构建镜像,无需自行构建 - 简化 Docker 部署流程,提升使用体验
- 镜像地址:
📝 文档更新
- 更新 README.md
- 新增 Docker Hub 镜像使用说明(推荐部署方式)
- 重组 Docker 部署章节,优先展示 Docker Hub 镜像方案
- 更新 docker-compose.yml 配置示例,改为使用 Docker Hub 镜像
- 添加镜像拉取和运行的完整命令说明
🚀 优化改进
- Docker 部署体验优化
- 用户无需自行构建镜像,直接使用官方镜像即可
- 缩短部署时间,提升部署成功率
- 统一镜像版本,确保用户使用最新的稳定版本
📋 使用方式
# 拉取最新镜像
docker pull janson20/bilicommentbot:latest
# 运行容器
docker run -d \
--name bilicomment-bot \
-p 5000:5000 \
-v $(pwd)/config.toml:/app/config.toml \
-v $(pwd)/data:/app/data \
-v $(pwd)/logs:/app/logs \
-v $(pwd)/history.json:/app/history.json \
-v $(pwd)/bilibili_cookie.json:/app/bilibili_cookie.json \
-v $(pwd)/video_cache.json:/app/video_cache.json \
-e TZ=Asia/Shanghai \
janson20/bilicommentbot:latest🔗 相关链接
- Docker Hub 镜像:https://hub.docker.com/r/janson20/bilicommentbot
- 项目地址:https://github.com/Janson20/BiliCommentBot
升级建议:推荐新用户直接使用 Docker Hub 镜像部署,现有 Docker 用户可参考 README 更新 docker-compose.yml 配置以使用官方镜像。
v2.0
🎉 BiliCommentBot v2.0 - Web UI Edition 发布
📌 重大更新
本次更新彻底重构了项目架构,将原有的命令行工具 + Tkinter GUI 整合为全功能 Web UI 版本。
✨ 新增功能
-
🌐 Web 管理界面
- 启动后自动打开浏览器访问
http://127.0.0.1:5000 - 所有功能通过图形化界面操作,无需命令行
- 深色主题,界面清爽美观
- 启动后自动打开浏览器访问
-
📊 控制台页面
- 一键启动/停止机器人
- 登录状态验证
- 实时统计:回复数、视频数、运行状态
- 一键清空缓存
-
⚙️ 配置管理(热更新)
- 6 个分类 Tab:B站、DeepSeek、回复策略、频率控制、缓存、日志
- 修改配置后立即生效,无需重启程序
- 可视化表单,操作直观
-
🔑 扫码登录
- 集成在 Web UI 中,无需额外工具
- 用 B 站 APP 扫码获取 Cookie
- 登录成功后自动写入配置
-
📋 实时日志(WebSocket)
- 实时推送程序运行日志
- 支持按级别过滤(INFO/WARNING/ERROR/DEBUG)
- 自动滚动到最新日志
-
📝 历史记录页面
- 分页查看所有回复历史
- 一键清空历史记录
🔧 技术升级
- 架构重构:Flask + Flask-SocketIO
- WebSocket 实时通信
- 机器人核心逻辑改为后台线程运行
- 前端采用纯 HTML/CSS/JS,内嵌在 Python 代码中
📦 依赖变更
新增依赖:
flask>=3.0.0
flask-socketio>=5.3.0
📝 升级指南
-
更新代码
git pull
-
安装新依赖
pip install -r requirements.txt
-
启动程序
python main.py
-
访问 Web UI
浏览器会自动打开
http://127.0.0.1:5000
⚠️ 注意事项
config_gui.py已弃用,功能完全迁移到 Web UI- 如需远程访问 Web UI,请修改代码中的 host 配置
- 首次启动会自动生成
config.toml
🐛 Bug 修复
- 修复 Cookie 刷新机制中的潜在竞态条件
- 优化日志输出的性能
📚 文档更新
- README.md 完全重写,适配 Web UI 使用方式
- 新增 Web UI 功能页面说明
🙏 感谢
感谢所有贡献者的反馈和建议,特别感谢大家在测试阶段的耐心配合!
Full Changelog: v1.2.1...v2.0
v1.2.1
v1.2.1
新增功能
-
GUI扫码登录获取Cookie
- 在配置工具(
config_gui.py)中集成B站扫码登录功能 - 点击"扫码获取Cookie"按钮,自动弹出二维码
- 用B站APP扫码确认后,Cookie自动填入输入框
- 无需手动从浏览器复制Cookie
- 在配置工具(
-
详细错误提示
- 优化错误信息展示,便于排查问题
-
详细日志
- 增加日志记录的详细程度
- 便于追踪程序运行状态
-
视频信息展示
- 支持在日志中显示视频相关信息
功能优化
-
视频列表分页支持
- 支持获取更多视频,提升评论覆盖范围
-
HTTP连接池优化
- 复用HTTP连接,提升请求效率
-
上下文管理支持
- 生成回复时可使用前N条评论作为上下文
-
配置优先级调整
config.toml优先级高于默认配置
依赖更新
- 新增依赖:
qrcode>=7.4.2,Pillow>=9.0.0
快速开始
# 安装依赖
pip install -r requirements.txt
# 运行GUI配置工具(推荐)
python config_gui.py
# 或直接运行机器人
python main.py配置说明
详细配置说明请参阅 README.md
Full Changelog: v1.2.0...v1.2.1
v1.2.0
v1.1.2
v1.1.2
问题修复
- 修复了更新
config.toml中的Cookie后不生效的问题
原因
- 程序优先从
bilibili_cookie.json文件读取Cookie,而不是从配置文件读取 - 导致用户更新配置文件中的Cookie后,程序仍在使用旧的Cookie
变更
- 调整Cookie加载优先级:优先从
config.toml读取 - 只有当配置文件中没有Cookie时,才从文件读取(兼容旧版本)
- 如果配置文件中没有
refresh_token,会自动尝试从文件加载
使用方法
- 直接在
config.toml中填写cookie即可生效,无需手动删除bilibili_cookie.json
Full Changelog: v1.1.1...v1.1.2
v1.1.1
v1.1.1
新增功能
- HTTP 连接池优化:添加连接池复用,显著提升网络请求性能
- 最大评论页数配置:新增
max_comment_pages配置项,可控制每次获取评论的最大页数 - 上下文管理器支持:
BiliCommentBot支持with语句,代码更优雅
性能优化
- 主会话配置连接池:
pool_connections=10, pool_maxsize=20 - Cookie 管理器会话配置连接池:
pool_connections=5, pool_maxsize=10 - 默认最大评论页数调整为 10 页,减少不必要的 API 调用
Bug 修复
- 修复
BilibiliCookieManager中self.logger未初始化导致的潜在错误
配置更新
在 [bilibili] 区块中添加:
max_comment_pages = 10 # 获取评论的最大页数Full Changelog: v1.1.0...v1.1.1