用途:面向哔哩哔哩视频评论采集与 UP 主受众分析。当用户要求获取、导出或分析某个视频(BV 号、URL 或视频页)的评论时使用;也可在提供 UP 主 UID 后批量分析其多个视频。不适用于发表或删除评论、下载视频、弹幕、直播数据或私信。
主要能力:采集单个视频全部评论(顶层 + 嵌套 + 置顶),默认输出到 ./bilibili-comments/<BV>/,包含 comments.jsonl(每行一条评论)、summary.json(视频元数据、统计与 top-N)、raw/(原始 API 响应)及 .bbc-state.json(断点续传状态)。命令包括:bbc fetch <BV|URL>、bbc fetch-user <UID>、bbc summarize <dir>、bbc cookie-check、bbc schema [cmd]。
使用方式:需 Python 3.9+(仅标准库)及有效的 Bilibili cookie。推荐用浏览器扩展导出 cookies.txt,通过 --cookie-file 传入或设置 $BBC_COOKIE_FILE;也可用 $BBC_SESSDATA 环境变量或 --browser auto 自动检测。开始前先运行 python3 -m bbc cookie-check 验证 cookie。抓取示例:python3 -m bbc fetch BV1NjA7zjEAU。所有抓取命令支持 --dry-run 预览;重复运行会依据 .bbc-state.json 断点续传,加 --force 可重新抓取。
输出约定:stdout 为稳定 JSON 信封 {"ok":true,"data":...} 或错误信封;stderr 为人读日志与 NDJSON 进度事件。退出码 0 成功、1 运行时/API 错误、2 认证错误、3 校验错误、4 网络错误。错误码含 validation_error、auth_required、auth_expired、not_found、rate_limited、api_error、network_error。
分析流程建议:先读 summary.json(通常小于 10 KB)建立全局上下文,再用 Grep 或 head/tail 处理 comments.jsonl,典型分析包括情感分布、活跃粉丝、UP 主互动(is_up_reply=true)、IP 地域分布与反馈时间线。
限制:所有命令均为只读,不发送消息、不删除。API 返回的 all_count 含置顶评论,完整性校验为 top_level + nested + pinned == declared_all_count。超过约两年的旧评论在用户注销时可能数据稀少。反爬方面,过于激进的 --max 或频繁运行可能触发 HTTP 412,客户端请求间会休眠 1 秒并退避。更新检查每 24 小时最多一次,更新前会征得用户同意。