Releases: AstrBot-Elementary-School/astrbot_plugin_rsshub
Releases · AstrBot-Elementary-School/astrbot_plugin_rsshub
Release list
v2.1.4
Added
media.gif_transcode_profile新增compatibility(默认)、balanced、quality三档 GIF 输出配置;未知值会明确报配置错误。
Changed
- GIF 转码会在 palette 生成前按档位缩放和降帧;GIF / 压缩 GIF / 媒体缓存键均隔离档位,压缩候选不会回升到原始 30 FPS 或原始尺寸。
- GIF、MP4、HLS 的 FFmpeg 调用统一收敛为落盘 stderr 的子进程执行器;取消或超时时会结束子进程并清理半成品。
Fixed
- 修复高分辨率无声视频沿用原尺寸 30 FPS GIF 转码时,FFmpeg palette 滤镜可能在 3 GiB 容器中被 OOM 杀死的问题;默认兼容档为长边 960px、15 FPS、128 色。
v2.1.3
Fixed
- 修复 QQ OneBot(aiocqhttp)发送合并转发时,转发节点未携带机器人 QQ 号的问题。新版 NapCat / Lagrange 因而不再将节点
user_id/uin识别为缺失或0,避免retcode=1200导致 RSS 推送失败。 - 主动推送会在已连接账号唯一时解析真实 bot
self_id;命令响应场景优先使用事件携带的self_id。多 bot 或无法可靠识别账号时保留 AstrBot SDK 的默认值,避免误用其他机器人的账号。
Notes
- 本版本不新增配置项、聊天命令或 Web API。仅影响 OneBot 的合并转发节点;原始顺序(direct)发送行为保持不变。
v2.1.2
Added
- 在 AstrBot 插件配置的
media配置组新增媒体缓存开关cache_enabled,可关闭远程媒体、表格图片、GIF 转换结果和视频转码结果缓存。 - 在 AstrBot 插件配置的
media配置组新增媒体缓存 TTLcache_ttl_seconds,默认900秒,配置面范围为60到604800秒。
Changed
- 媒体成功缓存、表格图片缓存、GIF / 压缩 GIF 缓存和视频 MP4 转码缓存统一按 TTL 写入
.meta expire_ts,命中缓存时自动续期,并在启用缓存路径顺带清理同目录过期项。 - 禁用媒体缓存时,远程媒体、HLS 合并、表格图片、GIF 转换和视频 MP4 转码均改用本次发送的一次性临时文件,发送完成后由 sender / dispatcher 清理。
Fixed
- 修复媒体缓存缺少配置面导致只能手动清理缓存的问题。
- 修复表格转图等本地生成媒体在禁用缓存或媒体隐藏路径下可能遗留临时文件的问题。
- 修复 GIF / 压缩 GIF 转码缓存校验失败后仍保留坏文件和
.meta,导致坏缓存持续续期的问题。
v2.1.1
Added
- 新增 QQ Official 媒体探针脚本
scripts/qq_official_media_probe.py,默认 dry-run,可从推送历史抽取失败媒体并显式测试/files上传与/messages发送路径。
Changed
- QQ Official 媒体发送改为由
MediaSendPlanner统一按内置软阈值生成候选链路:图片/GIF 10 MiB,视频和文件降级 12 MiB;预计超限的媒体不再继续撞上传 API,而是直接发送正文和原始媒体链接。 - Plugin Pages 概览页的推送成功率口径调整为
success / (success + failed);skipped、stopped、pending和retrying仅作为参考计数展示,不再进入成功率分母。 - QQ Official 媒体探针真实 HTTP 请求增加连接、读取和总超时;
--upload-source download改为分块读取并默认限制最多 64 MiB,避免诊断慢源或超大媒体时挂起或耗尽内存。
Fixed
- 修复 QQ Official 下超限媒体上传失败后仍被记录为 failed,导致同一 RSS 条目在 2.1.0 ack 语义下反复补推的问题;文件或原始链接降级成功会按正常
success记录。 - 修复 QQ Official 媒体探针从 JSON 提取 URL 时对 list / tuple 的
isinstance判断可能在运行时抛出TypeError的问题。
v2.1.0
Added
- Plugin Pages 新增独立「概览」页,展示总订阅、启用订阅、Feed 源和用户数,并加入 Feed 新鲜度、推送成功率、Feed 订阅占比三类图表。
- 新增 Dashboard 图表 Web API:
GET /dashboard/charts?range=24h|7d|30d。推送成功率按success / (success + failed + stopped + skipped)计算,pending/retrying仅作为积压参考。 - Plugin Pages 引入本地 Chart.js 静态资源,不依赖 CDN;仓库体积仍控制在 16 MB 上限内。
- 推送历史仓储新增按最后活动时间聚合状态桶的查询能力,用于 Dashboard 成功率趋势。
- 新增
requirements-dev.txt,将测试、帮助图生成等开发依赖从运行时依赖中拆出。 - FFmpeg 来源配置简化为
auto/system两个选项:auto优先系统 PATH,系统缺失时后台异步下载捆绑 FFmpeg,不阻塞插件启动;system仅使用系统 PATH。原bundled选项已合并为auto。 - 新增共享镜像测速模块 (
mirror_helper.py):FFmpeg 下载和知识库同步共用同一套镜像列表和 HEAD 测速逻辑。 - FFmpeg 下载镜像新增
auto选项(默认):并发测速内置镜像 + 直连 GitHub + 用户配置的ffmpeg_mirror_custom_url(如有),选最快的下载,并保留直连 GitHub 作为最终兜底。 - 知识库同步来源新增
speed_test模式(默认):启动时自动测速选最快镜像下载 Routes 知识库。 - 新增 JSON Feed 1.0 / 1.1 解析支持;Feed 抓取链路现在兼容 RSS 2.0、Atom 1.0 和 JSON Feed 三种格式,自动按响应内容识别并委派对应解析器。
Changed
- Feed 轮询水位推进改为内部 ack 语义:只有发送成功或明确规则性跳过后才写入已见 hash,发送失败、pending、dispatcher 异常或进程中断不会永久吞掉条目。
history_entry_limit现在只限制本轮尝试分发数量,不再把未尝试分发的条目提前写入水位。- Plugin Pages 布局从顶部指标 + 横向标签页改为左侧侧边栏 + 页面内容区;原指标卡移动到「概览」页,列表页高度占用更少。
- 订阅、用户、Feed 和推送历史列表筛选改为紧凑筛选栏:关键词搜索常驻,精确条件通过「筛选列 + 筛选值 + 添加条件」生成 chip;刷新按钮改为 icon-only。
- 订阅、用户、Feed 和推送历史列表移除与刷新按钮位置重复的「搜索」按钮,关键词输入回车与刷新按钮继续保留。
- LLM tools 从单文件
src/application/llmtools.py拆分为src/application/llmtools/包,保持build_llm_tools与LLM_TOOL_NAMES对外导入不变。 - 优化 AI tool 描述、
skills/rsshub-agent-tools/SKILL.md与docs/usage/ai-tools.md,让 agent 更明确区分订阅、用户默认、会话默认、handlers、push history 和一次性 XML/HTML 直推。 - 原始顺序排版
style=original的 layout 文本现在同样遵守订阅最终生效的length_limit;length_limit<=0时保持完整正文。 - FFmpeg 捆绑下载目录从插件缓存目录 (
cache/ffmpeg/) 改为插件数据目录 (ffmpeg/);插件重载时自动清理上次中断遗留的.tmp_*临时目录。 - 运行时依赖瘦身:
requirements.txt仅保留插件运行必需依赖,pytest、pytest-asyncio、jinja2、playwright迁移到开发依赖。
Fixed
- 修复轮询链路在分发前提前标记条目已见,导致发送失败、异常中断或分发异常后下轮无法补推的问题。
- 修复无声视频可被 FFmpeg 转 GIF,但 sender 侧因媒体类型识别不稳导致没有进入 GIF 转换分支的问题;RSSHub wrapped URL、无扩展 URL 和下载后探测为 video 的媒体都可触发转换。
- 修复转换成功后的
.gif仍可能按视频发送的问题;GIF 转换产物统一按图片组件发送。 - 修复配置 reload 后 sender 的 GIF 转码开关可能没有刷新到最新
media.gif_transcode的问题。 - 修复
original模式下长正文 layout text 未按length_limit裁剪的问题,同时保持原解析结果和历史正文不被改写。 - 修复 original layout 中 PDF/doc 等文档链接可能被误按图片路径处理的风险;文档链接继续作为 file 媒体走文件/尾部组件。
- 修复 Plugin Pages 从「概览」切换到其他侧边栏项时可能无法切换的问题;Chart.js 实例不再放入 PetiteVue reactive state。
- 修复 Plugin Pages「概览」推送成功率折线图空间拥挤,以及稀疏历史节点没有连线的问题。
- 修复推送历史状态聚合排序不稳定的问题。
Removed
- 移除运行时依赖中不必要的开发依赖,降低普通用户安装体积。
- 移除把
xml_parse作为可配置 handler 的 agent skill 推荐示例。
Security
- 镜像测速恢复 TLS 证书验证,攻破 mirror HTTPS 才能影响候选选择。
- FFmpeg 归档当前未配 SHA256(
latest源校验值不稳定),由 1 MB 大小检查 + 解包路径校验兜底;ZIP 解包前拒绝绝对路径和..跨目录条目,封掉 zip slip 风险面。
Notes
- 本版本不新增聊天命令,不新增用户可见配置项;防漏推 ack、GIF 判定补强和 original 行为修正均为内部语义修复。
ffmpeg_source仅保留auto和system;原bundled选项已合并为auto,旧配置文件中的bundled会自动回退为auto并打 warning。- 知识库同步
source_mode默认值升级为speed_test;现存配置经 schema heal 维持原值,全新安装会自动启用测速选最快镜像。 - Plugin Pages 新增图表只读接口,不改变已有筛选 query 参数和列表 Web API 语义。
v2.0.3
Added
- 新增
http_config,统一配置 RSS 拉取、媒体预下载与 FFmpeg m3u8/HLS 下载使用的代理和超时。 - 新增
http_config.media_timeout,用于单独配置媒体下载超时,上限提升到 1800 秒。 - Plugin Pages 推送历史新增单条「重试」操作,可人工重放旧记录并把本次结果写回原历史行;列表按最近活动时间排序,重试后该行会回到顶部。
rss_subscribeAI 工具收口为单参数targets: string[],支持一次订阅多个完整 URL 或 RSSHub 路由路径。rss_push_xml_entryAI 工具新增安全排版参数,可临时指定style、send_mode、媒体/标题/作者/via/tags 显示和正文长度。- 为缺失中文命名别名的命令增加了命令别名。
- 新增数据库用户一致性自愈:订阅或推送历史引用到的
user_id会在启动迁移阶段补齐到用户表。 - Plugin Pages 用户、Feed、订阅删除流程新增「同时清理推送历史」选项,默认保留历史审计数据。
- Plugin Pages 订阅列表新增按 Feed URL 精确筛选入口,推送历史跳转订阅不再依赖可能复用的
sub_id。 - 新增跨平台测试脚本
tests/run_tests.sh,方便 macOS/Linux 本地执行分类测试。 - 新增媒体反代:
media.image_relay_base_url与media.media_relay_base_url,图片优先走图片反代、非图片走通用媒体反代,下载时先反代再回源;缓存键与失败展示链接始终保持原始 URL,支持https://wsrv.nl/与https://wsrv.nl/?url=两种形式。 - 新增无声视频转 GIF 的体积上限压缩:逐步降低分辨率与帧率,将 GIF 压缩到平台允许的大小内。
Changed
- OneBot 默认优先使用插件预下载后的本地视频文件,避免 NapCat/OneBot 端自行拉取 m3u8 或远程视频导致发送失败。
- Telegram photo 大小阈值收口为内置常量,默认 10 MiB;超限图片会按文件发送。
- QQ Official 默认不再按媒体数量预先降级为文件;多媒体会优先按图片/视频组件发送,真实发送失败后再按内置策略降级为文件或原始链接。
- QQ Official Markdown 配置暂时保留为兼容入口,但主动推送临时统一纯文本,避免 Markdown 原文在 QQ 官方平台直接暴露。
- 旧
basic_config.proxy、basic_config.timeout、media_config.download_media_timeout和m3u8_download_timeout会在启动配置自愈时迁移到http_config。 - 表格图片渲染从
infrastructure.media归位到infrastructure.rendering,媒体包只保留下载、指纹和发送前媒体处理职责。
Removed
- 媒体缓存 GC、媒体完整性阈值和平台降级策略收口为内置常量,不再作为用户配置项暴露。
Fixed
- 修复无声视频转 GIF 后仍按视频组件上传的问题;转换后的
.gif会统一按图片发送,并覆盖普通发送与原始顺序排版路径。 - 修复坏媒体文件可能进入成功缓存的问题;命中缓存和写入缓存前都会做基础完整性校验,坏缓存会被删除并触发重新下载。
- 修复 m3u8/HLS 合并输出校验不足的问题;FFmpeg 输出必须通过视频流与时长校验后才会写入成功缓存。
- 修复 QQ Official 单图+文本合发失败时可能静默丢失媒体的问题;失败会按内置策略优先文件降级,并在结果/文本中保留可见的原始媒体链接。
- 修复表格图片缓存并发写入、original layout 占位文本、generated media 缺失时暴露内部标识,以及关闭媒体时表格正文丢失的问题。
v2.0.2
Changed
- 媒体发送统一先下载到本地成功缓存后再交给平台发送器;旧配置
download_media_before_send=false不再影响运行时。 - 从
_conf_schema.json移除basic_config.download_media_before_send,插件启动时会清理实际配置文件中的遗留字段。 - 插件启动配置会按当前
_conf_schema.json自动自愈:补齐缺失字段、移除未知字段、修正常见类型错误,并按下拉选项与滑块范围收敛非法值。
Fixed
- 移除媒体下载失败缓存;下载失败不再写入内存或
.fail文件,网络、代理或反代恢复后同一媒体会在下次推送重新尝试下载。 - 保留成功媒体缓存行为,避免重复下载已成功缓存的媒体。
- 修复启用
basic_config.proxy后,FFmpeg m3u8/HLS 下载没有显式走代理的问题;裸host:port代理配置现在会统一按http://host:port处理。 - 修复
/sub_import不带参数进入上传等待后,后续上传 TOML 文件未被监听处理的问题。 - 修复 Plugin Pages 推送历史保留 1 天 / 1 周 / 30 天清理按钮清理不充分的问题;清理判断改为按最后活动时间,并返回真实清理数量。
- 修复测试推送在真实发送失败时误报“未进入正式发送链路”的问题,现在会优先显示 sender 返回的失败原因。
- 修复 Telegram 本地图片超过 Bot API photo 大小限制时仍按图片发送的问题;超过 10 MiB 的图片会降级为文件发送。
- 修复 bsky 等源在关闭标题显示后,正文开头与标题相同导致
#前正文被误删的问题。 - 修复 m3u8/HLS 先下载后发送时可能缓存 0 秒坏视频的问题,FFmpeg 输出会在入缓存前校验视频流与时长。
v2.0.1
v2.0.0
Added
- 新增
/rsshelp、/sub_status、/sub_stop、/rsshub_kb_init、/rsshub_kb_sync、/rsshub_kb_status、/rsshub_kb_task等命令。 - 新增 AstrBot Plugin Pages 管理面板,覆盖订阅、用户、Feed、推送历史、默认订阅设置、处理器、数据管理和 RSSHub Routes 知识库同步。
- 新增 schema-driven 内容处理链,内置
ai_filter与ai_transform;ai_transform支持plaintext与xmlscope,XML 改写会经过校验和重新解析。 - 新增推送排版策略:
style=0自动,style=1RSSRT,style=2原始顺序;原始顺序会尽量按 RSS/HTML 解析树保留图文相邻关系。 - 新增 RSSHub Routes 知识库同步命令与 Web API:
/rsshub_kb_init、/rsshub_kb_sync、/rsshub_kb_status、/rsshub_kb_task。 - 新增 AI agent 工具
rss_list_push_history与rss_push_xml_entry,支持查询推送历史和提交 XML/HTML 即时推送。 - 新增推送历史详情、批量操作、自动清理配置和订阅联动筛选;新增缓存与导出文件的数据管理视图。
Changed
- 配置体系重构:启动级配置保留在
_conf_schema.json,订阅默认值和处理链配置迁移到 Plugin Pages;类型化运行时配置收口到src/infrastructure/config/。 - 数据模型收口:用户/订阅配置统一使用
-100表示继承,移除旧use_sub_config/use_user_config/ 翻译列;迁移脚本压缩为当前 v2 基线。 - 发送链路重构:格式化器只负责解析后的文本和媒体,平台差异放在 sender adapter;OneBot、QQ Official、Weixin OC、Telegram 使用各自平台策略。
- Plugin Pages 不再提供新增订阅或订阅 TOML 导入/导出入口;这些用户归属明确的操作继续通过聊天命令或 AI agent 工具完成。
- 文档体系重建为
docs/README.md、docs/project/、docs/dev/、docs/usage/,README 只保留入口和用户向说明。
Fixed
- 修复部分 RSS 源只推送图片不推送正文的问题,补齐
content:encoded、HTML 文本提取、图文 layout fragment 和平台发送顺序处理。 - 修复旧库迁移到 v2 后
rsshub_sub.handlers_mode缺失导致/sub_list查询失败的问题。 - 修复失败重试和推送历史审计链路:推送历史保存媒体 URL、原始 XML、handler trace,并限制失败原因长度。
- 修复 Routes KB raw URL 拼接,支持代理前缀形式的 GitHub Raw 镜像。
Removed
- 移除传统翻译管道、翻译缓存、旧内容增强管道和旧 route-search LLM tools。
- 移除冗余内置处理器
xml_parse;HTML/XML 清洗归入基础解析与格式化链。 - 移除旧版配置管理 shim、碎片开发期迁移脚本和 Plugin Pages 中不应承担用户归属的导入/导出入口。