From 05849d028d8d6254780bbc9824bbf59c9daf5faa Mon Sep 17 00:00:00 2001 From: Haelnorr Date: Sat, 1 Mar 2025 19:11:09 +1100 Subject: [PATCH] Added movie search --- tmdb/search.go | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 tmdb/search.go diff --git a/tmdb/search.go b/tmdb/search.go new file mode 100644 index 0000000..9ce77bd --- /dev/null +++ b/tmdb/search.go @@ -0,0 +1,50 @@ +package tmdb + +import ( + "encoding/json" + "fmt" + "net/url" + + "github.com/pkg/errors" +) + +type Result struct { + Page int `json:"page"` + TotalPages int `json:"total_pages"` + TotalResults int `json:"total_results"` +} + +type ResultMovies struct { + Result + Results []struct { + Adult bool `json:"adult"` + BackdropPath string `json:"backdrop_path"` + GenreIDs []int `json:"genre_ids"` + ID int32 `json:"id"` + OriginalLanguage string `json:"original_language"` + OriginalTitle string `json:"original_title"` + Overview string `json:"overview"` + Popularity int `json:"popularity"` + PosterPath string `json:"poster_path"` + ReleaseDate string `json:"release_date"` + Title string `json:"title"` + Video bool `json:"video"` + VoteAverage int `json:"vote_average"` + VoteCount int `json:"vote_count"` + } `json:"results"` +} + +func SearchMovies(token string, query string, adult bool, page int) (*ResultMovies, error) { + url := "https://api.themoviedb.org/3/search/movie" + + fmt.Sprintf("?query=%s", url.QueryEscape(query)) + + fmt.Sprintf("&include_adult=%t", adult) + + fmt.Sprintf("&page=%v", page) + + "&language=en-US" + response, err := tmdbGet(url, token) + if err != nil { + return nil, errors.Wrap(err, "tmdbGet") + } + var results ResultMovies + json.Unmarshal(response, &results) + return &results, nil +}