基于 Mirai Console 的 哔哩哔哩 订阅插件
使用前应该查阅的相关文档或项目
从 1.2.5 版本开始 将截图部分功能的转移至 mirai-selenium-plugin
截图功能的启用需要其作为前置插件
关于截图支持的环境请浏览 运行平台支持
自动触发URL解析 详见 信息解析 指令
消息 模板 详见配置(自 1.4.0 起截图功能由模板内容来配置)
从 1.7.0 版本开始 提供 /bili-login 指令以登录个人账号,解决B站反爬问题
注意: 使用前请确保可以 在聊天环境执行指令
带括号的/前缀是可选的
<...>中的是指令名,由空格隔开表示或,选择其中任一名称都可执行例如/B视频 添加 11783021
[...]表示参数,当[...]后面带?时表示参数可选
{...}表示连续的多个参数
本插件指令权限ID 格式为 xyz.cssxsh.mirai.plugin.bilibili-helper:command.*, * 是指令的第一指令名
例如 /B动态 添加 496371957 的权限ID为 xyz.cssxsh.mirai.plugin.bilibili-helper:command.bili-dynamic
参数 uid 例如 https://space.bilibili.com/508963009/ 的数字 508963009
参数 contact 为QQ号或者群号,可以省略,会从当前聊天环境获取,
比如群聊中会自动填充为当前群号, 但控制台中必须填充
子指令 sleep/at 的 target 是 被许可人 ID
处于休眠时间的订阅将不会推送
举例:
/bili-dynamic sleep g12345 00:00 06:00,00:00~06:00时间段内将不会推送
处于艾特时间的订阅将会添加艾特
举例:
/bili-live at g12345 19:00 23:00,19:00 23:00时间段内将会艾特全体/bili-live at u456789 19:00 23:00,19:00 23:00时间段内将会艾特用户456789
子指令 cron 的 cron 参数是 CRON 表达式, 由 秒 分钟 小时 日 月 周 组成
举例:
/bili-dynamic time 508963009 "0 0 14 * * ?",0 0 14 * * ?表示每天 14:00 都执行一次/bili-video time 508963009 "0 0 18 ? * 2-6",0 0 18 ? * 2-6表示星期一至星期五 每天 18:00 执行一次 可以使用在线编辑器生成 https://www.bejson.com/othertools/cron/
为防止被 空格 分成多个参数,请使用"包裹参数
| 指令 | 描述 |
|---|---|
/<bili-dynamic B动态> <add 添加> [uid] [contact]? |
添加一个b站动态订阅 |
/<bili-dynamic B动态> <stop 停止> [uid] [contact]? |
停止一个b站动态订阅 |
/<bili-dynamic B动态> <time 定时> [uid] [cron]? |
设置任务的定时信息 |
/<bili-dynamic B动态> <list 列表> [contact]? |
列出当前联系人的动态订阅 |
/<bili-dynamic B动态> <filter 过滤> [type] [add]? |
过滤特定类型的动态 |
/<bili-dynamic B动态> <forbid 屏蔽> [pattern] [add]? |
添加一个动态正则屏蔽 |
/<bili-dynamic B动态> <sleep 休眠> [target] [start] [end] |
添加一个休眠时间 |
/<bili-dynamic B动态> <at 艾特> [target] [start] [end] |
添加一个艾特时间 |
/bili-dynamic forbid 转发抽奖 添加一个正则屏蔽
/bili-dynamic forbid 转发抽奖 false 取消一个正则屏蔽
/bili-dynamic filter 视频 添加一个动态类型过滤
/bili-dynamic filter 视频 false 取消一个动态类型过滤
type 取值 回复, 图片, 文本, 视频, 专栏, 音乐, 剧集, 删除, 番剧, 电视, 直播
| 指令 | 描述 |
|---|---|
/<bili-live B直播> <add 添加> [uid] [contact]? |
添加一个b站直播订阅 |
/<bili-live B直播> <stop 停止> [uid] [contact]? |
停止一个b站直播订阅 |
/<bili-live B直播> <time 定时> [uid] [cron]? |
设置任务的定时信息 |
/<bili-live B直播> <list 列表> [contact]? |
列出当前联系人的直播订阅 |
/<bili-live B直播> <sleep 休眠> [target] [start] [end] |
添加一个休眠时间 |
/<bili-live B直播> <at 艾特> [target] [start] [end] |
添加一个艾特时间 |
| 指令 | 描述 |
|---|---|
/<bili-video B视频> <add 添加> [uid] [contact]? |
添加一个b站视频订阅 |
/<bili-video B视频> <stop 停止> [uid] [contact]? |
停止一个b站视频订阅 |
/<bili-video B视频> <time 定时> [uid] [cron]? |
设置任务的定时信息 |
/<bili-video B视频> <list 列表> [contact]? |
列出当前联系人的视频订阅 |
/<bili-video B视频> <forbid 屏蔽> [type] [add]? |
添加一个视频类型屏蔽 |
/<bili-video B视频> <filter 过滤> [tid] [add]? |
添加一个视频分区过滤 |
/<bili-video B视频> <sleep 休眠> [target] [start] [end] |
添加一个休眠时间 |
/<bili-video B视频> <at 艾特> [target] [start] [end] |
添加一个艾特时间 |
/bili-video forbid 付费 添加一个类型屏蔽
/bili-video forbid 付费 false 取消一个类型屏蔽
/bili-video filter 1 添加一个分区过滤过滤
/bili-video filter 1 false 取消一个分区过滤过滤
type 取值 付费, 联合, 回放
tid 取值请参考 https://github.com/SocialSisterYi/bilibili-API-collect/blob/master/video/video_zone.md
视频订阅不宜过多,否则会触发b站反爬策略,导致IP被锁定 动态订阅一般会包含视频内容,推荐以此代替
| 指令 | 描述 |
|---|---|
/<bili-season B剧集> <add 添加> [sid] [contact]? |
添加一个b站剧集订阅 |
/<bili-season B剧集> <stop 停止> [sid] [contact]? |
停止一个b站剧集频订阅 |
/<bili-season B剧集> <time 定时> [uid] [cron]? |
设置任务的定时信息 |
/<bili-season B剧集> <list 列表> [contact]? |
列出当前联系人的剧集订阅 |
/<bili-season B剧集> <sleep 休眠> [target] [start] [end] |
添加一个休眠时间 |
/<bili-season B剧集> <at 艾特> [target] [start] [end] |
添加一个艾特时间 |
剧集订阅需要 Season ID 例如 https://www.bilibili.com/bangumi/play/ss38353 的 38353
可以通过 搜索指令 搜索番剧 获得链接
| 指令 | 描述 |
|---|---|
/<bili-info B信息> <aid> [id] |
根据 avid 获取视频信息 |
/<bili-info B信息> <bvid> [id] |
根据 bvid 获取视频信息 |
/<bili-info B信息> <dynamic> [id] |
根据 id 获取动态信息 |
/<bili-info B信息> <live> [id] |
根据 id 获取直播信息 |
/<bili-info B信息> <user> [id] |
根据 id 获取用户信息 |
因为返回结果包含图片,需要在聊天环境执行指令
消息中包含 BV12v411G7dP av2 等等 id 信息时会自动触发解析
目前会触发的正则表达式
// Video
"""(?i)(?<!\w)(?:av(\d+)|(BV[0-9A-z]{10}))"""
// Dynamic
"""(?<=t\.bilibili\.com/(?:h5/dynamic/detail/)?)(\d+)"""
// Live Room
"""(?<=live\.bilibili\.com/)(\d+)"""
// User Space
"""(?<=space\.bilibili\.com/|bilibili\.com/space/)(\d+)"""
// Season
"""(?i)(?<!\w)ss(\d{4,10})"""
// Episode
"""(?i)(?<!\w)eq(\d{4,10})"""
// Media
"""(?i)(?<!\w)md(\d{4,10})"""
// Article
"""(?i)(?<!\w)cv(\d{4,10})"""
"""(?<=bilibili\.com/read/mobile\?id=)(\d+)"""
// Short Link
"""(?<=b23\.tv\\?/)[0-9A-z]+"""| 指令 | 描述 |
|---|---|
/<bili-search B搜索> <user 用户> [keyword] |
搜索用户 |
/<bili-search B搜索> <bangumi 番剧> [keyword] |
搜索番剧 |
/<bili-search B搜索> <ft 影视> [keyword] |
搜索影视 |
返回结果包含图片,需要在聊天环境执行指令
| 指令 | 描述 |
|---|---|
/<bili-task B任务> <all> |
全部任务 |
/<bili-task B任务> <dynamic> |
动态任务 |
/<bili-task B任务> <live> |
直播任务 |
/<bili-task B任务> <season> |
剧集任务 |
/<bili-task B任务> <video> |
视频任务 |
/<bili-task B任务> <config> |
屏蔽设置 |
| 指令 | 描述 |
|---|---|
/<bili-template B模板> <datetime> [pattern] |
日期格式 |
/<bili-template B模板> <reload> |
重新加载 |
pattern 的 取值为 DateTimeFormatter
举例:
/B模板 datetime ISO_LOCAL_DATE_TIME/B模板 datetime yyyy-MM-dd
| 指令 | 描述 |
|---|---|
/<bili-login B登录> |
二维码登录 |
位于Mirai-Console运行目录下的config/xyz.cssxsh.mirai.plugin.bilibili-helper文件夹下
cache图片缓存位置, 默认为ImageCachelimit动态 订阅 输出图片数量上限, 默认为16apiAPI 访问间隔时间,单位秒, 默认为10video视频 订阅 访问间隔时间,单位分钟, 默认为10dynamic动态 订阅 访问间隔时间,单位分钟, 默认为10live直播 订阅 访问间隔时间,单位分钟, 默认为30season番剧 订阅 访问间隔时间,单位分钟, 默认为30refresh启动时刷新 last,订阅最后推送将会重新开始记录,未推送内容将会因此丢弃selenium是否启用截图此配置项废弃,通过 Template 文件内容来确定是否启用截图ban排除的自动解析内容,可以放一些不希望被解析的AV号之类的forward转发自动解析, 使用转发的形式发送自动解析结果max一次性推送的订阅内容上限, 超过这个上限将会尝试合并为转发消息
interval图片清理的间隔时间,单位 小时expires图片缓存过期时间,单位 小时
user_agent截图设备UA 网页识别设备类型,进而影响截图的效果
iPadMozilla/5.0 (iPad; CPU OS 11_0 like Mac OS X) AppleWebKit/604.1.34 (KHTML, like Gecko) Version/11.0 Mobile/15A5341f Safari/604.1 MicroMessenger
iPhoneMozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 MicroMessenger
MacMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50 MicroMessengerwidth截图宽度height截图高度pixel_ratio截图像素比此配置废除headless无头模式(后台模式)home浏览器会保持打开主页,以加快其他页面加载速度此配置废除hide隐藏的web组件(jQ选择器)
添加".international-header", ".top-bar", ".m-navbar"可以屏蔽顶边栏
此设置 1.5.0 废除
此配置通过权限设置,权限ID为 xyz.cssxsh.mirai.plugin.bilibili-helper:live.atall
配置对象为群,即 g*, g12345
举例,perm add g12345 xyz.cssxsh.mirai.plugin.bilibili-helper:live.atall
位于 config/xyz.cssxsh.mirai.plugin.bilibili-helper/Template 目录下的 template 文件
文件名为对应的配置对象(类名),文件内容的 #... 是替换标记,将会替换为对应的值
值的名称请参考 bilibili/data 中的数据定义
#images, #detail, #screenshot 为特殊的替换标记,将会替换为特殊的处理结果
#images 将会替换为内容图片
在 BiliRoomInfo 中 #detail 将会替换为对应的 Live
在 DynamicCard 中 #detail 将会替换为对应的 card 解析结果
在 DynamicInfo 中 #screenshot 将会替换为截图(需要安装 mirai-selenium-plugin)
在 Article 中 #screenshot 将会替换为截图(需要安装 mirai-selenium-plugin)
例如可以将 VideoStatus.template 改为
👍 #like 💰 #coin ⭐ #favorite
▶️ #view 💬 #reply 🔄 #share
位于 data/xyz.cssxsh.mirai.plugin.bilibili-helper/cookies.json
导入 cookies文件 不是必须的,这是实验性功能,主要是防止b站反爬IP锁定
从 浏览器插件 EditThisCookie 导出Json 填入文件
EditThisCookie 安装地址
Chrome
Firefox
Edge
现在你可以直接使用登录指令刷新 cokies
./mcl --update-package xyz.cssxsh:bilibili-helper --channel maven-stable --type plugins
./mcl --update-package xyz.cssxsh.mirai:mirai-selenium-plugin --channel maven-stable --type plugins
- 完善剧集订阅
- 自动清理图片缓存
