Files
NewsSite/background-worker/rmv.go
hubble_dubble 3667c678e4 Please enter the commit message for your changes. Lines starting
with '#' will be ignored, and an empty message aborts the commit.

On branch main

Initial commit

Changes to be committed:
	new file:   .DS_Store
	new file:   .env
	new file:   .gitignore
	new file:   ai-worker/Dockerfile
	new file:   ai-worker/requirements.txt
	new file:   ai-worker/worker.py
	new file:   background-worker/Dockerfile
	new file:   background-worker/go.mod
	new file:   background-worker/go.sum
	new file:   background-worker/main.go
	new file:   background-worker/market.go
	new file:   background-worker/rmv.go
	new file:   background-worker/rss.go
	new file:   background-worker/sql_work.go
	new file:   db/Dockerfile
	new file:   db/init.sql
	new file:   docker-compose.yml
	new file:   server-app/dockerfile
	new file:   server-app/go.mod
	new file:   server-app/go.sum
	new file:   server-app/main.go
	new file:   volumes/.DS_Store
	new file:   volumes/db-init/.DS_Store
	new file:   volumes/db-init/data/news_rss_feeds.csv
	new file:   volumes/web/.DS_Store
	new file:   volumes/web/static/css/blog.css
	new file:   volumes/web/static/css/index-lite.css
	new file:   volumes/web/static/css/index.css
	new file:   volumes/web/static/css/mandelbrot.css
	new file:   volumes/web/static/img/minecraft.png
	new file:   volumes/web/static/js/blog.js
	new file:   volumes/web/static/js/index-lite.js
	new file:   volumes/web/static/js/index.js
	new file:   volumes/web/static/js/mandelbrot.js
	new file:   volumes/web/static/media/cantina.mp3
	new file:   volumes/web/static/media/countdowns.json
	new file:   volumes/web/static/media/gong.mp4
	new file:   volumes/web/template/blog.html
	new file:   volumes/web/template/index-lite.html
	new file:   volumes/web/template/index.html
	new file:   volumes/web/template/mandelbrot.html
2026-01-26 00:19:54 +01:00

109 lines
1.9 KiB
Go

package main
import (
"encoding/json"
"log"
"net/http"
"net/url"
"os"
)
type RMVResponse struct {
Trip []Trip `json:"Trip"`
}
type Trip struct {
LegList LegList `json:"LegList"`
}
type LegList struct {
Leg []Leg `json:"Leg"`
}
type Leg struct {
Type string `json:"type"`
Name string `json:"name"`
Origin Stop `json:"Origin"`
Destination Stop `json:"Destination"`
}
type Stop struct {
Name string `json:"name"`
Time string `json:"time"`
RtTime string `json:"rtTime"`
}
type Verbindung struct {
Linie string
Abfahrt string
Ankunft string
Von string
Nach string
}
func rmv_request() {
u, _ := url.Parse("https://www.rmv.de/hapi/trip")
q := u.Query()
q.Set("originId", "3018009")
q.Set("destId", "3029164")
q.Set("format", "json")
q.Set("accessId", os.Getenv("RMV_API_KEY"))
u.RawQuery = q.Encode()
resp, err := http.Get(u.String())
if err != nil {
panic(err)
}
defer resp.Body.Close()
var respData RMVResponse
dec := json.NewDecoder(resp.Body)
if err := dec.Decode(&respData); err != nil {
log.Fatal(err)
}
var verbindungen [][]Verbindung
for _, trip := range respData.Trip {
var tripInfo []Verbindung
for _, leg := range trip.LegList.Leg {
if leg.Type == "WALK" {
continue
}
abfahrt := leg.Origin.RtTime
if abfahrt == "" {
abfahrt = leg.Origin.Time
}
ankunft := leg.Destination.RtTime
if ankunft == "" {
ankunft = leg.Destination.Time
}
tripInfo = append(tripInfo, Verbindung{
Linie: leg.Name,
Abfahrt: abfahrt,
Ankunft: ankunft,
Von: leg.Origin.Name,
Nach: leg.Destination.Name,
})
}
if len(tripInfo) > 0 {
verbindungen = append(verbindungen, tripInfo)
}
}
writeVerbindungToSQL(verbindungen)
log.Println("RMV data updated")
if err := writeVerbindungToSQL(verbindungen); err != nil {
log.Printf("failed to persist RMV data: %v", err)
}
}