GoRacerr/release.go

100 lines
3.6 KiB
Go
Raw Permalink Normal View History

2024-08-31 15:10:25 +07:00
package main
import (
"fmt"
"log"
"strconv"
tmdb "github.com/cyruzin/golang-tmdb"
)
type Release struct {
2024-09-01 08:13:28 +07:00
ID int `json:"id"`
2024-08-31 15:10:25 +07:00
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"`
2024-09-01 08:13:28 +07:00
Season string `json:"season"`
Episode string `json:"episode"`
Type string `json:"type"`
Db SQLiteDatabase
2024-08-31 15:10:25 +07:00
}
2024-09-01 08:13:28 +07:00
func NewRelease(race Race, cfg Config, db SQLiteDatabase) *Release {
2024-08-31 15:10:25 +07:00
return &Release{
2024-09-01 08:13:28 +07:00
TorrentName: race.TorrentName,
Title: race.Title,
Season: race.Season,
Episode: race.Episode,
Type: race.Type,
Year: race.Year,
Db: db,
2024-08-31 15:10:25 +07:00
}
}
2024-09-01 08:13:28 +07:00
func (r *Release) ProcessRelease(cfg Config) {
r.SearchTMDB(cfg)
2024-08-31 15:10:25 +07:00
}
2024-09-01 08:13:28 +07:00
func (r *Release) SearchTMDB(cfg Config) {
2024-08-31 15:10:25 +07:00
2024-09-01 08:13:28 +07:00
tmdbClient, err := tmdb.Init(cfg.TMDBApiKey)
2024-08-31 15:10:25 +07:00
if err != nil {
fmt.Println(err)
}
m := make(map[string]string)
m["year"] = r.Year
2024-09-01 08:13:28 +07:00
m["language"] = "fr-FR"
2024-08-31 15:10:25 +07:00
2024-09-01 08:13:28 +07:00
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
2024-08-31 15:10:25 +07:00
2024-09-01 08:13:28 +07:00
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]
2024-08-31 15:10:25 +07:00
2024-09-01 08:13:28 +07:00
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)
}
}
2024-08-31 15:10:25 +07:00
} else {
2024-09-01 08:13:28 +07:00
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)
2024-08-31 15:10:25 +07:00
}
}