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()
|
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
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue