added new feeds module
This commit is contained in:
parent
519a6aeaf1
commit
fa1fe08d7f
6 changed files with 67 additions and 6 deletions
modules
53
modules/feeds.go
Normal file
53
modules/feeds.go
Normal file
|
@ -0,0 +1,53 @@
|
|||
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)
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue