GoRacerr/release.go
2024-09-01 08:13:28 +07:00

100 lines
3.6 KiB
Go

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)
}
}