diff --git a/backend/services/cse.go b/backend/services/cse.go index bbde08b..f3f4ace 100644 --- a/backend/services/cse.go +++ b/backend/services/cse.go @@ -307,11 +307,11 @@ func extractYouTubeID(link string) string { func sourceWeight(source string) int { switch source { - case "Google Video": - return 3 case "Envato": - return 2 + return 3 case "Artgrid": + return 2 + case "Google Video": return 1 default: return 0 diff --git a/backend/services/gemini.go b/backend/services/gemini.go index 141c785..6f08931 100644 --- a/backend/services/gemini.go +++ b/backend/services/gemini.go @@ -154,6 +154,7 @@ English base translation: ` + englishBase, queries := fallbackQueryExpansion(query, englishBase) seen := map[string]bool{} + englishOnly := !strings.EqualFold(strings.TrimSpace(englishBase), strings.TrimSpace(query)) for _, existing := range queries { seen[strings.ToLower(strings.TrimSpace(existing))] = true } @@ -162,6 +163,9 @@ English base translation: ` + englishBase, if trimmed == "" { continue } + if englishOnly && !isLikelyEnglishQuery(trimmed) { + continue + } key := strings.ToLower(trimmed) if seen[key] { continue @@ -522,6 +526,20 @@ func looksMostlyASCII(text string) bool { return ascii >= len(runes)*8/10 } +func isLikelyEnglishQuery(text string) bool { + alpha := 0 + nonASCII := 0 + for _, r := range text { + switch { + case r >= 'A' && r <= 'Z', r >= 'a' && r <= 'z': + alpha++ + case r > 127: + nonASCII++ + } + } + return alpha > 0 && nonASCII == 0 +} + func translateKoreanMediaTerms(query string) string { replacements := map[string]string{ "숲속": "forest",