Melsungen news page added
parent
f247d094e2
commit
c792d19a31
|
@ -2,7 +2,10 @@ bot:
|
||||||
homeserver_url: "your_homeserver_url"
|
homeserver_url: "your_homeserver_url"
|
||||||
user: "your_bot_user"
|
user: "your_bot_user"
|
||||||
password: "your_bot_password"
|
password: "your_bot_password"
|
||||||
roomId: "news_room_id"
|
|
||||||
pages:
|
pages:
|
||||||
- page: "school"
|
- page: "school"
|
||||||
update_time: ["03:00", "15:45"]
|
update_time: ["03:00", "15:45"]
|
||||||
|
roomId: "news_room_id"
|
||||||
|
- page: "melsungen"
|
||||||
|
update_time: ["16:00"]
|
||||||
|
room_id: "news_room_id"
|
|
@ -32,10 +32,17 @@ func main() {
|
||||||
for _, updateTime := range page.UpdateTime {
|
for _, updateTime := range page.UpdateTime {
|
||||||
updateTimeSplit := strings.Split(updateTime, ":")
|
updateTimeSplit := strings.Split(updateTime, ":")
|
||||||
|
|
||||||
|
if page.Page == "school" {
|
||||||
if hour == updateTimeSplit[0] && minute == updateTimeSplit[1] {
|
if hour == updateTimeSplit[0] && minute == updateTimeSplit[1] {
|
||||||
pages.School()
|
pages.School()
|
||||||
log.Println("request", page.Page, updateTime, dt)
|
log.Println("request", page.Page, updateTime, dt)
|
||||||
}
|
}
|
||||||
|
} else if page.Page == "melsungen" {
|
||||||
|
if hour == updateTimeSplit[0] && minute == updateTimeSplit[1] {
|
||||||
|
pages.MelsungenNews()
|
||||||
|
log.Println("request", page.Page, updateTime, dt)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,7 @@ import (
|
||||||
"roese.dev/matrix-development-lauge/modules/config"
|
"roese.dev/matrix-development-lauge/modules/config"
|
||||||
)
|
)
|
||||||
|
|
||||||
func SendMessage(header string, content string, url string) {
|
func SendMessage(roomID string, topic string, header string, content string, url string) {
|
||||||
cfg := config.Cfg.Bot
|
cfg := config.Cfg.Bot
|
||||||
|
|
||||||
client, err := mautrix.NewClient(cfg.HomeserverUrl, "", "")
|
client, err := mautrix.NewClient(cfg.HomeserverUrl, "", "")
|
||||||
|
@ -30,7 +30,7 @@ func SendMessage(header string, content string, url string) {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
msg := format.RenderMarkdown(fmt.Sprintf("Thema: Radko-Stöckl-Schule - Aktuelles <h4>%s</h4>%s<br>%s", header, content, url), false, true)
|
msg := format.RenderMarkdown(fmt.Sprintf("Thema: %s <h4>%s</h4>%s<br>%s", topic, header, content, url), false, true)
|
||||||
|
|
||||||
client.SendMessageEvent(id.RoomID(cfg.RoomId), event.EventMessage, &msg)
|
client.SendMessageEvent(id.RoomID(roomID), event.EventMessage, &msg)
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,13 +17,13 @@ type Config struct {
|
||||||
type PageItem struct {
|
type PageItem struct {
|
||||||
Page string
|
Page string
|
||||||
UpdateTime []string `yaml:"update_time,flow"`
|
UpdateTime []string `yaml:"update_time,flow"`
|
||||||
|
RoomID string `yaml:"room_id"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type Bot struct {
|
type Bot struct {
|
||||||
HomeserverUrl string `yaml:"homeserver_url"`
|
HomeserverUrl string `yaml:"homeserver_url"`
|
||||||
User string
|
User string
|
||||||
Password string
|
Password string
|
||||||
RoomId string `yaml:"room_id"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func LoadConfig() {
|
func LoadConfig() {
|
||||||
|
|
|
@ -0,0 +1,102 @@
|
||||||
|
package pages
|
||||||
|
|
||||||
|
import (
|
||||||
|
"database/sql"
|
||||||
|
"fmt"
|
||||||
|
"log"
|
||||||
|
"net/http"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/PuerkitoBio/goquery"
|
||||||
|
matrixbot "roese.dev/matrix-development-lauge/matrix-bot"
|
||||||
|
"roese.dev/matrix-development-lauge/modules/config"
|
||||||
|
"roese.dev/matrix-development-lauge/modules/database"
|
||||||
|
)
|
||||||
|
|
||||||
|
func MelsungenNews() {
|
||||||
|
log.Println("mels")
|
||||||
|
res, err := http.Get("https://www.melsungen.de/aktuelles")
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
log.Println("Failed to get response from melsungen news page")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
defer res.Body.Close()
|
||||||
|
|
||||||
|
if res.StatusCode != 200 {
|
||||||
|
log.Fatal("status code")
|
||||||
|
}
|
||||||
|
|
||||||
|
log.Println("ok")
|
||||||
|
|
||||||
|
doc, err := goquery.NewDocumentFromReader(res.Body)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
log.Println("Find")
|
||||||
|
|
||||||
|
db := database.GetDatabase()
|
||||||
|
|
||||||
|
defer db.Close()
|
||||||
|
|
||||||
|
var pageTitle string
|
||||||
|
var firstPostTitle string
|
||||||
|
|
||||||
|
stmt, err := db.Prepare("SELECT page_title FROM pages WHERE page_id = ?")
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
defer stmt.Close()
|
||||||
|
|
||||||
|
err = stmt.QueryRow("melsungen").Scan(&pageTitle)
|
||||||
|
|
||||||
|
finish := false
|
||||||
|
|
||||||
|
doc.Find(".post-item").Each(func(i int, s *goquery.Selection) {
|
||||||
|
if !finish {
|
||||||
|
date := s.Find(".date_label").Text()
|
||||||
|
postTitle := s.Find(".post-title").Text()
|
||||||
|
postUrl := s.Find(".post-title a").AttrOr("href", "")
|
||||||
|
postExcerpt := s.Find(".post-excerpt").Text()
|
||||||
|
|
||||||
|
if firstPostTitle == "" {
|
||||||
|
firstPostTitle = postTitle
|
||||||
|
}
|
||||||
|
|
||||||
|
log.Printf("Review %d: %s %s %s\n", i, date, postTitle, postUrl)
|
||||||
|
|
||||||
|
if err == sql.ErrNoRows {
|
||||||
|
_, err = db.Exec(fmt.Sprintf("INSERT INTO pages(page_id, page_title) values('melsungen', '%s')", firstPostTitle))
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
finish = true
|
||||||
|
}
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if pageTitle == postTitle {
|
||||||
|
_, err = db.Exec(fmt.Sprintf("UPDATE pages SET page_title = '%s' WHERE page_id = 'melsungen'", firstPostTitle))
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
finish = true
|
||||||
|
} else {
|
||||||
|
matrixbot.SendMessage(config.Cfg.Pages[1].RoomID, "Melsungen - Aktuelles", postTitle, postExcerpt, postUrl)
|
||||||
|
}
|
||||||
|
|
||||||
|
time.Sleep(2 * time.Second)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
|
@ -8,6 +8,7 @@ import (
|
||||||
|
|
||||||
"github.com/PuerkitoBio/goquery"
|
"github.com/PuerkitoBio/goquery"
|
||||||
matrixbot "roese.dev/matrix-development-lauge/matrix-bot"
|
matrixbot "roese.dev/matrix-development-lauge/matrix-bot"
|
||||||
|
"roese.dev/matrix-development-lauge/modules/config"
|
||||||
"roese.dev/matrix-development-lauge/modules/database"
|
"roese.dev/matrix-development-lauge/modules/database"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -15,7 +16,8 @@ func School() {
|
||||||
res, err := http.Get("https://radko-stoeckl-schule.de")
|
res, err := http.Get("https://radko-stoeckl-schule.de")
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Println("Failed to get response from radko stoeckl schule page")
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
defer res.Body.Close()
|
defer res.Body.Close()
|
||||||
|
@ -83,6 +85,6 @@ func School() {
|
||||||
|
|
||||||
log.Println("header", latest_page_title, "text", text, "url", url)
|
log.Println("header", latest_page_title, "text", text, "url", url)
|
||||||
|
|
||||||
matrixbot.SendMessage(latest_page_title, text, "https://www.radko-stoeckl-schule.de"+url)
|
matrixbot.SendMessage(config.Cfg.Pages[0].RoomID, "Radko-Stöckl-Schule - Aktuelles", latest_page_title, text, "https://www.radko-stoeckl-schule.de"+url)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue