Fix feed updated for appendNewItems
parent
c0b6d70899
commit
0640e065fa
14
rss/feed.go
14
rss/feed.go
|
|
@ -103,28 +103,32 @@ func (feed *Feed) fromGofeed(gofeed *gofeed.Feed) ([]*Item, error) {
|
|||
t := time.Now()
|
||||
updated = &t
|
||||
}
|
||||
newitems, err := feed.appendNewItems(gofeed.Items)
|
||||
newitems, latest, err := feed.appendNewItems(gofeed.Items)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
feed.Updated = *updated //time.Now().UTC() //*updated
|
||||
feed.Updated = latest.Add(time.Second) //time.Now() //*updated //time.Now().UTC() //*updated
|
||||
feed.Title = gofeed.Title
|
||||
return newitems, nil
|
||||
}
|
||||
|
||||
func (feed *Feed) appendNewItems(items []*gofeed.Item) ([]*Item, error) {
|
||||
func (feed *Feed) appendNewItems(items []*gofeed.Item) ([]*Item, time.Time, error) {
|
||||
latest := feed.Updated
|
||||
newitems := []*Item{}
|
||||
for i := range items {
|
||||
t := gofeedItemTS(items[i])
|
||||
if t.Before(feed.Updated) {
|
||||
continue
|
||||
}
|
||||
if t.After(latest) {
|
||||
latest = *t
|
||||
}
|
||||
if ok, _ := regexp.MatchString(feed.ItemFilter, items[i].Title); !ok {
|
||||
continue
|
||||
}
|
||||
item := fromGofeedItem(items[i], feed.ContentFilter)
|
||||
item := FromGofeedItem(items[i], feed.ContentFilter)
|
||||
newitems = append(newitems, item)
|
||||
feed.Items = append(feed.Items, item.Name)
|
||||
}
|
||||
return newitems, nil
|
||||
return newitems, latest, nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ func (item *Item) Serialize() ([]byte, error) {
|
|||
return buffer.Bytes(), err
|
||||
}
|
||||
|
||||
func fromGofeedItem(gfitem *gofeed.Item, filter string) *Item {
|
||||
func FromGofeedItem(gfitem *gofeed.Item, filter string) *Item {
|
||||
item := &Item{
|
||||
Name: gfitem.Title,
|
||||
Link: gfitem.Link,
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@ func Test_RSSItem(t *testing.T) {
|
|||
},
|
||||
}
|
||||
for _, c := range cases {
|
||||
output := fromGofeedItem(&c.input, c.filter)
|
||||
output := FromGofeedItem(&c.input, c.filter)
|
||||
if *output != c.output {
|
||||
t.Errorf("failed to convert gofeed: wanted %v, got %v", c.output, *output)
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue