Added movie search

This commit is contained in:
2025-03-01 21:10:26 +11:00
parent 540782e2d5
commit 141b541e98
6 changed files with 174 additions and 18 deletions

View File

@@ -23,7 +23,11 @@ func (movie *Movie) GetPoster(image *Image, size string) string {
}
func (movie *Movie) ReleaseYear() string {
return movie.ReleaseDate[:4]
if movie.ReleaseDate == "" {
return ""
} else {
return "(" + movie.ReleaseDate[:4] + ")"
}
}
func (movie *Movie) FGenres() string {
@@ -31,5 +35,8 @@ func (movie *Movie) FGenres() string {
for _, genre := range movie.Genres {
genres += genre.Name + ", "
}
return genres[:len(genres)-2]
if len(genres) > 2 {
return genres[:len(genres)-2]
}
return genres
}

View File

@@ -4,6 +4,7 @@ import (
"encoding/json"
"fmt"
"net/url"
"path"
"github.com/pkg/errors"
)
@@ -16,23 +17,51 @@ type Result struct {
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"`
Results []ResultMovie `json:"results"`
}
type ResultMovie 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"`
}
func (movie *ResultMovie) GetPoster(image *Image, size string) string {
base, err := url.Parse(image.SecureBaseURL)
if err != nil {
return ""
}
fullPath := path.Join(base.Path, size, movie.PosterPath)
base.Path = fullPath
return base.String()
}
func (movie *ResultMovie) ReleaseYear() string {
if movie.ReleaseDate == "" {
return ""
} else {
return "(" + movie.ReleaseDate[:4] + ")"
}
}
// TODO: genres list https://developer.themoviedb.org/reference/genre-movie-list
// func (movie *ResultMovie) FGenres() string {
// genres := ""
// for _, genre := range movie.Genres {
// genres += genre.Name + ", "
// }
// return genres[:len(genres)-2]
// }
func SearchMovies(token string, query string, adult bool, page int) (*ResultMovies, error) {
url := "https://api.themoviedb.org/3/search/movie" +