summaryrefslogtreecommitdiff
path: root/rss.go
diff options
context:
space:
mode:
Diffstat (limited to 'rss.go')
-rw-r--r--rss.go44
1 files changed, 22 insertions, 22 deletions
diff --git a/rss.go b/rss.go
index 0a49952..1d9d9db 100644
--- a/rss.go
+++ b/rss.go
@@ -89,32 +89,32 @@ func (n News) String() string {
return s
}
+func (f Feed) Watch(news chan News) {
+ ticker := time.NewTicker(f.Every)
+ defer ticker.Stop()
+ for t := range ticker.C {
+ r, err := rss.Fetch(f.URL)
+ if err != nil {
+ log.Println(f.Name, err)
+ return
+ }
+ last := t.Add(-f.Every)
+ for _, i := range r.Channel.Items {
+ if i.PubDate.After(last) {
+ news <- News{f, i}
+ }
+ }
+ }
+}
+
func ShowNews(conn *irc.Conn, room string) {
news := make(chan News)
for _, f := range Feeds {
- go func(f Feed) {
- ticker := time.NewTicker(f.Every)
- defer ticker.Stop()
- for t := range ticker.C {
- r, err := rss.Fetch(f.URL)
- if err != nil {
- log.Println(f.Name, err)
- return
- }
- to := t.Add(-f.Every)
- for _, i := range r.Channel.Items {
- if i.PubDate.After(to) {
- news <- News{f, i}
- }
- }
- }
- }(f)
+ go f.Watch(news)
}
- go func() {
- for n := range news {
- conn.Notice(room, n.String())
- }
- }()
+ for n := range news {
+ conn.Notice(room, n.String())
+ }
}