package modules import ( "bufio" "fmt" "os" "time" "git.dnix.de/an/xlog" "github.com/mmcdole/gofeed" ) var feedsFeeds = flag.String("feeds_feeds", "feeds.txt", "Feed list file") var feedsChannel = flag.String("feeds_channel", "", "Target channel") func init() { MsgFuncs["feeds"] = feedsHandleMessage RunFuncs["feeds"] = feedsRun } func feedsRun() { time.Sleep(1 * time.Minute) file, err := os.Open(feedsFeeds) if err != nil { xlog.Fatal(err.Error()) } defer file.Close() scanner := bufio.NewScanner(file) for scanner.Scan() { go feedsPoll(scanner.Text()) } if err := scanner.Err(); err != nil { xlog.Fatal(err.Error()) } } func feedsHandleMessage(m *Message) { } func feedsPoll(url string) { last := time.Now() for { fp := gofeed.NewParser() feed, _ := fp.ParseURL(url) for _, item := range feed.Items { if item.UpdatedParsed.Unix() > last.Unix() { SayCh <- fmt.Sprintf("%s\n[FEEDS] %s : %s - %s\n", *feedsChannel, feed.Title, item.Title, item.Link) } } last = time.Now() time.Sleep(15 * time.Minute) } }