package main import ( "fmt" "log" "strconv" tmdb "github.com/cyruzin/golang-tmdb" ) type Release struct { ID int `json:"id"` TorrentName string `json:"torrent_name"` Title string `json:"title"` OriginalTitle string `json:"original_title"` TMDbID int64 `json:"tmdb"` Overview string `json:"synopsis"` ReleaseDate string `json:"release_date"` OriginalLanguage string `json:"original_language"` Year string `json:"year"` Season string `json:"season"` Episode string `json:"episode"` Type string `json:"type"` Db SQLiteDatabase } func NewRelease(race Race, cfg Config, db SQLiteDatabase) *Release { return &Release{ TorrentName: race.TorrentName, Title: race.Title, Season: race.Season, Episode: race.Episode, Type: race.Type, Year: race.Year, Db: db, } } func (r *Release) ProcessRelease(cfg Config) { r.SearchTMDB(cfg) } func (r *Release) SearchTMDB(cfg Config) { tmdbClient, err := tmdb.Init(cfg.TMDBApiKey) if err != nil { fmt.Println(err) } m := make(map[string]string) m["year"] = r.Year m["language"] = "fr-FR" rlsExist := r.Db.FindRelease(*r) if rlsExist.ID == 0 { if r.Type == "movie" { result, err := tmdbClient.GetSearchMovies(r.Title, m) if err != nil { log.Println("Failed to find the movie on TMDB with error: ", err) } if len(result.SearchMoviesResults.Results) > 0 { r.OriginalLanguage = result.SearchMoviesResults.Results[0].OriginalLanguage r.TMDbID = result.SearchMoviesResults.Results[0].ID r.Overview = result.SearchMoviesResults.Results[0].Overview r.OriginalTitle = result.SearchMoviesResults.Results[0].OriginalTitle r.ReleaseDate = result.SearchMoviesResults.Results[0].ReleaseDate log.Printf("Found TMDB Information for [%s] with Title [%s] [ID: %v] [Year: %s] [Original Title: %s] [Original Language: %s] [Release Date: %s]", r.TorrentName, r.Title, strconv.FormatInt(r.TMDbID, 10), r.Year, r.OriginalTitle, r.OriginalLanguage, r.ReleaseDate) } else { log.Printf("Could not find TMDB information for [%s]", r.TorrentName) } } else if r.Type == "episode" { result, err := tmdbClient.GetSearchTVShow(r.Title, m) if err != nil { log.Println("Failed to find the movie on TMDB with error: ", err) } if len(result.SearchTVShowsResults.Results) > 0 { r.OriginalLanguage = result.SearchTVShowsResults.Results[0].OriginalLanguage r.TMDbID = result.SearchTVShowsResults.Results[0].ID r.Overview = result.SearchTVShowsResults.Results[0].Overview r.OriginalTitle = result.SearchTVShowsResults.Results[0].OriginalName r.ReleaseDate = result.SearchTVShowsResults.Results[0].FirstAirDate r.Year = result.SearchTVShowsResults.Results[0].FirstAirDate[0:4] log.Printf("Found TMDB Information for [%s] with Title [%s] [Season: %s] [Episode: %s] [ID: %v] [Year: %s] [Original Title: %s] [Original Language: %s] [Release Date: %s]", r.TorrentName, r.Title, r.Season, r.Episode, strconv.FormatInt(r.TMDbID, 10), r.Year, r.OriginalTitle, r.OriginalLanguage, r.ReleaseDate) } else { log.Printf("Could not find TMDB information for [%s]", r.TorrentName) } } } else { log.Printf("Title [%s] already exist in database no need to search on TMDB [Season: %s] [Episode: %s] [ID: %v] [Year: %s] [Original Title: %s] [Original Language: %s] [Release Date: %s]", rlsExist.Title, rlsExist.Season, rlsExist.Episode, strconv.FormatInt(rlsExist.TMDbID, 10), rlsExist.Year, rlsExist.OriginalTitle, rlsExist.OriginalLanguage, rlsExist.ReleaseDate) } }