Добавил логи

This commit is contained in:
2026-06-14 19:37:09 +03:00
parent d4bf8a8cad
commit 81ed58ecff
28 changed files with 379 additions and 121 deletions
+13 -6
View File
@@ -3,6 +3,7 @@ package metadata
import (
"context"
"fmt"
"log/slog"
"net/http"
"net/url"
"strconv"
@@ -25,10 +26,11 @@ type TMDB struct {
apiKey string
baseURL string
hc *http.Client
log *slog.Logger
}
// NewTMDB собирает клиент TMDB.
func NewTMDB(cfg TMDBConfig) (*TMDB, error) {
// NewTMDB собирает клиент TMDB. logger nil → slog.Default().
func NewTMDB(cfg TMDBConfig, logger *slog.Logger) (*TMDB, error) {
if cfg.APIKey == "" {
return nil, fmt.Errorf("metadata: tmdb api_key required")
}
@@ -40,7 +42,10 @@ func NewTMDB(cfg TMDBConfig) (*TMDB, error) {
if base == "" {
base = tmdbDefaultBaseURL
}
return &TMDB{apiKey: cfg.APIKey, baseURL: strings.TrimRight(base, "/"), hc: hc}, nil
if logger == nil {
logger = slog.Default()
}
return &TMDB{apiKey: cfg.APIKey, baseURL: strings.TrimRight(base, "/"), hc: hc, log: logger}, nil
}
func (t *TMDB) Name() string { return "tmdb" }
@@ -73,13 +78,15 @@ func (t *TMDB) Search(ctx context.Context, q Query) ([]Candidate, error) {
params.Set("first_air_date_year", strconv.Itoa(q.Year))
}
default:
return nil, fmt.Errorf("metadata: tmdb: неизвестный тип %q", q.Type)
return nil, fmt.Errorf("metadata: tmdb: unknown type %q", q.Type)
}
t.log.Debug("tmdb: search", "type", q.Type, "title", q.Title, "year", q.Year)
var resp tmdbSearchResp
if err := getJSON(ctx, t.hc, t.baseURL+path+"?"+params.Encode(), nil, &resp); err != nil {
if err := getJSON(ctx, t.hc, t.log, t.baseURL+path+"?"+params.Encode(), nil, &resp); err != nil {
return nil, fmt.Errorf("tmdb search: %w", err)
}
t.log.Debug("tmdb: search done", "title", q.Title, "results", len(resp.Results))
out := make([]Candidate, 0, len(resp.Results))
for _, r := range resp.Results {
@@ -109,7 +116,7 @@ type tmdbTVResp struct {
func (t *TMDB) SeasonEpisodeCounts(ctx context.Context, id string) (map[int]int, error) {
params := url.Values{"api_key": {t.apiKey}}
var resp tmdbTVResp
if err := getJSON(ctx, t.hc, t.baseURL+"/tv/"+url.PathEscape(id)+"?"+params.Encode(), nil, &resp); err != nil {
if err := getJSON(ctx, t.hc, t.log, t.baseURL+"/tv/"+url.PathEscape(id)+"?"+params.Encode(), nil, &resp); err != nil {
return nil, fmt.Errorf("tmdb tv %s: %w", id, err)
}
out := make(map[int]int, len(resp.Seasons))