media: support rss movie items with tmdb ids (#22)
This commit is contained in:
@@ -69,9 +69,15 @@ func (c *Client) getQualityProfileId(profileName string) (int, error) {
|
||||
}
|
||||
|
||||
func (c *Client) lookupMediaItem(item *media.Item) (*lookupRequest, error) {
|
||||
// retrieve and validate media provider data
|
||||
mdp, mdi := item.GetProviderData()
|
||||
if mdp == "" || mdi == "" {
|
||||
return nil, fmt.Errorf("no media provider details found")
|
||||
}
|
||||
|
||||
// prepare request
|
||||
reqUrl, err := util.URLWithQuery(util.JoinURL(c.apiURL, "series", "lookup"),
|
||||
url.Values{"term": []string{fmt.Sprintf("tvdb:%s", item.TvdbId)}})
|
||||
url.Values{"term": []string{fmt.Sprintf("%s:%s", mdp, mdi)}})
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("generate series lookup request url: %w", err)
|
||||
}
|
||||
@@ -96,12 +102,12 @@ func (c *Client) lookupMediaItem(item *media.Item) (*lookupRequest, error) {
|
||||
|
||||
// find series
|
||||
for _, s := range *b {
|
||||
if strconv.Itoa(s.TvdbId) == item.TvdbId {
|
||||
if strconv.Itoa(s.TvdbId) == mdi {
|
||||
return &s, nil
|
||||
}
|
||||
}
|
||||
|
||||
return nil, fmt.Errorf("series lookup tvdbId: %v: %w", item.TvdbId, ErrItemNotFound)
|
||||
return nil, fmt.Errorf("series lookup %sId: %v: %w", mdp, mdi, ErrItemNotFound)
|
||||
}
|
||||
|
||||
func (c *Client) AddMediaItem(item *media.Item, opts ...nabarr.PvrOption) error {
|
||||
|
||||
@@ -34,17 +34,18 @@ func (c *Client) queueProcessor(tail state.ShutdownTail) {
|
||||
return
|
||||
}
|
||||
|
||||
// validate item has required id(s)
|
||||
if feedItem.TvdbId == "" {
|
||||
// retrieve and validate media provider data
|
||||
mdp, mdi := feedItem.GetProviderData()
|
||||
if mdp == "" || mdi == "" {
|
||||
continue
|
||||
}
|
||||
|
||||
// check cache / add item to cache
|
||||
pvrCacheBucket := fmt.Sprintf("pvr_%s_%s", c.Type(), c.name)
|
||||
cacheKey := fmt.Sprintf("tvdb_%s", feedItem.TvdbId)
|
||||
cacheBucket := fmt.Sprintf("pvr_%s_%s", c.Type(), c.name)
|
||||
cacheKey := fmt.Sprintf("%s_%s", mdp, mdi)
|
||||
if !c.testMode {
|
||||
// not running in test mode, so use cache
|
||||
if cacheValue, err := c.cache.Get(pvrCacheBucket, cacheKey); err == nil {
|
||||
if cacheValue, err := c.cache.Get(cacheBucket, cacheKey); err == nil {
|
||||
// item already exists in the cache
|
||||
switch string(cacheValue) {
|
||||
case c.name:
|
||||
@@ -57,7 +58,7 @@ func (c *Client) queueProcessor(tail state.ShutdownTail) {
|
||||
}
|
||||
|
||||
// insert temp cache entry
|
||||
if err := c.cache.Put(pvrCacheBucket, cacheKey, []byte(c.cacheFiltersHash), c.cacheTempDuration); err != nil {
|
||||
if err := c.cache.Put(cacheBucket, cacheKey, []byte(c.cacheFiltersHash), c.cacheTempDuration); err != nil {
|
||||
c.log.Error().
|
||||
Err(err).
|
||||
Msg("Failed storing item in temp cache")
|
||||
@@ -71,7 +72,7 @@ func (c *Client) queueProcessor(tail state.ShutdownTail) {
|
||||
c.log.Debug().
|
||||
Err(err).
|
||||
Str("feed_title", feedItem.Title).
|
||||
Str("feed_tvdb_id", feedItem.TvdbId).
|
||||
Str(fmt.Sprintf("feed_%s_id", mdp), mdi).
|
||||
Str("feed_name", feedItem.Feed).
|
||||
Msg("Item was not found on trakt")
|
||||
continue
|
||||
@@ -80,7 +81,7 @@ func (c *Client) queueProcessor(tail state.ShutdownTail) {
|
||||
c.log.Error().
|
||||
Err(err).
|
||||
Str("feed_title", feedItem.Title).
|
||||
Str("feed_tvdb_id", feedItem.TvdbId).
|
||||
Str(fmt.Sprintf("feed_%s_id", mdp), mdi).
|
||||
Str("feed_name", feedItem.Feed).
|
||||
Msg("Failed finding item on trakt")
|
||||
continue
|
||||
@@ -125,7 +126,7 @@ func (c *Client) queueProcessor(tail state.ShutdownTail) {
|
||||
c.log.Warn().
|
||||
Err(err).
|
||||
Str("feed_title", mediaItem.FeedTitle).
|
||||
Str("feed_tvdb_id", feedItem.TvdbId).
|
||||
Str(fmt.Sprintf("feed_%s_id", mdp), mdi).
|
||||
Str("feed_name", feedItem.Feed).
|
||||
Msg("Item was not found via pvr lookup")
|
||||
continue
|
||||
@@ -134,7 +135,7 @@ func (c *Client) queueProcessor(tail state.ShutdownTail) {
|
||||
c.log.Error().
|
||||
Err(err).
|
||||
Str("feed_title", mediaItem.FeedTitle).
|
||||
Str("feed_tvdb_id", feedItem.TvdbId).
|
||||
Str(fmt.Sprintf("feed_%s_id", mdp), mdi).
|
||||
Str("feed_name", feedItem.Feed).
|
||||
Msg("Failed finding item via pvr lookup")
|
||||
continue
|
||||
@@ -151,7 +152,7 @@ func (c *Client) queueProcessor(tail state.ShutdownTail) {
|
||||
|
||||
// add item to perm cache (items already in pvr)
|
||||
if !c.testMode {
|
||||
if err := c.cache.Put(pvrCacheBucket, cacheKey, []byte(c.name), 0); err != nil {
|
||||
if err := c.cache.Put(cacheBucket, cacheKey, []byte(c.name), 0); err != nil {
|
||||
c.log.Error().
|
||||
Err(err).
|
||||
Msg("Failed storing item in perm cache")
|
||||
@@ -221,7 +222,7 @@ func (c *Client) queueProcessor(tail state.ShutdownTail) {
|
||||
|
||||
// add item to perm cache (item was added to pvr)
|
||||
if !c.testMode {
|
||||
if err := c.cache.Put(pvrCacheBucket, cacheKey, []byte(c.name), 0); err != nil {
|
||||
if err := c.cache.Put(cacheBucket, cacheKey, []byte(c.name), 0); err != nil {
|
||||
c.log.Error().
|
||||
Err(err).
|
||||
Msg("Failed storing item in perm cache")
|
||||
|
||||
Reference in New Issue
Block a user