pvr: add options and support for anime (#17)

* pvr: begin adding options

* pvr: add ability to configure add behaviour via config

* pvr: add skip_anime

* pvr: do not continue processing item if lookup failed or add to pvr failed
This commit is contained in:
l3uddz
2021-02-20 20:01:04 +00:00
committed by GitHub
parent 523e561666
commit a2848439b9
14 changed files with 283 additions and 30 deletions

View File

@@ -3,8 +3,11 @@ package sonarr
import (
"errors"
"fmt"
"github.com/l3uddz/nabarr"
"github.com/l3uddz/nabarr/media"
"github.com/l3uddz/nabarr/util"
"github.com/lefelys/state"
"strings"
)
func (c *Client) QueueFeedItem(item *media.FeedItem) {
@@ -134,6 +137,7 @@ func (c *Client) queueProcessor(tail state.ShutdownTail) {
Str("feed_tvdb_id", feedItem.TvdbId).
Str("feed_name", feedItem.Feed).
Msg("Failed finding item via pvr lookup")
continue
}
if s.Id > 0 {
@@ -156,6 +160,23 @@ func (c *Client) queueProcessor(tail state.ShutdownTail) {
continue
}
// set appropriate series type
switch {
case util.StringSliceContains(mediaItem.Genres, "anime"), util.StringSliceContains(mediaItem.Tvdb.Genre, "anime"):
s.Type = "anime"
}
// check if item should be skipped (skip options)
if c.skipAnime && strings.EqualFold(s.Type, "anime") {
c.log.Debug().
Str("trakt_title", mediaItem.Title).
Str("trakt_tvdb_id", mediaItem.TvdbId).
Int("trakt_year", mediaItem.Year).
Str("feed_name", feedItem.Feed).
Msg("Skipping item (skip_anime enabled)")
continue
}
// add item to pvr
c.log.Debug().
Str("feed_title", mediaItem.FeedTitle).
@@ -172,7 +193,6 @@ func (c *Client) queueProcessor(tail state.ShutdownTail) {
if c.testMode {
c.log.Info().
Err(err).
Str("trakt_title", mediaItem.Title).
Str("trakt_tvdb_id", mediaItem.TvdbId).
Int("trakt_year", mediaItem.Year).
@@ -181,7 +201,13 @@ func (c *Client) queueProcessor(tail state.ShutdownTail) {
continue
}
if err := c.AddMediaItem(mediaItem); err != nil {
opts := []nabarr.PvrOption{
nabarr.WithSeriesType(s.Type),
nabarr.WithAddMonitored(c.addMonitored),
nabarr.WithSearchMissing(c.searchMissing),
}
if err := c.AddMediaItem(mediaItem, opts...); err != nil {
c.log.Error().
Err(err).
Str("feed_title", mediaItem.FeedTitle).
@@ -190,6 +216,7 @@ func (c *Client) queueProcessor(tail state.ShutdownTail) {
Int("trakt_year", mediaItem.Year).
Str("feed_name", feedItem.Feed).
Msg("Failed adding item to pvr")
continue
}
// add item to perm cache (item was added to pvr)
@@ -202,7 +229,6 @@ func (c *Client) queueProcessor(tail state.ShutdownTail) {
}
c.log.Info().
Err(err).
Str("trakt_title", mediaItem.Title).
Str("trakt_tvdb_id", mediaItem.TvdbId).
Int("trakt_year", mediaItem.Year).