feat(telegram): 订阅/下载补齐 year/rating/genres/原名/语言 富通知字段

- 模型: Subscription/DownloadTask 新增 OriginalName/OriginalLanguage/Year/
  Rating/Genres 列(GORM AutoMigrate 自动建列, 无需手写迁移)
- enrich 链路: displayMetadata 与 DownloadTaskMeta 携带新字段, 从
  SearchExternalMedia(TMDb/豆瓣/Bangumi)结果回填并持久化; 放宽提前返回
  门槛, 已有海报但缺新字段时仍补齐
- 通知: 订阅/下载完成事件 data 注入 year/rating/genres/original_title/
  original_language, 喂给作者富模板 formatTelegramMediaNotification
- 测试: 新增端到端断言, 验证补齐字段透传进 Telegram caption
This commit is contained in:
ShukeBta
2026-06-20 01:45:40 +08:00
parent 9ef7721527
commit 6e61c8b545
5 changed files with 229 additions and 29 deletions
+18 -2
View File
@@ -469,11 +469,27 @@ func (s *SubscriptionService) notifySubscriptionHit(sub *model.Subscription, que
if strings.TrimSpace(sub.MediaCategory) != "" {
data["media_category"] = sub.MediaCategory
}
// 补充媒体通知模板(formatTelegramMediaNotification)所需字段:片名 / 简介 /
// 外链 / 资源标题(供模板提取季集 + 版本)。仅填现成可用的,缺失项模板会自动略过。
// 补充媒体通知模板(formatTelegramMediaNotification)所需字段:片名 / 原名 /
// 语言 / 年份 / 评分 / 类型 / 简介 / 外链 / 资源标题(供模板提取季集 + 版本)。
// 仅填现成可用的,缺失项模板会自动略过。
if strings.TrimSpace(sub.Name) != "" {
data["title"] = sub.Name
}
if strings.TrimSpace(sub.OriginalName) != "" {
data["original_title"] = sub.OriginalName
}
if strings.TrimSpace(sub.OriginalLanguage) != "" {
data["original_language"] = sub.OriginalLanguage
}
if sub.Year > 0 {
data["year"] = sub.Year
}
if sub.Rating > 0 {
data["rating"] = sub.Rating
}
if strings.TrimSpace(sub.Genres) != "" {
data["genres"] = sub.Genres
}
if strings.TrimSpace(sub.Overview) != "" {
data["overview"] = sub.Overview
}