diff --git a/pkg/handlers/unified.go b/pkg/handlers/unified.go index 853552f..5cccbdb 100644 --- a/pkg/handlers/unified.go +++ b/pkg/handlers/unified.go @@ -61,9 +61,11 @@ func (h *UnifiedHandler) GetMovie(w http.ResponseWriter, r *http.Request) { return } data = services.MapKPToUnified(kpFilm) - // Обогащаем TMDB ID если есть IMDB ID - if h.tmdb != nil { - services.EnrichKPWithTMDBID(data, h.tmdb) + // Обогащаем только externalIds.tmdb через /find (берем только поле id) + if kpFilm.ImdbId != "" { + if tmdbID, fErr := h.tmdb.FindTMDBIdByIMDB(kpFilm.ImdbId, "movie", GetLanguage(r)); fErr == nil { + data.ExternalIDs.TMDB = &tmdbID + } } } else { // tmdb @@ -103,9 +105,10 @@ func (h *UnifiedHandler) GetTV(w http.ResponseWriter, r *http.Request) { return } data = services.MapKPToUnified(kpFilm) - // Обогащаем TMDB ID если есть IMDB ID - if h.tmdb != nil { - services.EnrichKPWithTMDBID(data, h.tmdb) + if kpFilm.ImdbId != "" { + if tmdbID, fErr := h.tmdb.FindTMDBIdByIMDB(kpFilm.ImdbId, "tv", GetLanguage(r)); fErr == nil { + data.ExternalIDs.TMDB = &tmdbID + } } } else { tv, err := h.tmdb.GetTVShow(id, language) diff --git a/pkg/services/movie.go b/pkg/services/movie.go index ed1a1ee..d1c451d 100644 --- a/pkg/services/movie.go +++ b/pkg/services/movie.go @@ -39,27 +39,13 @@ func (s *MovieService) GetByID(id int, language string, idType string) (*models. // Сначала пробуем как Kinopoisk ID if kpFilm, err := s.kpService.GetFilmByKinopoiskId(id); err == nil { - // Попробуем обогатить TMDB фильмом через IMDb -> TMDB find - if kpFilm.ImdbId != "" { - if tmdbID, fErr := s.tmdb.FindTMDBIdByIMDB(kpFilm.ImdbId, "movie", NormalizeLanguage(language)); fErr == nil { - if tmdbMovie, mErr := s.tmdb.GetMovie(tmdbID, NormalizeLanguage(language)); mErr == nil { - return tmdbMovie, nil - } - } - } + // Возвращаем KP-модель в TMDB-формате без подмены на TMDB объект return MapKPFilmToTMDBMovie(kpFilm), nil } // Возможно пришел TMDB ID — пробуем конвертировать TMDB -> KP if kpId, convErr := TmdbIdToKPId(s.tmdb, s.kpService, id); convErr == nil { if kpFilm, err := s.kpService.GetFilmByKinopoiskId(kpId); err == nil { - if kpFilm.ImdbId != "" { - if tmdbID, fErr := s.tmdb.FindTMDBIdByIMDB(kpFilm.ImdbId, "movie", NormalizeLanguage(language)); fErr == nil { - if tmdbMovie, mErr := s.tmdb.GetMovie(tmdbID, NormalizeLanguage(language)); mErr == nil { - return tmdbMovie, nil - } - } - } return MapKPFilmToTMDBMovie(kpFilm), nil } } diff --git a/pkg/services/tv.go b/pkg/services/tv.go index 769d0e4..25127b8 100644 --- a/pkg/services/tv.go +++ b/pkg/services/tv.go @@ -35,12 +35,27 @@ func (s *TVService) GetByID(id int, language string, idType string) (*models.TVS // Сначала пробуем как Kinopoisk ID if kpFilm, err := s.kpService.GetFilmByKinopoiskId(id); err == nil && kpFilm != nil { + // Попробуем обогатить TMDB сериал через IMDb -> TMDB find + if kpFilm.ImdbId != "" { + if tmdbID, fErr := s.tmdb.FindTMDBIdByIMDB(kpFilm.ImdbId, "tv", NormalizeLanguage(language)); fErr == nil { + if tmdbTV, mErr := s.tmdb.GetTVShow(tmdbID, NormalizeLanguage(language)); mErr == nil { + return tmdbTV, nil + } + } + } return MapKPFilmToTVShow(kpFilm), nil } // Возможно пришел TMDB ID — пробуем конвертировать TMDB -> KP if kpId, convErr := TmdbIdToKPId(s.tmdb, s.kpService, id); convErr == nil { if kpFilm, err := s.kpService.GetFilmByKinopoiskId(kpId); err == nil && kpFilm != nil { + if kpFilm.ImdbId != "" { + if tmdbID, fErr := s.tmdb.FindTMDBIdByIMDB(kpFilm.ImdbId, "tv", NormalizeLanguage(language)); fErr == nil { + if tmdbTV, mErr := s.tmdb.GetTVShow(tmdbID, NormalizeLanguage(language)); mErr == nil { + return tmdbTV, nil + } + } + } return MapKPFilmToTVShow(kpFilm), nil } }