Skip to content
BestBczPublic

About

一个智能解析B站视频/动态链接并支持自动下载发送到QQ群的Mirai插件 A Mirai plugin that intelligently parses Bilibili video links and supports automatic downloading and sending to QQ groups

Topics

Resources

Stars

34 stars

Watchers

1 watching

Forks

Repository files navigation

BiliVideoParser

Github MiraiForum


🌱 一个智能解析B站视频链接和动态链接并支持自动下载发送到QQ群的Mirai插件


🛠️安装&依赖前置

  1. 从 Release 中选择一种安装包:*.mirai2.jar 是单插件包(首次启动时由 Mirai 下载第三方依赖);*-with-dependencies.mirai.jar 已内置第三方 JVM 依赖,适合服务器无法下载依赖时使用。
  2. 将Jar文件放入 %mirai文件根目录%/Plugins/ 中
  3. 重新启动你的mirai-console
  4. 同一时间只安装其中一种包,更新时移除旧版本和另一种包。

🛠️依赖前置(请安装到你搭建机器人的服务器上)

Important

两种插件包均不包含 FFmpeg 可执行文件。无需安装 yt-dlp。

🛠️指令依赖↓


🧐部分功能一览

  • 视频解析下载
  • 封面图下载并单独发送
  • 视频链接解析
  • 视频详细信息解析
  • 自动删除下载视频
  • Config文件
  • 长链接bilibili.com/video/BVxxx 和 短链接b23.tv/xxxx 的选择
  • 指令支持
  • 设置管理员
  • 群组黑白名单控制
  • 下载前询问用户
  • 专栏解析
  • 动态解析
  • 视频分p解析
  • 更多自定义配置支持
  • 清晰度选择
  • 扫码登录、会话保存和大会员清晰度
  • 更多...

🔑指令

  • /bilivideoparser
  • /bvp
  • 用法: /bvp [option] [value]
可用选项:
enable # 开关插件
shortlink # 开关短链接
info # 开关详细信息
download # 开关下载视频
addadmin # 添加管理员
removeadmin # 移除管理员
listadmins # 管理员列表
addwhite # 添加群白名单
addblack # 添加群黑名单
removewhite # 移除白名单
removeblack # 移除黑名单
listgroups # 查看群组列表
sendlink # 是否发送解析后的视频链接
askdownload # 是否开启询问
thumbnail # 开关下载封面
setminduration # 设置最小时长(分钟)
setmaxduration # 设置最大时长(分钟)
login # 扫码登录B站
loginstatus # 查看登录账号和大会员状态
logout # 取消扫码并清除本地登录和手动 Cookie
setquality # 设置清晰度 (16,32,64,74,80,112,116,120,127)

📷插件截图

相关截图 image

mirai论坛好像炸了 之前的图片都失效了


💡 Config已实现自动更新,旧版Config.yml已失效,新版BiliVideoParserConfig.yml会自动生成在同一文件夹

Config 介绍 Default 可改参数
configVersion 配置版本号,用于自动检测和更新旧版配置,请勿自行修改 IGNORE
enableParsing 是否启用解析功能 true false
useShortLink 是否使用短链接(b23.tv);若为 false 则使用长链接(bilibili.com) true false
enableDetailedInfo 是否显示详细视频信息(包括up主、播放量、评论数、简介、点赞、收藏、投币、转发) true false
enableDownload 是否启用视频下载功能 true false
adminQQs 管理员QQ 123456789 %QQ号%
groupWhiteList 白名单群号列表(优先生效) [] %群号%
groupBlackList 黑名单群号列表 [] %群号%
sendlink 是否发送解析后的视频链接 true false
askBeforeDownload 是否在下载前询问用户 false true
enableThumbnail 是否下载并发送视频封面图 false true
minimumDuration 允许解析的视频最小时长(分钟),0为不限制 0 &number&
maximumDuration 允许解析的视频最大时长(分钟),0为不限制 25 &number&
minDurationTip 视频过短时的提示语 '视频太短啦!不看不看~' /
maxDurationTip 视频过长时的提示语 '视频太长啦!内容还是去B站看吧~' /
videoQuality 视频清晰度:16=360P、32=480P、64=720P、74=720P60、80=1080P、112=1080P+、116=1080P60、120=4K、127=8K 16 对应数字
bilibiliCookie 可选的 B站 Cookie;服务器遇到 HTTP 412/-352 风控时可配置,留空为游客模式 空字符串 浏览器 Cookie
ffmpegPath FFmpeg 可执行文件路径,用于合并 DASH 音视频 ffmpeg PATH 中的命令或完整路径

扫码登录与大会员清晰度(v2.4.0)

  1. 在机器人控制台或配置中 adminQQs 管理员的聊天中执行 /bvp login。聊天中会发送二维码;控制台会输出 data/com.bcz.bilivideoparser/login-qrcode.png 的本机路径。
  2. 使用哔哩哔哩 APP 扫码,并在手机上确认登录。二维码有效期约 3 分钟,同一时间只允许一项扫码任务;超时后重新执行命令。
  3. 登录成功后,会话自动写入插件数据目录的 bilibili-session.json,重启后自动恢复,无需将 Cookie 粘贴进 YAML。扫码过程使用新会话;保存成功后替换旧会话并清空手动 Cookie,避免新登录与旧票据混用。视频、动态、专栏请求共用新会话及设备 Cookie。
  4. 执行 /bvp loginstatus 可查看当前账号及大会员状态。会话失效后重新执行 /bvp login。执行 /bvp logout 会取消扫码并删除本地会话、清空手动 Cookie,之后使用游客模式;它不会注销手机或浏览器上的账号。

登录管理命令仅允许 adminQQs 中的管理员及控制台使用,不会因为授予了普通配置命令权限就允许修改登录账号。登录二维码与会话文件请仅交给账号使用者,不要提交到仓库。

大会员清晰度需要使用已开通大会员的账号,并且视频本身提供对应画质。例如 /bvp setquality 116 选择 1080P60,/bvp setquality 120 选择 4K。高画质优先获取 DASH 视频和音频,用 FFmpeg 无损合并后发送;无法使用所选画质时,会提示实际选用的较低画质。部分高分辨率流采用 HEVC/AV1,播放兼容性取决于 QQ 客户端。

安装 FFmpeg 并加入 PATH,或在配置中设置完整路径,例如 ffmpegPath: 'C:\tools\ffmpeg\bin\ffmpeg.exe'。未安装时仍可下载单文件 MP4,但可能降级到较低画质。

请求客户端使用共享的 Cookie 容器、连接池和压缩响应解码,并初始化站点下发的设备 Cookie。扫码登录可更新会话,但不能保证解除所有风控;浏览器与 JVM 的网络行为仍有差异。若仍出现 HTTP 412/-352,请提供错误码和 /bvp loginstatus 的结果,不要提供会话文件或完整 Cookie。

HTTP 412 / -352 与视频解析失败

视频详情优先使用 WBI 签名接口,失败后依次尝试旧接口和视频网页内的数据。播放解析同样使用签名接口,并尝试 B站返回的备用 CDN 地址。v2.4.0 起支持上述扫码登录及高画质 DASH 合并;单文件 MP4 仍无需 FFmpeg。

若机器人所在服务器仍受到风控,在 config/com.bcz.bilivideoparser/BiliVideoParserConfig.yml 中配置 Cookie 后重启机器人。推荐使用 YAML 字面量块,避免 Cookie 内的引号、竖线等字符破坏配置格式:

bilibiliCookie: |-
  buvid3=示例值; rpdid=示例值; SESSDATA=示例值; bili_jct=示例值

用自己的完整 Cookie 替换示例第二行,保持为一个实际文本行,并保留行首两个空格;|- 后不要填写 Cookie。Cookie 的值应原样保留,不需要额外添加引号或转义。不要直接用单引号包裹整段 Cookie,因为 Cookie 本身可能含有单引号,导致 YamlDecodingException 和插件启动失败。

Cookie 可从自己已登录的 B站网页开发者工具 → Network → 发往 api.bilibili.com 的请求 → Request Headers → Cookie 复制。Cookie 属于登录凭据,请仅保存在机器人本地配置中,不要提交到仓库或发送到群聊;过期后需更新。签名和 Cookie 无法保证解除服务器 IP 层面的风控。

若全部解析方式失败,插件会显示失败提示并记录各次请求的 HTTP 状态或接口错误码,且不会把失败结果放入 30 秒冷却。排查时请提供错误码,不要提供 Cookie。

本地构建与发布包

使用 JDK 17 执行 ./gradlew clean verifyReleaseArtifacts(Windows 使用 gradlew.bat)。该命令运行测试并在 build/release 中生成及检查两种安装包。正式 Release 和 AutoBuild 均上传这里的两种 JAR;普通开发用的 build/libs JAR 不作为安装包发布。

扫码协议与会话处理参考:登录功能需求 #16、bilibili-dynamic-mirai-plugin、扫码登录接口。


Stargazers over time

Stargazers over time

About

一个智能解析B站视频/动态链接并支持自动下载发送到QQ群的Mirai插件 A Mirai plugin that intelligently parses Bilibili video links and supports automatic downloading and sending to QQ groups

Topics

Resources

Stars

34 stars

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages