fix: refresh stale scan-derived media metadata

This commit is contained in:
ShukeBta
2026-06-25 03:40:50 +08:00
parent 5eb0d4c8af
commit 4e00c4c14d
11 changed files with 248 additions and 41 deletions
+12 -2
View File
@@ -144,10 +144,15 @@ func addMediaTitleUpdates(updates map[string]any, existing, incoming model.Media
// 真实剧名。仅在 existing 还停留在 'pending'/'' 时回填扫描标题,
// 避免覆盖刮削结果。
if incoming.ScrapeStatus == "matched" || existing.ScrapeStatus == "pending" || existing.ScrapeStatus == "" || existing.ScrapeStatus == "no_match" {
titleChanged := !strings.EqualFold(strings.TrimSpace(existing.Title), strings.TrimSpace(incoming.Title))
yearChanged := incoming.Year > 0 && existing.Year != incoming.Year
setIfChanged(updates, "title", existing.Title, incoming.Title)
if incoming.Year > 0 {
setIfChanged(updates, "year", existing.Year, incoming.Year)
}
if strings.TrimSpace(existing.ScrapeStatus) == "no_match" && incoming.ScrapeStatus != "matched" && (titleChanged || yearChanged) {
updates["scrape_status"] = "pending"
}
}
}
}
@@ -218,12 +223,17 @@ func addMediaPlacementUpdates(updates map[string]any, existing, incoming model.M
updates["library_id"] = incoming.LibraryID
}
}
if (incoming.SeasonNum > 0 || incoming.EpisodeNum > 0) && existing.SeasonNum != incoming.SeasonNum {
seasonChanged := (incoming.SeasonNum > 0 || incoming.EpisodeNum > 0) && existing.SeasonNum != incoming.SeasonNum
episodeChanged := incoming.EpisodeNum > 0 && existing.EpisodeNum != incoming.EpisodeNum
if seasonChanged {
updates["season_num"] = incoming.SeasonNum
}
if incoming.EpisodeNum > 0 && existing.EpisodeNum != incoming.EpisodeNum {
if episodeChanged {
updates["episode_num"] = incoming.EpisodeNum
}
if strings.TrimSpace(existing.ScrapeStatus) == "no_match" && incoming.ScrapeStatus != "matched" && (seasonChanged || episodeChanged) {
updates["scrape_status"] = "pending"
}
}
func addMediaSTRMUpdate(updates map[string]any, existing, incoming model.Media) {