Files
capcut-mate/tools
HommyandClaude Code fe91868049 贴纸配置瘦身:只保留 title/sticker_id/image_url 三个字段。
config/sticker.json 从 58MB / 135 万行降到 22MB / 7.9 万行,79,368 条条目数
与顺序均不变。删掉的字段及依据:

- preview_cover:全部 79,368 条均为空串,零信息。
- sticker_package(含 height_per_frame/size/width_per_frame)与 sticker_type:
  无任何代码读取。add_sticker 完全不读本配置,它只用调用方传入的 sticker_id,
  草稿素材是极简的(id/resource_id/sticker_id/source_platform/type)。
- track_thumbnail:与 large_image 是同一素材的 120×120 与 1920×1920 两种尺寸,
  但签名不同、无法互相推导,本次一并去掉。

保留的三个字段构成检索到使用的完整链路:title 是唯一的搜索键,sticker_id 是
add_sticker 唯一需要的入参,image_url 供调用方展示预览。

顺带把序列化格式改为一条一行(原为 indent=2,每条 4 行),与
config/text_template.json 的大清单一风格一致,便于 diff。

这是对外契约变更:响应由嵌套(sticker.large_image.image_url)改为扁平
(image_url),故同步更新 schemas/search_sticker.py(StickerItem 拉平,
StickerInfo/StickerPackage/LargeImage 三个类删除)、双语文档(含旧版本字段
说明与调用方调整提示)与 openapi.yaml(8 个响应示例 + 响应结构定义)。
service/search_sticker.py 删掉一行死 import:它导入了上述四个类,实际一个都
没用到,删类后会直接 ImportError。

tools/query_sticker.py 新增 flatten_sticker():上游返回的仍是嵌套结构,不转换
的话工具产出的文件与新配置格式对不上;对已是扁平的输入幂等,缺 title/sticker_id
的条目跳过并计数。

无损验证:79,368 条逐条比对 title/sticker_id/image_url 全部一致,条目顺序一致;
openapi.yaml 的 8 个示例同样逐条比对一致。测试 56 项通过(3 个贴纸 + 53 个字幕/
模板/气泡),端到端 SearchStickerResponse 校验通过。

已知事项:image_url 是带签名的临时 URL,有效期至 2026-12-15,到期后预览图失效
(title/sticker_id 不受影响,add_sticker 不依赖该字段),届时需重新抓取。

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-10-14 18:33:34 +08:00
..
2025-11-23 21:01:33 +08:00