Skip to content

Repository files navigation

:name

astrbot_plugin_parser

✨ 链接解析器 ✨

License Python 3.10+ AstrBot GitHub

📖 介绍

当前支持的平台和类型:

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

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


🎨 效果图

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


💿 安装

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

⚙️ 配置

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

QQ空间解析器

QQ空间解析器作为可选模板提供,支持 h5.qzone.qq.com/ugc/sharemobile.qzone.qq.com/l 等公开分享链接,并优先解析动态中的原图/原视频。未配置登录态或登录态不可用时,会自动回退到公开分享页可获取的媒体。

可选登录态来源:

  • SnowLuma 自动(推荐):调用 SnowLuma OneBot HTTP get_credentials,固定请求 domain=qzone.qq.com,短时缓存凭证;QQ空间接口出现登录态异常时会清缓存、重新获取并自动重试一次。
  • 手动 Cookies:可直接填写 uin/p_uinskeyp_skey 等 Cookie;SnowLuma 获取失败时也会作为备用登录态。
  • 两种登录态都不可用时,解析器仍保留公开 H5 fallback,不要求用户必须部署 SnowLuma。

SnowLuma HTTP 地址默认为 http://127.0.0.1:3000。这里填写的是 OneBot HTTP API 地址,不是 WebSocket 地址;如果 HTTP API 配置了 access_token,同时填写对应的 SnowLuma Access Token。QQ 本体已掉线或需要重新登录时,需要先恢复 QQ 登录,单独刷新 p_skey 无法恢复失效的 QQ 会话。

QQ空间登录态只用于回查当前公开分享动态对应的媒体详情,不用于绕过动态自身的访问权限。

🎉 指令

指令 权限 说明
开启解析 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

Stars

194 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages