Skip to content

sealpp/astrbot_plugin_parser

 
 

Repository files navigation

:name

astrbot_plugin_parser

✨ 链接解析器 ✨

License Python 3.10+ AstrBot GitHub

📖 介绍

当前支持的平台和类型:

平台 触发的消息形态 视频 图集 音频
B 站 av 号/BV 号/链接/短链/卡片/小程序 ✅​ ✅​ ✅​
抖音 链接(分享链接,兼容电脑端链接) ✅​ ✅​ ❌️
微博 链接(博文,视频,show, 文章) ✅​ ✅​ ❌️
小红书 链接(含短链)/卡片 ✅​ ✅​ ❌️
小黑盒 链接/卡片 ✅​ ✅​ ❌️
快手 链接(包含标准链接和短链) ✅​ ✅​ ❌️
acfun 链接 ✅​ ❌️ ❌️
youtube 链接(含短链) ✅​ ❌️ ✅​
tiktok 链接 ✅​ ❌️ ❌️
instagram 链接 ✅​ ✅​ ❌️
twitter 链接 ✅​ ✅​ ❌️

本插件目标:凡是链接皆可解析!尽请期待更新(如果可以,请提交PR)


🎨 效果图

插件默认启用 PIL 实现的通用媒体卡片渲染,效果图如下


💿 安装

直接在astrbot的插件市场搜索astrbot_plugin_parser,点击安装,等待完成即可

⚙️ 配置

请在astrbot的插件配置面板查看并修改

🎉 指令

指令 权限 说明
开启解析 ADMIN 开启当前会话的解析功能
关闭解析 ADMIN 关闭当前会话的解析功能
blogin ADMIN 扫码获取 B 站凭证

🧠 插件工作流程

当插件运行后,每一条消息的处理流程如下:

  1. 消息接收
    监听所有消息事件,获取消息链与原始文本内容

    • 支持普通文本、链接、卡片(Json 组件)
  2. 基础过滤

    • 跳过已被禁用的会话
    • 跳过空消息
    • 若消息首段为 @ 且目标不是本 Bot,则不解析
  3. 链接提取与匹配

    • 若为卡片消息,先从 Json 中提取 URL
    • 使用「关键词 + 正则」双重匹配,定位对应解析器
    • 未匹配到解析规则则直接退出
  4. 仲裁判定(Emoji Like Arbiter)

    • 仅在 aiocqhttp 平台生效
    • 通过固定表情进行 Bot 间仲裁
    • 未胜出的 Bot 自动放弃解析
  5. 防抖判定(Link Debouncer)

    • 对同一会话内的相同链接进行时间窗口限制
    • 命中防抖规则则跳过解析,避免短时间重复处理
  6. 内容解析

    • 调用对应平台解析器获取媒体信息
    • 生成统一的 ParseResult 数据结构
  7. 媒体下载与消息构建

    • 下载视频 / 图片 / 音频 / 文件
    • 根据配置决定音频发送方式
    • 可按配置提示下载失败项
  8. 卡片渲染(可选)

    • 在非简洁模式或无直传媒体时生成媒体卡片
    • 使用 PIL 渲染并缓存图片
  9. 消息合并与发送

    • 当消息段数量超过阈值时自动合并为转发消息
    • 最终将结果发送到对应会话

🧩 扩展

插件支持自定义解析器,通过继承 BaseParser 类并实现 platform, handle 即可。

示例解析器请看 示例解析器


🎉 致谢

本项目核心代码来自nonebot-plugin-parser,请前往原仓库给作者点个Star!

About

高性能低耦合的万能链接解析器。支持的类型:视频、图集、音频。 支持的平台:A站、B站、抖音、tiktok、微博、小红书、快手、油管、推特...

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • Python 100.0%