2021-02-14 16:18:26 +00:00
|
|
|
package media
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"errors"
|
|
|
|
|
"fmt"
|
|
|
|
|
"github.com/l3uddz/nabarr/media/trakt"
|
|
|
|
|
"strconv"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func (c *Client) GetShowInfo(item *FeedItem) (*Item, error) {
|
2021-02-21 22:30:56 +00:00
|
|
|
// retrieve and validate media provider data
|
|
|
|
|
mdp, mdi := item.GetProviderData()
|
|
|
|
|
if mdp == "" || mdi == "" {
|
|
|
|
|
return nil, fmt.Errorf("trakt: get show: no media provider details found")
|
|
|
|
|
}
|
|
|
|
|
|
2021-02-14 16:18:26 +00:00
|
|
|
// lookup on trakt
|
2021-02-21 22:30:56 +00:00
|
|
|
t, err := c.trakt.GetShow(mdp, mdi)
|
2021-02-14 16:18:26 +00:00
|
|
|
if err != nil {
|
|
|
|
|
if errors.Is(err, trakt.ErrItemNotFound) {
|
2021-02-21 22:30:56 +00:00
|
|
|
return nil, fmt.Errorf("trakt: get show: show with %sId %q: %w", mdp, mdi, ErrItemNotFound)
|
2021-02-14 16:18:26 +00:00
|
|
|
}
|
2021-02-21 22:30:56 +00:00
|
|
|
return nil, fmt.Errorf("trakt: get show: show with %sId %q: %w", mdp, mdi, err)
|
2021-02-14 16:18:26 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// transform trakt info to MediaItem
|
|
|
|
|
mi := &Item{
|
|
|
|
|
TvdbId: strconv.Itoa(t.Ids.Tvdb),
|
|
|
|
|
TmdbId: strconv.Itoa(t.Ids.Tmdb),
|
|
|
|
|
ImdbId: t.Ids.Imdb,
|
|
|
|
|
Slug: t.Ids.Slug,
|
|
|
|
|
Title: t.Title,
|
|
|
|
|
FeedTitle: item.Title,
|
|
|
|
|
Summary: t.Overview,
|
|
|
|
|
Country: []string{t.Country},
|
|
|
|
|
Network: t.Network,
|
|
|
|
|
Date: t.FirstAired,
|
|
|
|
|
Year: t.FirstAired.Year(),
|
|
|
|
|
Runtime: t.Runtime,
|
|
|
|
|
Rating: t.Rating,
|
|
|
|
|
Votes: t.Votes,
|
|
|
|
|
Status: t.Status,
|
|
|
|
|
Genres: t.Genres,
|
|
|
|
|
Languages: []string{t.Language},
|
|
|
|
|
AiredEpisodes: t.AiredEpisodes,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// omdb
|
|
|
|
|
if oi, err := c.omdb.GetItem(t.Ids.Imdb); err != nil {
|
|
|
|
|
c.log.Debug().
|
|
|
|
|
Err(err).
|
|
|
|
|
Str("imdb_id", t.Ids.Imdb).
|
|
|
|
|
Msg("Item was not found on omdb")
|
|
|
|
|
} else if oi != nil {
|
|
|
|
|
mi.Omdb = *oi
|
|
|
|
|
}
|
|
|
|
|
|
2021-02-19 23:31:23 +00:00
|
|
|
// tvdb
|
|
|
|
|
if ti, err := c.tvdb.GetItem(strconv.Itoa(t.Ids.Tvdb)); err != nil {
|
|
|
|
|
c.log.Debug().
|
|
|
|
|
Err(err).
|
|
|
|
|
Int("tvdb_id", t.Ids.Tvdb).
|
|
|
|
|
Msg("Item was not found on tvdb")
|
|
|
|
|
} else if ti != nil {
|
|
|
|
|
mi.Tvdb = *ti
|
2021-03-05 22:35:16 +00:00
|
|
|
|
|
|
|
|
// merge with trakt data
|
|
|
|
|
if mi.Network == "" {
|
|
|
|
|
mi.Network = ti.Network
|
|
|
|
|
}
|
2021-02-19 23:31:23 +00:00
|
|
|
}
|
|
|
|
|
|
2021-02-14 16:18:26 +00:00
|
|
|
return mi, nil
|
|
|
|
|
}
|