MiraiForum

    • 注册
    • 登录
    • 搜索
    • 热门
    • 最新
    • 未解决
    • 标签
    • 群组
    • 友情链接

    B站订阅插件,动态、视频、直播订阅 @全体成员

    插件发布
    bilibili b站 直播 动态 专栏
    103
    392
    96629
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • cssxsh
      cssxsh 最后由 cssxsh 编辑

      BiliBili Helper

      基于 Mirai Console 的 哔哩哔哩 订阅插件

      Release
      Downloads
      MiraiForum

      使用前应该查阅的相关文档或项目

      • User Manual
      • Permission Command
      • Chat Command

      从 1.2.5 版本开始 将截图部分功能的转移至 mirai-selenium-plugin
      截图功能的启用需要其作为前置插件
      关于截图支持的环境请浏览 运行平台支持
      直播 @全体成员 详见配置 此设置 1.5.0 废除, 改用指令配置
      自动触发URL解析 详见 信息解析 指令
      消息 模板 详见配置(自 1.4.0 起截图功能由模板内容来配置)

      指令

      注意: 使用前请确保可以 在聊天环境执行指令
      带括号的/前缀是可选的
      <...>中的是指令名,由空格隔开表示或,选择其中任一名称都可执行例如/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动态> <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

      设置

      位于Mirai-Console运行目录下的config/xyz.cssxsh.mirai.plugin.bilibili-helper文件夹下

      BiliHelperSettings.yml

      • cache 图片缓存位置, 默认为 ImageCache
      • limit 动态 订阅 输出图片数量上限, 默认为 16
      • api API 访问间隔时间,单位秒, 默认为 10
      • video 视频 订阅 访问间隔时间,单位分钟, 默认为 10
      • dynamic 动态 订阅 访问间隔时间,单位分钟, 默认为 10
      • live 直播 订阅 访问间隔时间,单位分钟, 默认为 30
      • season 番剧 订阅 访问间隔时间,单位分钟, 默认为 30
      • refresh 启动时刷新 last,订阅最后推送将会重新开始记录,未推送内容将会因此丢弃
      • selenium 是否启用截图 此配置项废弃,通过 Template 文件内容来确定是否启用截图
      • ban 排除的自动解析内容,可以放一些不希望被解析的AV号之类的
      • forward 转发自动解析, 使用转发的形式发送自动解析结果
      • max 一次性推送的订阅内容上限, 超过这个上限将会尝试合并为转发消息

      BiliCleanerConfig.yml

      • interval 图片清理的间隔时间,单位 小时
      • expires 图片缓存过期时间,单位 小时

      SeleniumConfig.yml

      • user_agent 截图设备UA 网页识别设备类型,进而影响截图的效果
        iPad Mozilla/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
        iPhone Mozilla/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
        Mac Mozilla/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 MicroMessenger
      • width 截图宽度
      • height 截图高度
      • pixel_ratio 截图像素比 此配置废除
      • headless 无头模式(后台模式)
      • home 浏览器会保持打开主页,以加快其他页面加载速度 此配置废除
      • hide 隐藏的web组件(jQ选择器)
        添加 ".international-header", ".top-bar", ".m-navbar" 可以屏蔽顶边栏

      LiveAtAll

      此设置 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

      Template

      位于 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
      

      Cookies

      位于 data/xyz.cssxsh.mirai.plugin.bilibili-helper/cookies.json
      导入 cookies文件 不是必须的,这是实验性功能,主要是防止b站反爬IP锁定
      从 浏览器插件 EditThisCookie 导出Json 填入文件
      EditThisCookie 安装地址
      Chrome
      Firefox
      Edge

      安装

      MCL 指令安装

      ./mcl --update-package xyz.cssxsh:bilibili-helper --channel stable --type plugin

      手动安装

      1. 运行 Mirai Console 生成plugins文件夹
      2. 从 Releases 下载jar并将其放入plugins文件夹中

      截图前置

      ./mcl --update-package xyz.cssxsh.mirai:mirai-selenium-plugin --channel stable --type plugin

      TODO

      • 完善剧集订阅
      • 自动清理图片缓存
      B 1 条回复 最后回复 回复 引用 6
      • Colter23
        Colter23 最后由 编辑

        终于有大佬做b站推送的插件了,好耶(我做的太辣鸡了

        cssxsh 1 条回复 最后回复 回复 引用 0
        • cssxsh
          cssxsh @Colter23 最后由 编辑

          @colter23 别说了,我太菜了,推送动态用的方法是截图

          Orisland N 2 条回复 最后回复 回复 引用 0
          • Orisland
            Orisland 摸鱼 @cssxsh 最后由 编辑

            @cssxsh 这个可以在群里推送吗?

            cssxsh 1 条回复 最后回复 回复 引用 0
            • cssxsh
              cssxsh @Orisland 最后由 编辑

              @orisland
              可以的,使用指令所在的聊天环境就是推送的目标

              Orisland 1 条回复 最后回复 回复 引用 0
              • Orisland
                Orisland 摸鱼 @cssxsh 最后由 编辑

                @cssxsh 在 B站订阅插件,动态、视频、直播订阅 中说:

                指令

                get

                1 条回复 最后回复 回复 引用 0
                • Orisland
                  Orisland 摸鱼 最后由 编辑

                  @cssxsh ……这个动态的更新的频率是多久啊?我发现我发了一个动态几分钟过去了群里也没推。。

                  Orisland cssxsh 2 条回复 最后回复 回复 引用 0
                  • Orisland
                    Orisland 摸鱼 @Orisland 最后由 编辑

                    @orisland 在 B站订阅插件,动态、视频、直播订阅 中说:

                    @cssxsh ……这个动态的更新的频率是多久啊?我发现我发了一个动态几分钟过去了群里也没推。。

                    linux版本的mirai

                    1 条回复 最后回复 回复 引用 0
                    • cssxsh
                      cssxsh @Orisland 最后由 编辑

                      @orisland
                      订阅成功之后,机器人会回复
                      @xxx监听设置成功的消息
                      视频和动态轮询时间都是10分钟
                      暂时还不考虑用户设置,因为b站有反爬锁ip的机制,爬取极限是多少还不清楚

                      Orisland Colter23 2 条回复 最后回复 回复 引用 0
                      • Orisland
                        Orisland 摸鱼 @cssxsh 最后由 编辑

                        @cssxsh okk

                        1 条回复 最后回复 回复 引用 0
                        • X
                          XinLinYu 最后由 编辑

                          此回复已被删除!
                          1 条回复 最后回复 回复 引用 0
                          • Colter23
                            Colter23 @cssxsh 最后由 Colter23 编辑

                            @cssxsh 访问b站api的间隔10s左右没问题,我的bot一直是10s,没有问题。再低的话,就有可能出问题
                            建议在每次访问api时,都加个10秒左右的延迟,就问题不大

                            cssxsh 1 条回复 最后回复 回复 引用 0
                            • cssxsh
                              cssxsh @Colter23 最后由 编辑

                              @colter23
                              以后考虑加个原子锁

                              1 条回复 最后回复 回复 引用 0
                              • Colter23
                                Colter23 最后由 编辑

                                其实用代理池更直接更好用(

                                1 条回复 最后回复 回复 引用 0
                                • viviananifa
                                  viviananifa 最后由 编辑

                                  后续有考虑过能够修改解析视频时的格式吗,另外直接在群里复制bv号的时候貌似会根据前一次的解析结果里的链接再解析一次,造成刷屏

                                  cssxsh 2 条回复 最后回复 回复 引用 0
                                  • cssxsh
                                    cssxsh @viviananifa 最后由 编辑

                                    @viviananifa
                                    如果说因为输出的视频属性过多的话,可以考虑加个开关关闭多余的属性
                                    第二点有些没弄懂你的意思,你是想说最近已经解析的链接不希望再次被解析吗

                                    viviananifa 1 条回复 最后回复 回复 引用 0
                                    • cssxsh
                                      cssxsh @viviananifa 最后由 编辑

                                      @viviananifa
                                      去github开个 issue 吧

                                      1 条回复 最后回复 回复 引用 0
                                      • viviananifa
                                        viviananifa @cssxsh 最后由 编辑

                                        @cssxsh 可能是我没有表示清楚,我使用时发现复制链接或者bv号之后,第一次插件发送了解析信息之后不知为何在1-2秒的间隔之后还会再发送一次不知道是我设置还是其他原因。
                                        附一张图例子。
                                        IMG_20210713_084729.jpg
                                        (最下面的消息@的是机器人自己)

                                        cssxsh 1 条回复 最后回复 回复 引用 0
                                        • cssxsh
                                          cssxsh @viviananifa 最后由 编辑

                                          @viviananifa
                                          这个情况经常出现吗

                                          1 条回复 最后回复 回复 引用 0
                                          • cssxsh
                                            cssxsh 最后由 cssxsh 编辑

                                            @viviananifa
                                            话说你是不是安装了两套不同bilibili的插件

                                            viviananifa 1 条回复 最后回复 回复 引用 0
                                            • 1
                                            • 2
                                            • 3
                                            • 4
                                            • 5
                                            • 19
                                            • 20
                                            • 1 / 20
                                            • First post
                                              Last post
                                            Powered by Mamoe Technologies & NodeBB | 友情链接 | 服务监控 | Contact