Skip to content

Releases: Janson20/BiliCommentBot

v2.3.1

Choose a tag to compare

@Janson20 Janson20 released this 25 Jul 11:19

重构

  • 拆分 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

Choose a tag to compare

@Janson20 Janson20 released this 13 Jun 01:54

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/view API 调用,改用纯数学算法本地转换
  • 零网络开销,不再占用频率限制配额

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

Choose a tag to compare

@Janson20 Janson20 released this 25 Apr 07:33

v2.1.0

新功能:

  • 添加链式回复支持(楼中楼)功能
  • 支持配置最大回复深度
  • 默认启用链式回复

Bug 修复:

  • 修复楼中楼回复参数错误(parent_id 传递错误)
  • 修复机器人重复回复自己的评论(添加 UID 过滤)
  • 修复楼中楼回复后历史记录未保存

优化:

  • 增强日志记录
  • 更新 Web UI 配置界面
  • 更新配置示例和文档

文档:

  • 更新 README.md

Full Changelog: v2.1.0...v2.2.0

v2.1.0

Choose a tag to compare

@Janson20 Janson20 released this 06 Apr 11:14

v2.1.0 更新

新功能

  • 🔒 登录密码保护 — 新增 Web UI 访问密码功能,在配置 > 安全中开启,支持自定义密码修改、随机生成16位强密码,密码以 SHA-256 哈希存储在配置文件中

功能增强

  • 🔥 回复后自动点赞用户视频 — 回复评论后可自动点赞该评论用户的最新视频
  • 👥 仅给粉丝视频点赞 — 可配置只给关注了你的用户的视频点赞,需配置 UID
  • 🎯 仅回复指定视频 — 支持填写 BVID 仅回复某个特定视频的评论,留空则回复全部视频
  • 📊 更详细的操作日志 — 所有关键操作增加完整的日志记录,方便排查问题

修复与优化

  • 优化评论上下文提示逻辑,生成回复更精准
  • 优化一键启动器,简化更新流程
  • 修复依赖兼容性问题
  • 修复 Docker 镜像构建工作流
  • README 文档内容更新完善

Full Changelog: v2.0.1...v2.1.0

v2.0.1

Choose a tag to compare

@Janson20 Janson20 released this 29 Mar 06:20

版本 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 镜像部署,现有 Docker 用户可参考 README 更新 docker-compose.yml 配置以使用官方镜像。

v2.0

Choose a tag to compare

@Janson20 Janson20 released this 28 Mar 01:30

🎉 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

📝 升级指南

  1. 更新代码

    git pull
  2. 安装新依赖

    pip install -r requirements.txt
  3. 启动程序

    python main.py
  4. 访问 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

Choose a tag to compare

@Janson20 Janson20 released this 14 Mar 15:29

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

Choose a tag to compare

@Janson20 Janson20 released this 14 Mar 05:42

v1.2.0

针对用户使用中存在的问题进行了修复。

Full Changelog: v1.1.2...v1.2.0

v1.1.2

Choose a tag to compare

@Janson20 Janson20 released this 28 Feb 13:05

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

Choose a tag to compare

@Janson20 Janson20 released this 16 Feb 09:52

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