Добавил поиск метаданных по каталогам
This commit is contained in:
+44
-2
@@ -16,6 +16,7 @@ import (
|
||||
"git.vakhrushev.me/av/jellybit/internal/layout"
|
||||
"git.vakhrushev.me/av/jellybit/internal/llm"
|
||||
"git.vakhrushev.me/av/jellybit/internal/logging"
|
||||
"git.vakhrushev.me/av/jellybit/internal/metadata"
|
||||
"git.vakhrushev.me/av/jellybit/internal/qbt"
|
||||
"git.vakhrushev.me/av/jellybit/internal/recognize"
|
||||
"git.vakhrushev.me/av/jellybit/internal/store"
|
||||
@@ -60,6 +61,15 @@ func runServe(args []string) error {
|
||||
SavePath: cfg.QBittorrent.SavePath,
|
||||
}, logger)
|
||||
|
||||
// Ф4: базы метаданных (опц.). Без них авто-раскладки нет — всё в review.
|
||||
providers, err := metadataProviders(cfg)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
for _, p := range providers {
|
||||
logger.Info("metadata provider enabled", "provider", p.Name())
|
||||
}
|
||||
|
||||
// Ф2/Ф3: распознаватель и раскладчик. Если LLM не сконфигурирован,
|
||||
// сервис работает как в Ф1 (completed-задачи дальше не двигаются).
|
||||
var recognizer worker.Recognizer
|
||||
@@ -75,8 +85,11 @@ func runServe(args []string) error {
|
||||
if perr != nil {
|
||||
return fmt.Errorf("llm provider: %w", perr)
|
||||
}
|
||||
recognizer = recognize.New(provider, recognize.Config{MaxRetries: cfg.LLM.MaxRetries}, logger)
|
||||
logger.Info("recognizer ready", "model", cfg.LLM.Model)
|
||||
recognizer = recognize.New(provider, providers, recognize.Config{
|
||||
MaxRetries: cfg.LLM.MaxRetries,
|
||||
AutoThreshold: cfg.Recognition.AutoConfidenceThreshold,
|
||||
}, logger)
|
||||
logger.Info("recognizer ready", "model", cfg.LLM.Model, "providers", len(providers))
|
||||
} else {
|
||||
logger.Warn("llm not configured, recognition disabled")
|
||||
}
|
||||
@@ -142,3 +155,32 @@ func runServe(args []string) error {
|
||||
logger.Info("stopped")
|
||||
return nil
|
||||
}
|
||||
|
||||
// metadataProviders собирает включённые конфигом базы метаданных. Для
|
||||
// сериалов Jellyfin привычнее tvdbid, поэтому TVDB идёт первым.
|
||||
func metadataProviders(cfg *config.Config) ([]metadata.Provider, error) {
|
||||
var out []metadata.Provider
|
||||
if cfg.Metadata.TVDB.Enabled {
|
||||
p, err := metadata.NewTVDB(metadata.TVDBConfig{
|
||||
APIKey: cfg.Metadata.TVDB.APIKey,
|
||||
Proxy: cfg.Metadata.TVDB.Proxy,
|
||||
Timeout: cfg.Metadata.TVDB.Timeout.Std(),
|
||||
})
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("tvdb provider: %w", err)
|
||||
}
|
||||
out = append(out, p)
|
||||
}
|
||||
if cfg.Metadata.TMDB.Enabled {
|
||||
p, err := metadata.NewTMDB(metadata.TMDBConfig{
|
||||
APIKey: cfg.Metadata.TMDB.APIKey,
|
||||
Proxy: cfg.Metadata.TMDB.Proxy,
|
||||
Timeout: cfg.Metadata.TMDB.Timeout.Std(),
|
||||
})
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("tmdb provider: %w", err)
|
||||
}
|
||||
out = append(out, p)
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user