mirror of
https://github.com/simon-ding/polaris.git
synced 2026-05-29 22:18:08 +08:00
fix: remove torrent panics
This commit is contained in:
10
db/db.go
10
db/db.go
@@ -196,11 +196,10 @@ type MediaDetails struct {
|
|||||||
Episodes []*ent.Episode `json:"episodes"`
|
Episodes []*ent.Episode `json:"episodes"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Client) GetMediaDetails(id int) *MediaDetails {
|
func (c *Client) GetMediaDetails(id int) (*MediaDetails, error) {
|
||||||
se, err := c.ent.Media.Query().Where(media.ID(id)).First(context.TODO())
|
se, err := c.ent.Media.Query().Where(media.ID(id)).First(context.TODO())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Errorf("get series %d: %v", id, err)
|
return nil, errors.Errorf("get series %d: %v", id, err)
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
var md = &MediaDetails{
|
var md = &MediaDetails{
|
||||||
Media: se,
|
Media: se,
|
||||||
@@ -208,12 +207,11 @@ func (c *Client) GetMediaDetails(id int) *MediaDetails {
|
|||||||
|
|
||||||
ep, err := se.QueryEpisodes().All(context.Background())
|
ep, err := se.QueryEpisodes().All(context.Background())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Errorf("get episodes %d: %v", id, err)
|
return nil, errors.Errorf("get episodes %d: %v", id, err)
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
md.Episodes = ep
|
md.Episodes = ep
|
||||||
|
|
||||||
return md
|
return md, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Client) GetMedia(id int) (*ent.Media, error) {
|
func (c *Client) GetMedia(id int) (*ent.Media, error) {
|
||||||
|
|||||||
@@ -41,7 +41,11 @@ func (c *Client) checkBtReourceWithTmdb(r *torznab.Result, seriesId int) bool {
|
|||||||
log.Debugf("tmdb search no result, consider this torrent ok: %s", r.Name) //because tv name parse is not accurate
|
log.Debugf("tmdb search no result, consider this torrent ok: %s", r.Name) //because tv name parse is not accurate
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
series := c.db.GetMediaDetails(seriesId)
|
series, err := c.db.GetMediaDetails(seriesId)
|
||||||
|
if err != nil {
|
||||||
|
log.Warnf("get media details error: %v", err)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
se0 := se.Results[0]
|
se0 := se.Results[0]
|
||||||
if se0.ID != int64(series.TmdbID) {
|
if se0.ID != int64(series.TmdbID) {
|
||||||
|
|||||||
@@ -206,7 +206,11 @@ func (c *Client) GetEpisodeIds(r *ent.History) []int {
|
|||||||
// if r.EpisodeID > 0 {
|
// if r.EpisodeID > 0 {
|
||||||
// episodeIds = append(episodeIds, r.EpisodeID)
|
// episodeIds = append(episodeIds, r.EpisodeID)
|
||||||
// }
|
// }
|
||||||
series := c.db.GetMediaDetails(r.MediaID)
|
series, err := c.db.GetMediaDetails(r.MediaID)
|
||||||
|
if err != nil {
|
||||||
|
log.Errorf("get media details error: %v", err)
|
||||||
|
return []int{}
|
||||||
|
}
|
||||||
|
|
||||||
if len(r.EpisodeNums) > 0 {
|
if len(r.EpisodeNums) > 0 {
|
||||||
for _, epNum := range r.EpisodeNums {
|
for _, epNum := range r.EpisodeNums {
|
||||||
@@ -260,9 +264,9 @@ func (c *Client) moveCompletedTask(id int) (err1 error) {
|
|||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
series := c.db.GetMediaDetails(r.MediaID)
|
series, err := c.db.GetMediaDetails(r.MediaID)
|
||||||
if series == nil {
|
if err != nil {
|
||||||
return nil
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
st := c.db.GetStorage(series.StorageID)
|
st := c.db.GetStorage(series.StorageID)
|
||||||
@@ -354,7 +358,11 @@ type Task struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *Client) DownloadSeriesAllEpisodes(id int) []string {
|
func (c *Client) DownloadSeriesAllEpisodes(id int) []string {
|
||||||
tvDetail := c.db.GetMediaDetails(id)
|
tvDetail, err := c.db.GetMediaDetails(id)
|
||||||
|
if err != nil {
|
||||||
|
log.Errorf("get media details error: %v", err)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
m := make(map[int][]*ent.Episode)
|
m := make(map[int][]*ent.Episode)
|
||||||
for _, ep := range tvDetail.Episodes {
|
for _, ep := range tvDetail.Episodes {
|
||||||
m[ep.SeasonNumber] = append(m[ep.SeasonNumber], ep)
|
m[ep.SeasonNumber] = append(m[ep.SeasonNumber], ep)
|
||||||
@@ -441,7 +449,10 @@ func (c *Client) downloadAllMovies() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *Client) DownloadMovieByID(id int) (string, error) {
|
func (c *Client) DownloadMovieByID(id int) (string, error) {
|
||||||
detail := c.db.GetMediaDetails(id)
|
detail, err := c.db.GetMediaDetails(id)
|
||||||
|
if err != nil {
|
||||||
|
return "", errors.Wrap(err, "get media details")
|
||||||
|
}
|
||||||
if len(detail.Episodes) == 0 {
|
if len(detail.Episodes) == 0 {
|
||||||
return "", fmt.Errorf("no related dummy episode: %v", detail.NameEn)
|
return "", fmt.Errorf("no related dummy episode: %v", detail.NameEn)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -72,9 +72,9 @@ func names2Query(media *ent.Media) []string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func SearchTvSeries(db1 *db.Client, param *SearchParam) ([]torznab.Result, error) {
|
func SearchTvSeries(db1 *db.Client, param *SearchParam) ([]torznab.Result, error) {
|
||||||
series := db1.GetMediaDetails(param.MediaId)
|
series, err := db1.GetMediaDetails(param.MediaId)
|
||||||
if series == nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("no tv series of id %v", param.MediaId)
|
return nil, fmt.Errorf("no tv series of id %v: %v", param.MediaId, err)
|
||||||
}
|
}
|
||||||
limiter, err := db1.GetSizeLimiter("tv")
|
limiter, err := db1.GetSizeLimiter("tv")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -235,9 +235,9 @@ func isNoSeasonSeries(detail *db.MediaDetails) bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func SearchMovie(db1 *db.Client, param *SearchParam) ([]torznab.Result, error) {
|
func SearchMovie(db1 *db.Client, param *SearchParam) ([]torznab.Result, error) {
|
||||||
movieDetail := db1.GetMediaDetails(param.MediaId)
|
movieDetail, err := db1.GetMediaDetails(param.MediaId)
|
||||||
if movieDetail == nil {
|
if err != nil {
|
||||||
return nil, errors.New("no media found of id")
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
limiter, err := db1.GetSizeLimiter("movie")
|
limiter, err := db1.GetSizeLimiter("movie")
|
||||||
|
|||||||
@@ -109,7 +109,10 @@ func (s *Server) GetTvWatchlist(c *gin.Context) (interface{}, error) {
|
|||||||
ms.MonitoredNum = mon
|
ms.MonitoredNum = mon
|
||||||
ms.DownloadedNum = dow
|
ms.DownloadedNum = dow
|
||||||
} else {
|
} else {
|
||||||
details := s.db.GetMediaDetails(item.ID)
|
details, err := s.db.GetMediaDetails(item.ID)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Wrap(err, "get details")
|
||||||
|
}
|
||||||
for _, ep := range details.Episodes {
|
for _, ep := range details.Episodes {
|
||||||
if ep.Monitored {
|
if ep.Monitored {
|
||||||
ms.MonitoredNum++
|
ms.MonitoredNum++
|
||||||
@@ -160,7 +163,10 @@ func (s *Server) GetMediaDetails(c *gin.Context) (interface{}, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.Wrap(err, "convert")
|
return nil, errors.Wrap(err, "convert")
|
||||||
}
|
}
|
||||||
detail := s.db.GetMediaDetails(id)
|
detail, err := s.db.GetMediaDetails(id)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errors.Wrap(err, "get details")
|
||||||
|
}
|
||||||
st := s.db.GetStorage(detail.StorageID)
|
st := s.db.GetStorage(detail.StorageID)
|
||||||
return MediaDetails{MediaDetails: detail, Storage: &st.Storage}, nil
|
return MediaDetails{MediaDetails: detail, Storage: &st.Storage}, nil
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user