Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Dieses Skript sucht nach dem nächsten Bus der VAG/VGN
- # Parameter Haltestelle - der erste gefundene Bus/Ubahn zur Eingabe wird ausgewertet - numerischer Wert (findbar über: https://start.vag.de/dm/api/haltestellen.json/vgn?name=)
- # Parameter Richtung - gibt die Richtung an (Zielort, entweder Richtung1 oder Richtung2) (findbar über: https://start.vag.de/dm/api/abfahrten.json/vgn/<HALTESTELLENNUMMER-VGN>)
- # Parameter Beförderung - gibt die Beförderungsart an (UBahn/Bus/Tram) (findbar über: https://start.vag.de/dm/api/abfahrten.json/vgn/<HALTESTELLENNUMMER-VGN>)
- #
- # Author: Dariusz Gorka | Paessler AG 2016
- #
- param(
- [string]$haltestelle = "Nordostpark Ost",
- [string]$richtung= "Richtung2",
- [string]$befoerderung = "bus"
- )
- # URL für die Haltestelle
- $url_haltestelle = [string]::Format("http://start.vag.de/dm/api/haltestellen.json/vgn?name={0}",$haltestelle);
- # Request API und konvertiere die Seite in JSON
- $request_haltestelle = Invoke-WebRequest $url_haltestelle -UseBasicParsing | ConvertFrom-Json | Select -expand Haltestellen | Select-Object -first 1
- # HaltestellenNr sowie Haltestellen-Name erhalten
- $haltestelleNr = ($request_haltestelle | Select VGNKennung).VGNKennung
- $haltestelleName = ($request_haltestelle | Select Haltestellenname).Haltestellenname
- # URL für die Abfahrten
- $url_bus = [string]::Format("http://start.vag.de/dm/api/abfahrten.json/vgn/{0}",$haltestelleNr)
- # Request API und replace umlauts
- $request_bus = (Invoke-WebRequest $url_bus -UseBasicParsing).Content -replace "ü","ue" -replace "ä","ae" -replace "ö","oe" -replace "ß","ss"
- # konvertiere in JSON
- $request_bus = $request_bus | ConvertFrom-Json | Select -expand Abfahrten | Where { $_.Richtung -eq $richtung -and $_.Produkt -eq $befoerderung } | Select -first 1
- # Bekomme Daten
- $busLinie = ($request_bus | Select Linienname).Linienname -replace "ue","ü" -replace "ae","ä" -replace "oe","ö" -replace "ss","ß"
- $busRichtung =($request_bus | Select Richtungstext).Richtungstext -replace "ue","ü" -replace "ae","ä" -replace "oe","ö" -replace "ss","ß"
- $busAbfahrtIst =($request_bus | Select AbfahrtszeitIst).AbfahrtszeitIst -replace "ue","ü" -replace "ae","ä" -replace "oe","ö" -replace "ss","ß"
- $busAbfahrtSoll =($request_bus | Select AbfahrtszeitSoll).AbfahrtszeitSoll -replace "ue","ü" -replace "ae","ä" -replace "oe","ö" -replace "ss","ß"
- # Zeitzone-Deutschland
- $timezone = [System.TimeZoneInfo]::FindSystemTimeZoneById("W. Europe Standard Time")
- $time = [System.TimeZoneInfo]::ConvertTimeFromUtc((Get-Date).ToUniversalTime(), $timezone)
- $time = [string]::Format($time)
- # Rechne Ankuftszeit und Verspätung aus
- $arrival_minutes = (New-TimeSpan -Start $time.Substring(11,8) -End $busAbfahrtIst.Substring(11,8)).Minutes
- $arrival_seconds = (New-TimeSpan -Start $time.Substring(11,8) -End $busAbfahrtIst.Substring(11,8)).Seconds
- $arrival_totalseconds = [Math]::Floor((New-TimeSpan -Start $time.Substring(11,8) -End $busAbfahrtIst.Substring(11,8)).TotalSeconds)
- $delay_minutes = (New-TimeSpan -Start $busAbfahrtSoll.Substring(11,8) -End $busAbfahrtIst.Substring(11,8)).Minutes
- $delay_seconds = (New-TimeSpan -Start $busAbfahrtSoll.Substring(11,8) -End $busAbfahrtIst.Substring(11,8)).Seconds
- $delay_totalseconds = [Math]::Floor((New-TimeSpan -Start $busAbfahrtSoll.Substring(11,8) -End $busAbfahrtIst.Substring(11,8)).TotalSeconds)
- # Verspätung? Ja/Nein
- if($delay_minutes -gt 0 -Or $delay_minutes -gt 0){
- $delay = [string]::Format("Verspätung von {0} Minuten und {1} Sekunden",$delay_minutes,$delay_seconds)
- } else {
- $delay = "Keine Verspätung"
- }
- # Setze Text der Beförderungsart
- if($befoerderung -like "bus"){
- $befoerderungstext = "Der Bus"
- } elseif($befoerderung -like "ubahn"){
- $befoerderungstext = "Die UBahn"
- } elseif($befoerderung -like "Tram"){
- $befoerderungstext = "Die Tram"}
- # Ausgabetext Zusammensetzung
- $arrival_text = [string]::Format("{5} (Linie: {0}) Richtung {1} kommt in {2} Minuten und {3} Sekunden ({4})",$busLinie,$busRichtung,$arrival_minutes,$arrival_seconds,$delay,$befoerderungstext)
- $result = @"
- <?xml version=`"1.0`" encoding=`"UTF-8`" ?>
- <PRTG>
- <result>
- <channel>Arrival</channel>
- <value>$arrival_totalseconds</value>
- <showChart>1</showChart>
- <showTable>1</showTable>
- <Float>0</Float>
- <unit>TimeSeconds</unit>
- <mode>Absolute</mode>
- </result>
- <result>
- <channel>Delay</channel>
- <value>$delay_totalseconds</value>
- <showChart>1</showChart>
- <showTable>1</showTable>
- <Float>0</Float>
- <unit>TimeSeconds</unit>
- <mode>Absolute</mode>
- </result>
- <text>
- $arrival_text
- </text>
- </PRTG>
- "@
- # set output encoding
- [Console]::OutputEncoding = [System.Text.Encoding]::UTF8
- [Console]::WriteLine($result)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement