advancing
Former-commit-id: 0ea003b2683a6174d3d304e4bd32dd01540b87df
This commit is contained in:
30
rss/feed.go
30
rss/feed.go
@@ -6,12 +6,13 @@ import (
|
||||
"log"
|
||||
"net/http"
|
||||
"regexp"
|
||||
"sort"
|
||||
"time"
|
||||
|
||||
"github.com/mmcdole/gofeed"
|
||||
)
|
||||
|
||||
const NSFeeds = "NSFeeds"
|
||||
const nsFeeds = "nsFeeds"
|
||||
|
||||
type Feed struct {
|
||||
Key string
|
||||
@@ -36,12 +37,12 @@ func (f *Feed) Decode(b []byte) error {
|
||||
return config.Decode(b, f)
|
||||
}
|
||||
|
||||
func (f *Feed) load() error {
|
||||
func (f *Feed) Load() error {
|
||||
if f.Key == "" {
|
||||
return errors.New("cannot load nil feed")
|
||||
}
|
||||
db := config.Values().DB
|
||||
b, err := db.Get(f.Key, NSFeeds)
|
||||
b, err := db.Get(f.Key, nsFeeds)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -50,7 +51,7 @@ func (f *Feed) load() error {
|
||||
|
||||
func (f *Feed) pull() error {
|
||||
if f.URL == "" {
|
||||
if err := f.load(); err != nil {
|
||||
if err := f.Load(); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
@@ -81,7 +82,7 @@ func (f *Feed) pull() error {
|
||||
log.Println("Skipping bad titled item")
|
||||
continue
|
||||
}
|
||||
if err := item.save(); err != nil {
|
||||
if err := item.save(f.Key); err != nil {
|
||||
log.Println(err)
|
||||
continue
|
||||
}
|
||||
@@ -98,7 +99,24 @@ func (f *Feed) save() error {
|
||||
return err
|
||||
}
|
||||
db := config.Values().DB
|
||||
return db.Set(f.Key, b, NSFeeds)
|
||||
return db.Set(f.Key, b, nsFeeds)
|
||||
}
|
||||
|
||||
func (f *Feed) List(limit int) ([]string, error) {
|
||||
keys, err := config.Values().DB.List([]string{nsItems, f.Key})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
sorted := sort.StringSlice(keys)
|
||||
sorted.Sort()
|
||||
if len(sorted) > limit {
|
||||
sorted = sorted[len(sorted)-limit:]
|
||||
}
|
||||
for i := 0; i < len(sorted)/2; i++ {
|
||||
j := len(sorted) - 1 - i
|
||||
sorted.Swap(i, j)
|
||||
}
|
||||
return sorted, nil
|
||||
}
|
||||
|
||||
func latestTSPtr(times ...*time.Time) time.Time {
|
||||
|
||||
Reference in New Issue
Block a user