FIT2CLOUD
API 图库 的图标

API 图库

174
54

接入外部图片 API,在前端实时展示图库资源,图片不落本地存储;支持多数据源、定时同步与后台管理。

1.4.0
lu 发布于

API图库

最新
>=2.20.0

更新日志

1.4.0(2026-10-26)

本版本为安全整改版本,建议所有使用者升级。

安全

  • 收紧匿名访问范围
    新增独立的 console.gallery.halo.run 接口组承载管理类接口,与该组相关的
    /sources、/diagnose、/sync、/push-to-photos、/photos 不再向访客放行。
    对外公开组 api.gallery.halo.run 现在只剩 /items 与 /random 两个只读接口。
    此前匿名访客可直接调用 /diagnose 触发服务端对外请求并读到图源地址与错误信息。
  • 诊断结果脱敏
    /diagnose 不再返回响应正文(bodyHead)与调用堆栈(stackTop),
    改为返回 bodyLength 与 looksLikeJson 这类结论性字段。
  • 新增图源地址 SSRF 防护
    所有对外请求发出前统一校验:仅允许 http/https 协议,
    并拒绝回环地址、私有网段(10/8、172.16/12、192.168/16)、链路本地与云厂商元数据地址
    (169.254.0.0/16)、IPv6 唯一本地地址(fc00::/7)、组播与保留网段。
    命中时该数据源会被标记为不可用,同步时记录明确的拒绝原因。

修复

  • 补齐前台展示页制品
    此前 gallery.html 放在源码根目录,static/ 与 ui/ 均为空目录,打成 JAR 后不存在。
    现已移入 src/main/resources/static/,并补充 extensions/reverseProxy.yaml
    (Halo 不会自动暴露插件的 static 目录,必须声明 ReverseProxy 才能访问)。
    实际访问地址:/plugins/api-gallery/assets/static/gallery.html。
  • 展示页不再依赖需要授权的 /sources,来源筛选改为从已加载数据推导,访客可直接访问。

变更

  • 开源信息统一:补充 MIT LICENSE 文件并打入 JAR,plugin.yaml 增加 repo 与 issues 字段。

注意

  • /sources、/diagnose 等接口路径已迁移到新的管理组,若你在脚本中调用过这些地址,
    需把 api.gallery.halo.run 换成 console.gallery.halo.run。公开接口不受影响。
  • 使用 PAT 调用时需确认令牌授权范围包含对应接口组,否则会返回 403。

1.3.1(2026-10-25)

新增

  • 后台设置页新增「关于」分组,展示作者博客与作者信息(作者博客 https://blog.kbmp.club)。
  • 补充插件简介描述。

说明

  • 本版本仅涉及后台展示信息与文案,功能与 1.3.0 一致。
  • 升级会重启插件,内存缓存清空后自动重新累积,属正常现象。

1.3.0(2026-10-25)

修复

  • 图库攒满后就不再更新(核心问题)
    旧版本同步时把旧缓存排在前面、新采样的图排在后面,达到「最多累积」上限后被截断丢弃的
    永远是新图,留下的全是老图。结果就是:图池一旦攒满,即使定时同步照常运行,
    图库内容也永久静止。
    现改为滚动更新:新采样的图排在最前面,达到上限时淘汰最老的,
    每一轮同步都会换进一批新图。

新增

  • 被滚动淘汰的旧图会同步从「图库管理」插件中删除,
    避免 /console/photos 里的记录只增不减(此前会随每轮采样持续膨胀)。

建议配置

想让图片更新更明显,可把「最多累积」调小。每轮同步会换进「采样次数」张新图:

最多累积 采样次数 效果
60 30 每轮替换约一半,变化明显
200 30 每轮替换约 15%,变化较慢

升级注意

  • 升级会重启插件,内存缓存会被清空,图库会从 0 重新累积,几轮同步后回到设定上限,
    期间不会报错,属正常现象。

1.2.0(2026-10-25)

修复

  • 后台修改同步周期后不生效
    旧版本只在插件启动时读一次周期,把 60 分钟改成 5 分钟后仍按 60 分钟跑。
    现改为保存设置时立即按新周期重新排期,无需重启插件。

新增

  • 响应结构新增「随机单张 JSON」类型:适用于每次请求返回一张随机图的 JSON 接口
    (如 https://t.paiii.cn/api/random?format=json)。
  • 同步状态对外可见:/sources 与 /diagnose 新增 intervalMinutes(当前实际生效周期)、
    nextSyncAt(下次同步时间)、secondsUntilNextSync(距下次同步秒数)、lastSync、errors,
    方便确认「自动同步到底排上了没」。

1.1.0(2026-10-25)

新增

  • 响应结构新增「302 跳转到随机图片」类型:适用于没有列表接口、
    每次请求直接 302 跳转到一张随机图的图源(如 random-pictures 类站点)。
    插件会重复采样若干次、收集每次的跳转地址并去重,攒成一个图集。
  • 随机类图源新增「采样次数」「最多累积」两项配置。
  • 随机类图源拉取失败时保留已攒下的图,不会清空。

1.0.0(2026-10-25)

首个版本。

  • 后台配置任意数量的图片 API 数据源,各自独立开关
  • 自动识别顶层数组 / {items:[...]} / 单个对象三种响应结构
  • url、id、title、tags 字段名可单独指定,留空自动推断
  • 定时同步(默认 60 分钟,可调 5–1440 分钟),后台保存后即时触发
  • 自动为匿名用户放行只读接口,前台无需登录即可展示
  • 对接官方「图库管理」插件,把图片地址写成 Photo 记录,不占本地存储
  • 对外接口:/items、/sources、/random、/sync、/push-to-photos、/photos
  • 附带自包含展示页 frontend/gallery.html(瀑布流 + 懒加载 + 灯箱 + 按源筛选)

资源下载

  • api-gallery-1.4.2.jar