feat: add name suggesting

This commit is contained in:
Simon Ding
2024-07-19 16:59:12 +08:00
parent 1786e44933
commit 80d802fb4c
8 changed files with 152 additions and 55 deletions

View File

@@ -76,6 +76,7 @@ func (s *Server) Serve() error {
tv.GET("/record/:id", HttpHandler(s.GetMediaDetails))
tv.DELETE("/record/:id", HttpHandler(s.DeleteFromWatchlist))
tv.GET("/resolutions", HttpHandler(s.GetAvailableResolutions))
tv.GET("/suggest/:tmdb_id", HttpHandler(s.SuggestedSeriesFolderName))
}
indexer := api.Group("/indexer")
{

View File

@@ -4,7 +4,9 @@ import (
"fmt"
"polaris/db"
"polaris/log"
"polaris/pkg/utils"
"strconv"
"strings"
"github.com/gin-gonic/gin"
"github.com/pkg/errors"
@@ -35,3 +37,36 @@ func (s *Server) DeleteStorage(c *gin.Context) (interface{}, error) {
err = s.db.DeleteStorage(id)
return nil, err
}
func (s *Server) SuggestedSeriesFolderName(c *gin.Context) (interface{}, error) {
ids := c.Param("tmdb_id")
id, err := strconv.Atoi(ids)
if err != nil {
return nil, fmt.Errorf("id is not int: %v", ids)
}
var name, originalName, year string
d, err := s.MustTMDB().GetTvDetails(id, s.language)
if err != nil {
d1, err := s.MustTMDB().GetMovieDetails(id, s.language)
if err != nil {
return nil, errors.Wrap(err, "get movie details")
}
name = d1.Title
originalName = d1.OriginalTitle
year = strings.Split(d1.ReleaseDate, "-")[0]
} else {
name = d.Name
originalName = d.OriginalName
year = strings.Split(d.FirstAirDate, "-")[0]
}
name = fmt.Sprintf("%s %s", name, originalName)
if !utils.IsChineseChar(name) {
name = originalName
}
if year != "" {
name = fmt.Sprintf("%s (%s)", name, year)
}
return gin.H{"name": name}, nil
}

View File

@@ -53,6 +53,7 @@ type addWatchlistIn struct {
TmdbID int `json:"tmdb_id" binding:"required"`
StorageID int `json:"storage_id" `
Resolution string `json:"resolution" binding:"required"`
Folder string `json:"folder" binding:"required"`
}
func (s *Server) AddTv2Watchlist(c *gin.Context) (interface{}, error) {
@@ -109,6 +110,7 @@ func (s *Server) AddTv2Watchlist(c *gin.Context) (interface{}, error) {
AirDate: detail.FirstAirDate,
Resolution: string(in.Resolution),
StorageID: in.StorageID,
TargetDir: in.Folder,
}, epIds)
if err != nil {
return nil, errors.Wrap(err, "add to list")