feat: Add id_type parameter support for movies and TV shows

This commit is contained in:
2025-10-18 23:41:53 +00:00
parent bb63eb741d
commit e2c6201e7e
4 changed files with 30 additions and 6 deletions

View File

@@ -55,8 +55,9 @@ func (h *MovieHandler) GetByID(w http.ResponseWriter, r *http.Request) {
} }
language := GetLanguage(r) language := GetLanguage(r)
idType := r.URL.Query().Get("id_type") // kp or tmdb
movie, err := h.movieService.GetByID(id, language) movie, err := h.movieService.GetByID(id, language, idType)
if err != nil { if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError) http.Error(w, err.Error(), http.StatusInternalServerError)
return return

View File

@@ -54,8 +54,9 @@ func (h *TVHandler) GetByID(w http.ResponseWriter, r *http.Request) {
} }
language := GetLanguage(r) language := GetLanguage(r)
idType := r.URL.Query().Get("id_type") // kp or tmdb
tvShow, err := h.tvService.GetByID(id, language) tvShow, err := h.tvService.GetByID(id, language, idType)
if err != nil { if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError) http.Error(w, err.Error(), http.StatusInternalServerError)
return return

View File

@@ -28,8 +28,19 @@ func (s *MovieService) Search(query string, page int, language, region string, y
return s.tmdb.SearchMovies(query, page, language, region, year) return s.tmdb.SearchMovies(query, page, language, region, year)
} }
func (s *MovieService) GetByID(id int, language string) (*models.Movie, error) { func (s *MovieService) GetByID(id int, language string, idType string) (*models.Movie, error) {
if ShouldUseKinopoisk(language) && s.kpService != nil { // Если указан id_type, используем его; иначе определяем по языку
useKP := false
if idType == "kp" {
useKP = true
} else if idType == "tmdb" {
useKP = false
} else {
// Если id_type не указан, используем старую логику по языку
useKP = ShouldUseKinopoisk(language)
}
if useKP && s.kpService != nil {
kpFilm, err := s.kpService.GetFilmByKinopoiskId(id) kpFilm, err := s.kpService.GetFilmByKinopoiskId(id)
if err == nil { if err == nil {
return MapKPFilmToTMDBMovie(kpFilm), nil return MapKPFilmToTMDBMovie(kpFilm), nil

View File

@@ -24,8 +24,19 @@ func (s *TVService) Search(query string, page int, language string, year int) (*
return s.tmdb.SearchTVShows(query, page, language, year) return s.tmdb.SearchTVShows(query, page, language, year)
} }
func (s *TVService) GetByID(id int, language string) (*models.TVShow, error) { func (s *TVService) GetByID(id int, language string, idType string) (*models.TVShow, error) {
if ShouldUseKinopoisk(language) && s.kpService != nil { // Если указан id_type, используем его; иначе определяем по языку
useKP := false
if idType == "kp" {
useKP = true
} else if idType == "tmdb" {
useKP = false
} else {
// Если id_type не указан, используем старую логику по языку
useKP = ShouldUseKinopoisk(language)
}
if useKP && s.kpService != nil {
kpFilm, err := s.kpService.GetFilmByKinopoiskId(id) kpFilm, err := s.kpService.GetFilmByKinopoiskId(id)
if err == nil && kpFilm != nil { if err == nil && kpFilm != nil {
return MapKPFilmToTVShow(kpFilm), nil return MapKPFilmToTVShow(kpFilm), nil