Fix feed updated for appendNewItems

master
Bel LaPointe 2018-10-11 15:28:05 -06:00
parent c0b6d70899
commit 0640e065fa
3 changed files with 11 additions and 7 deletions

View File

@ -103,28 +103,32 @@ func (feed *Feed) fromGofeed(gofeed *gofeed.Feed) ([]*Item, error) {
t := time.Now() t := time.Now()
updated = &t updated = &t
} }
newitems, err := feed.appendNewItems(gofeed.Items) newitems, latest, err := feed.appendNewItems(gofeed.Items)
if err != nil { if err != nil {
return nil, err 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 feed.Title = gofeed.Title
return newitems, nil 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{} newitems := []*Item{}
for i := range items { for i := range items {
t := gofeedItemTS(items[i]) t := gofeedItemTS(items[i])
if t.Before(feed.Updated) { if t.Before(feed.Updated) {
continue continue
} }
if t.After(latest) {
latest = *t
}
if ok, _ := regexp.MatchString(feed.ItemFilter, items[i].Title); !ok { if ok, _ := regexp.MatchString(feed.ItemFilter, items[i].Title); !ok {
continue continue
} }
item := fromGofeedItem(items[i], feed.ContentFilter) item := FromGofeedItem(items[i], feed.ContentFilter)
newitems = append(newitems, item) newitems = append(newitems, item)
feed.Items = append(feed.Items, item.Name) feed.Items = append(feed.Items, item.Name)
} }
return newitems, nil return newitems, latest, nil
} }

View File

@ -50,7 +50,7 @@ func (item *Item) Serialize() ([]byte, error) {
return buffer.Bytes(), err return buffer.Bytes(), err
} }
func fromGofeedItem(gfitem *gofeed.Item, filter string) *Item { func FromGofeedItem(gfitem *gofeed.Item, filter string) *Item {
item := &Item{ item := &Item{
Name: gfitem.Title, Name: gfitem.Title,
Link: gfitem.Link, Link: gfitem.Link,

View File

@ -79,7 +79,7 @@ func Test_RSSItem(t *testing.T) {
}, },
} }
for _, c := range cases { for _, c := range cases {
output := fromGofeedItem(&c.input, c.filter) output := FromGofeedItem(&c.input, c.filter)
if *output != c.output { if *output != c.output {
t.Errorf("failed to convert gofeed: wanted %v, got %v", c.output, *output) t.Errorf("failed to convert gofeed: wanted %v, got %v", c.output, *output)
} }