mirror of
https://gitlab.com/foxixus/neomovies-api.git
synced 2025-10-27 17:38:51 +05:00
fix: resolve unified handler merge and keep tmdb id enrichment only in externalIds
This commit is contained in:
@@ -61,9 +61,11 @@ func (h *UnifiedHandler) GetMovie(w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
data = services.MapKPToUnified(kpFilm)
|
data = services.MapKPToUnified(kpFilm)
|
||||||
// Обогащаем TMDB ID если есть IMDB ID
|
// Обогащаем только externalIds.tmdb через /find (берем только поле id)
|
||||||
if h.tmdb != nil {
|
if kpFilm.ImdbId != "" {
|
||||||
services.EnrichKPWithTMDBID(data, h.tmdb)
|
if tmdbID, fErr := h.tmdb.FindTMDBIdByIMDB(kpFilm.ImdbId, "movie", GetLanguage(r)); fErr == nil {
|
||||||
|
data.ExternalIDs.TMDB = &tmdbID
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// tmdb
|
// tmdb
|
||||||
@@ -103,9 +105,10 @@ func (h *UnifiedHandler) GetTV(w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
data = services.MapKPToUnified(kpFilm)
|
data = services.MapKPToUnified(kpFilm)
|
||||||
// Обогащаем TMDB ID если есть IMDB ID
|
if kpFilm.ImdbId != "" {
|
||||||
if h.tmdb != nil {
|
if tmdbID, fErr := h.tmdb.FindTMDBIdByIMDB(kpFilm.ImdbId, "tv", GetLanguage(r)); fErr == nil {
|
||||||
services.EnrichKPWithTMDBID(data, h.tmdb)
|
data.ExternalIDs.TMDB = &tmdbID
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
tv, err := h.tmdb.GetTVShow(id, language)
|
tv, err := h.tmdb.GetTVShow(id, language)
|
||||||
|
|||||||
@@ -39,27 +39,13 @@ func (s *MovieService) GetByID(id int, language string, idType string) (*models.
|
|||||||
|
|
||||||
// Сначала пробуем как Kinopoisk ID
|
// Сначала пробуем как Kinopoisk ID
|
||||||
if kpFilm, err := s.kpService.GetFilmByKinopoiskId(id); err == nil {
|
if kpFilm, err := s.kpService.GetFilmByKinopoiskId(id); err == nil {
|
||||||
// Попробуем обогатить TMDB фильмом через IMDb -> TMDB find
|
// Возвращаем KP-модель в TMDB-формате без подмены на TMDB объект
|
||||||
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
|
return MapKPFilmToTMDBMovie(kpFilm), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Возможно пришел TMDB ID — пробуем конвертировать TMDB -> KP
|
// Возможно пришел TMDB ID — пробуем конвертировать TMDB -> KP
|
||||||
if kpId, convErr := TmdbIdToKPId(s.tmdb, s.kpService, id); convErr == nil {
|
if kpId, convErr := TmdbIdToKPId(s.tmdb, s.kpService, id); convErr == nil {
|
||||||
if kpFilm, err := s.kpService.GetFilmByKinopoiskId(kpId); err == 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
|
return MapKPFilmToTMDBMovie(kpFilm), nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,12 +35,27 @@ func (s *TVService) GetByID(id int, language string, idType string) (*models.TVS
|
|||||||
|
|
||||||
// Сначала пробуем как Kinopoisk ID
|
// Сначала пробуем как Kinopoisk ID
|
||||||
if kpFilm, err := s.kpService.GetFilmByKinopoiskId(id); err == nil && kpFilm != nil {
|
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
|
return MapKPFilmToTVShow(kpFilm), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Возможно пришел TMDB ID — пробуем конвертировать TMDB -> KP
|
// Возможно пришел TMDB ID — пробуем конвертировать TMDB -> KP
|
||||||
if kpId, convErr := TmdbIdToKPId(s.tmdb, s.kpService, id); convErr == nil {
|
if kpId, convErr := TmdbIdToKPId(s.tmdb, s.kpService, id); convErr == nil {
|
||||||
if kpFilm, err := s.kpService.GetFilmByKinopoiskId(kpId); err == nil && kpFilm != 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
|
return MapKPFilmToTVShow(kpFilm), nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user