added new feeds module
This commit is contained in:
		
							parent
							
								
									519a6aeaf1
								
							
						
					
					
						commit
						fa1fe08d7f
					
				
					 6 changed files with 67 additions and 6 deletions
				
			
		
							
								
								
									
										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