diff --git a/backend/handlers/api.go b/backend/handlers/api.go index 0489b95..3864d98 100644 --- a/backend/handlers/api.go +++ b/backend/handlers/api.go @@ -381,11 +381,11 @@ func rankSearchResults(query string, results []services.SearchResult) []services } switch result.Source { case "Google Video": - score += 2 + score += 1 case "Envato": - score += 5 + score += 7 case "Artgrid": - score += 5 + score += 7 } scored = append(scored, scoredResult{item: result, score: score}) } diff --git a/backend/services/gemini.go b/backend/services/gemini.go index e0c2f39..141c785 100644 --- a/backend/services/gemini.go +++ b/backend/services/gemini.go @@ -212,6 +212,9 @@ func (g *GeminiService) TranslateQuery(query string) string { if translated, err := g.translateViaGoogle(query); err == nil && translated != "" { return translated } + if translated := translateKoreanMediaTerms(query); translated != "" && !strings.EqualFold(translated, strings.TrimSpace(query)) { + return translated + } return strings.TrimSpace(query) } @@ -519,6 +522,40 @@ func looksMostlyASCII(text string) bool { return ascii >= len(runes)*8/10 } +func translateKoreanMediaTerms(query string) string { + replacements := map[string]string{ + "숲속": "forest", + "숲": "forest", + "다정한": "affectionate", + "커플": "couple", + "도시": "city", + "야경": "night city", + "거리": "street", + "골목": "alley", + "바다": "ocean", + "해변": "beach", + "노을": "sunset", + "자연": "nature", + "비": "rain", + "눈": "snow", + "드론": "drone", + "항공샷": "aerial shot", + "사람들": "people", + "인파": "crowd", + "행복한": "happy", + "연인": "lovers", + "공원": "park", + "산": "mountain", + } + + translated := strings.TrimSpace(query) + for korean, english := range replacements { + translated = strings.ReplaceAll(translated, korean, english) + } + translated = strings.Join(strings.Fields(translated), " ") + return strings.TrimSpace(translated) +} + func (g *GeminiService) translateViaGoogle(query string) (string, error) { endpoint := "https://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=en&dt=t&q=" + neturl.QueryEscape(query) resp, err := g.Client.Get(endpoint)