sn-rss2tg/main.go

54 lines
941 B
Go

package main
import (
"log"
"time"
)
func WaitUntilNextUpdate() {
now := time.Now()
dur := now.Truncate(time.Hour).Add(time.Hour).Sub(now)
log.Println("sleeping for", dur.Round(time.Second))
time.Sleep(dur)
}
func contains(rss *Rss, a Item) bool {
if rss == nil {
return false
}
for _, x := range rss.Channel.Items {
if x.Title == a.Title {
return true
}
}
return false
}
func main() {
var oldRss *Rss
for {
rss, err := FetchStackerNewsRssFeed()
if err != nil {
log.Println(err)
WaitUntilNextUpdate()
continue
}
for _, item := range rss.Channel.Items {
// TODO: We ignore errors during sending items to telegram.
// This means these items will be missed since they will be skipped in the next run
if contains(oldRss, item) {
continue
}
err := SendItemToTelegram(&item)
if err != nil {
log.Println(err)
continue
}
}
oldRss = rss
WaitUntilNextUpdate()
}
}