feeds.go: fixes

This commit is contained in:
Andreas Neue 2024-07-06 23:55:40 +02:00
parent fa1fe08d7f
commit 3bc16b4c5b
7 changed files with 101 additions and 15 deletions

View file

@ -2,6 +2,7 @@ package modules
import (
"bufio"
"flag"
"fmt"
"os"
"time"
@ -19,8 +20,8 @@ func init() {
}
func feedsRun() {
time.Sleep(1 * time.Minute)
file, err := os.Open(feedsFeeds)
time.Sleep(15 * time.Second)
file, err := os.Open(*feedsFeeds)
if err != nil {
xlog.Fatal(err.Error())
}
@ -38,12 +39,26 @@ func feedsHandleMessage(m *Message) {
}
func feedsPoll(url string) {
defer func() {
if err := recover(); err != nil {
xlog.Error(fmt.Sprintf("%v", err))
}
}()
last := time.Now()
for {
fp := gofeed.NewParser()
feed, _ := fp.ParseURL(url)
if feed.Items == nil {
xlog.Error("Feed %s appears to lack any items", feed.Title)
return
}
for _, item := range feed.Items {
if item.UpdatedParsed.Unix() > last.Unix() {
if item.PublishedParsed == nil {
xlog.Error("Feed %s appears to lack timestamps", feed.Title)
break
}
if item.PublishedParsed.Unix() > last.Unix() {
SayCh <- fmt.Sprintf("%s\n[FEEDS] %s : %s - %s\n", *feedsChannel, feed.Title, item.Title, item.Link)
}
}