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