recognition: глобальный переключатель языка вывода [general].language
- новое поле [general].language (ru|en, дефолт en) — единый источник языка локализованного title детектора и локали запросов к метабазам; original_title всегда на языке оригинала - локаль TMDB (поиск + credits) выводится из него, [metadata.tmdb].language убран - промпт LLM явно задаёт язык title с fallback на оригинал
This commit is contained in:
+24
-14
@@ -13,18 +13,32 @@ import (
|
||||
"git.vakhrushev.me/av/jellybit/internal/logging"
|
||||
)
|
||||
|
||||
const (
|
||||
tmdbDefaultBaseURL = "https://api.themoviedb.org/3"
|
||||
tmdbDefaultLanguage = "ru-RU"
|
||||
)
|
||||
const tmdbDefaultBaseURL = "https://api.themoviedb.org/3"
|
||||
|
||||
// TMDBConfig — настройки клиента TMDB.
|
||||
type TMDBConfig struct {
|
||||
APIKey string
|
||||
Proxy string
|
||||
Timeout time.Duration
|
||||
BaseURL string // пусто → api.themoviedb.org; задаётся в тестах
|
||||
Language string // локаль возвращаемых названий; пусто → ru-RU
|
||||
APIKey string
|
||||
Proxy string
|
||||
Timeout time.Duration
|
||||
BaseURL string // пусто → api.themoviedb.org; задаётся в тестах
|
||||
// Language — абстрактный код языка вывода ("ru" | "en"); диалект локали TMDB
|
||||
// выводит сам клиент (tmdbLocale). Знание диалекта живёт здесь, у провайдера,
|
||||
// который на нём говорит, а не в общем слое конфига.
|
||||
Language string
|
||||
}
|
||||
|
||||
// tmdbLocale переводит абстрактный код языка вывода в диалект локали TMDB.
|
||||
// Тотальна: непокрытый вход (пусто, неизвестный код) → en-US, чтобы запрос
|
||||
// никогда не ушёл без локали (defense in depth поверх валидации конфига).
|
||||
// Множество кодов задаёт config.validate ({ru, en}); при добавлении кода —
|
||||
// синхронно добавь ветку здесь, иначе он молча уедет в en-US.
|
||||
func tmdbLocale(lang string) string {
|
||||
switch lang {
|
||||
case "ru":
|
||||
return "ru-RU"
|
||||
default:
|
||||
return "en-US"
|
||||
}
|
||||
}
|
||||
|
||||
// TMDB — клиент The Movie Database (API v3, авторизация по api_key).
|
||||
@@ -49,14 +63,10 @@ func NewTMDB(cfg TMDBConfig, logger *slog.Logger) (*TMDB, error) {
|
||||
if base == "" {
|
||||
base = tmdbDefaultBaseURL
|
||||
}
|
||||
lang := cfg.Language
|
||||
if lang == "" {
|
||||
lang = tmdbDefaultLanguage
|
||||
}
|
||||
if logger == nil {
|
||||
logger = slog.Default()
|
||||
}
|
||||
return &TMDB{apiKey: cfg.APIKey, baseURL: strings.TrimRight(base, "/"), language: lang, hc: hc, log: logger}, nil
|
||||
return &TMDB{apiKey: cfg.APIKey, baseURL: strings.TrimRight(base, "/"), language: tmdbLocale(cfg.Language), hc: hc, log: logger}, nil
|
||||
}
|
||||
|
||||
func (t *TMDB) Name() string { return "tmdb" }
|
||||
|
||||
Reference in New Issue
Block a user