From 59f36218c854b5af5c6aa048e8ddaa4a19291f10 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Mon, 21 Mar 2016 22:11:22 +0100 Subject: Try to simplify, may be broken --- rss.go | 74 +++++++++++++++++++++++++++++++++--------------------------------- 1 file changed, 37 insertions(+), 37 deletions(-) (limited to 'rss.go') diff --git a/rss.go b/rss.go index 1afc246..df6c9f9 100644 --- a/rss.go +++ b/rss.go @@ -10,46 +10,46 @@ import ( ) type Feed struct { - Name string - URL string - Period time.Duration + Name string + URL string + Every time.Duration } var Feeds = []Feed{ { - Name: "LOR News", - URL: `https://www.linux.org.ru/section-rss.jsp?section=1`, - Period: time.Hour, + Name: "LOR News", + URL: `https://www.linux.org.ru/section-rss.jsp?section=1`, + Every: time.Hour, }, { - Name: "LOR Forum", - URL: `https://www.linux.org.ru/section-rss.jsp?section=2&filter=tech`, - Period: time.Minute, + Name: "LOR Forum", + URL: `https://www.linux.org.ru/section-rss.jsp?section=2&filter=tech`, + Every: time.Minute, }, { - Name: "LOR Gallery", - URL: `https://www.linux.org.ru/section-rss.jsp?section=3`, - Period: 2 * time.Hour, + Name: "LOR Gallery", + URL: `https://www.linux.org.ru/section-rss.jsp?section=3`, + Every: 2 * time.Hour, }, { - Name: "LOR Polls", - URL: `https://www.linux.org.ru/section-rss.jsp?section=5`, - Period: 2 * time.Hour, + Name: "LOR Polls", + URL: `https://www.linux.org.ru/section-rss.jsp?section=5`, + Every: 2 * time.Hour, }, { - Name: "OpenNET", - URL: `http://www.opennet.ru/opennews/opennews_all_noadv.rss`, - Period: 4 * time.Hour, + Name: "OpenNET", + URL: `http://www.opennet.ru/opennews/opennews_all_noadv.rss`, + Every: 4 * time.Hour, }, { - Name: "Undeadly", - URL: `http://undeadly.org/cgi?action=rss`, - Period: 2 * time.Hour, + Name: "Undeadly", + URL: `http://undeadly.org/cgi?action=rss`, + Every: 2 * time.Hour, }, { - Name: "Kernel", - URL: `https://www.kernel.org/feeds/kdist.xml`, - Period: 6 * time.Hour, + Name: "Kernel", + URL: `https://www.kernel.org/feeds/kdist.xml`, + Every: 6 * time.Hour, }, } @@ -58,8 +58,6 @@ type News struct { rss.Item } -var news = make(chan News) - func (n News) String() string { s := fmt.Sprintf("%v: %v", n.Name, n.Title) if n.Author != "" { @@ -71,16 +69,12 @@ func (n News) String() string { return s } -func ShowNews(conn *irc.Conn, _ *irc.Line) { - for n := range news { - conn.Notice(*room, n.String()) - } -} +func ShowNews(conn *irc.Conn, room string) { + news := make(chan News) -func init() { for _, f := range Feeds { - go func(c chan News, f Feed) { - ticker := time.NewTicker(f.Period) + go func(f Feed) { + ticker := time.NewTicker(f.Every) defer ticker.Stop() for t := range ticker.C { r, err := rss.Fetch(f.URL) @@ -88,13 +82,19 @@ func init() { log.Println(f.Name, err) return } - to := t.Add(-f.Period) + to := t.Add(-f.Every) for _, i := range r.Channel.Items { if i.PubDate.After(to) { - c <- News{f, i} + news <- News{f, i} } } } - }(news, f) + }(f) } + + go func() { + for n := range news { + conn.Notice(room, n.String()) + } + }() } -- cgit v1.2.3