mirror of
https://github.com/idanoo/autobrr
synced 2025-07-23 00:39:13 +00:00
feat(feeds): view latest RSS and Torznab feed (#609)
feat(feeds): view latest run
This commit is contained in:
parent
5972d421d8
commit
fd67a7b24e
11 changed files with 205 additions and 47 deletions
|
@ -48,7 +48,9 @@ func NewRSSJob(feed *domain.Feed, name string, indexerIdentifier string, log zer
|
|||
}
|
||||
|
||||
func (j *RSSJob) Run() {
|
||||
if err := j.process(); err != nil {
|
||||
ctx := context.Background()
|
||||
|
||||
if err := j.process(ctx); err != nil {
|
||||
j.Log.Error().Err(err).Int("attempts", j.attempts).Msg("rss feed process error")
|
||||
|
||||
j.errors = append(j.errors, err)
|
||||
|
@ -57,12 +59,10 @@ func (j *RSSJob) Run() {
|
|||
|
||||
j.attempts = 0
|
||||
j.errors = []error{}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func (j *RSSJob) process() error {
|
||||
items, err := j.getFeed()
|
||||
func (j *RSSJob) process(ctx context.Context) error {
|
||||
items, err := j.getFeed(ctx)
|
||||
if err != nil {
|
||||
j.Log.Error().Err(err).Msgf("error fetching rss feed items")
|
||||
return errors.Wrap(err, "error getting rss feed items")
|
||||
|
@ -195,8 +195,8 @@ func (j *RSSJob) processItem(item *gofeed.Item) *domain.Release {
|
|||
return rls
|
||||
}
|
||||
|
||||
func (j *RSSJob) getFeed() (items []*gofeed.Item, err error) {
|
||||
ctx, cancel := context.WithTimeout(context.Background(), j.Timeout)
|
||||
func (j *RSSJob) getFeed(ctx context.Context) (items []*gofeed.Item, err error) {
|
||||
ctx, cancel := context.WithTimeout(ctx, j.Timeout)
|
||||
defer cancel()
|
||||
|
||||
feed, err := NewFeedParser(j.Timeout, j.Feed.Cookie).ParseURLWithContext(ctx, j.URL)
|
||||
|
@ -207,7 +207,7 @@ func (j *RSSJob) getFeed() (items []*gofeed.Item, err error) {
|
|||
// get feed as JSON string
|
||||
feedData := feed.String()
|
||||
|
||||
if err := j.Repo.UpdateLastRunWithData(context.Background(), j.Feed.ID, feedData); err != nil {
|
||||
if err := j.Repo.UpdateLastRunWithData(ctx, j.Feed.ID, feedData); err != nil {
|
||||
j.Log.Error().Err(err).Msgf("error updating last run for feed id: %v", j.Feed.ID)
|
||||
}
|
||||
|
||||
|
@ -247,10 +247,12 @@ func (j *RSSJob) getFeed() (items []*gofeed.Item, err error) {
|
|||
continue
|
||||
}
|
||||
if exists {
|
||||
j.Log.Trace().Msgf("cache item exists, skipping release: %v", item.Title)
|
||||
j.Log.Trace().Msgf("cache item exists, skipping release: %s", item.Title)
|
||||
continue
|
||||
}
|
||||
|
||||
j.Log.Debug().Msgf("found new release: %s", i.Title)
|
||||
|
||||
if err := j.CacheRepo.Put(bucketKey, key, []byte(item.Title), ttl); err != nil {
|
||||
j.Log.Error().Err(err).Str("entry", key).Msg("cache.Put: error storing item in cache")
|
||||
continue
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue