formatted + minor stuff

This commit is contained in:
chrissy 2026-02-02 15:16:55 +01:00
parent 327de4b7e1
commit 2c5550cf05
1 changed files with 160 additions and 68 deletions

View File

@ -8,52 +8,82 @@ import sys
from datetime import datetime
import time
import pytz
import re
timezone = pytz.timezone('Europe/Berlin')
timezone = pytz.timezone("Europe/Berlin")
statusData = None # initialize variables...
tripData = None
# Your Travelynx-Api-token goes here
tlApiToken="[YOUR API TOKEN]"
tlApiToken = "YOUR API TOKEN"
# Known SSIDs for some regional train Wifis...
ssid_regio=["Wifi@DB","RRX Hotspot","Abellio Free WiFi","Arriva","DVB-Hotspot","ENNO_WiFi","FlixTrain Wi-Fi","MAVSTART-WiFi","ODEG Free WiFi","OEBB","RegioJet - zluty","Regiojet - zluty","Wifi@start","alex WiFi","trilex WiFi"]
ssid_regio = [
"Chrissy",
"Wifi@DB",
"WIFI@DB",
"RRX Hotspot",
"Abellio Free WiFi",
"Arriva",
"DVB-Hotspot",
"ENNO_WiFi",
"FlixTrain Wi-Fi",
"IntercityWiFi",
"MAVSTART-WiFi",
"ODEG Free WiFi",
"OEBB",
"RegioJet - zluty",
"Regiojet - zluty",
"Wifi@start",
"alex WiFi",
"trilex WiFi",
]
# Request the raw data from ICE-Portal and raise an exception, when it is not avialable.
def get_api_db():
global statusData
global tripData
try:
statusData_response = requests.get("https://iceportal.de/api1/rs/status", timeout=5)
statusData_response = requests.get(
"https://iceportal.de/api1/rs/status", timeout=5
)
statusData = statusData_response.json()
tripData_response = requests.get("https://iceportal.de/api1/rs/tripInfo/trip", timeout=5)
tripData_response = requests.get(
"https://iceportal.de/api1/rs/tripInfo/trip", timeout=5
)
tripData = tripData_response.json()
return 1
except requests.exceptions.RequestException:
return 0
# Request data from travelynx
def get_api_tl():
global tripDataTl
tripDataTl_response = requests.get(f"https://travelynx.de/api/v1/status/{tlApiToken}", timeout=5)
tripDataTl_response = requests.get(
f"https://travelynx.de/api/v1/status/{tlApiToken}", timeout=5
)
tripDataTl = tripDataTl_response.json()
def get_api_cd():
global statusDataCD
global tripDataCD
try:
statusDataCD_response = requests.get("http://cdwifi.cz/portal/api/vehicle/realtime", timeout=5)
statusDataCD_response = requests.get(
"http://cdwifi.cz/portal/api/vehicle/realtime", timeout=5
)
statusDataCD = statusDataCD_response.json()
return 1
except requests.exceptions.RequestException:
return 0
# Look for the current SSID. Replace wlp2s0 with the real name of your wifi interface and check, that the path to iwlist is correct (just type 'which iwlist' in the terminal)
def get_ssid():
try:
output = check_output(['/usr/sbin/iwgetid']).decode('utf-8')
output = check_output(["/usr/sbin/iwgetid"]).decode("utf-8")
ssid = output.split('"')[1]
return ssid
except:
@ -71,9 +101,10 @@ def get_speed_db():
except:
return "No Speed"
def get_speed_cd():
try:
speed=str(statusDataCD['speed'])
speed = str(statusDataCD["speed"])
if speed == None:
speed = "No Speed"
return speed
@ -81,47 +112,63 @@ def get_speed_cd():
return "No Speed"
# Figure out, whats the next station and filter the output for this.
def get_next_db():
if tripData["trip"]["stopInfo"] == None:
return "No TripInfo"
else:
next_stop = tripData["trip"]["stopInfo"]["actualNext"]
for i in tripData['trip']['stops']:
if i['station']['evaNr'] == next_stop:
nextStationName = i['station']['name']
arrivalDelay = i['timetable']['arrivalDelay']
utime=i['timetable']['actualArrivalTime']/1000
arrivalTime = datetime.fromtimestamp(utime, tz=timezone).strftime('%H:%M')
nextStationTrack = str(i['track']['actual'])
for i in tripData["trip"]["stops"]:
if i["station"]["evaNr"] == next_stop:
nextStationName = i["station"]["name"]
arrivalDelay = i["timetable"]["arrivalDelay"]
utime = i["timetable"]["actualArrivalTime"] / 1000
arrivalTime = datetime.fromtimestamp(utime, tz=timezone).strftime(
"%H:%M"
)
nextStationTrack = str(i["track"]["actual"])
break
tripinfo = nextStationName+" "+ arrivalTime+" ("+ arrivalDelay+") @ "+ nextStationTrack
tripinfo = (
nextStationName
+ " "
+ arrivalTime
+ " ("
+ arrivalDelay
+ ") @ "
+ nextStationTrack
)
return tripinfo
def get_next_tl():
try:
for i in tripDataTl['intermediateStops']:
if i['realArrival'] >= time.time():
nextStationName = i['name']
uScheduledTime=i['scheduledArrival']
uActualTime=i['realArrival']
for i in tripDataTl["intermediateStops"]:
if i["realArrival"] >= time.time():
if i["realArrival"] == None:
next
nextStationName = i["name"]
uScheduledTime = i["scheduledArrival"]
uActualTime = i["realArrival"]
arrivalDelay = "{:+.0f}".format(((uActualTime - uScheduledTime) / 60))
arrivalTime = datetime.fromtimestamp(uActualTime, tz=timezone).strftime('%H:%M')
tripinfo = nextStationName+" "+arrivalTime+" ("+arrivalDelay+")"
arrivalTime = datetime.fromtimestamp(uActualTime, tz=timezone).strftime(
"%H:%M"
)
tripinfo = (
nextStationName + " " + arrivalTime + " (" + arrivalDelay + ")"
)
break
else:
nextStationName=tripDataTl['toStation']['name']
nextStationName = tripDataTl["toStation"]["name"]
tripinfo = nextStationName
except:
nextStationName=tripDataTl['toStation']['name']
nextStationName = tripDataTl["toStation"]["name"]
tripinfo = nextStationName
return tripinfo
# Get the Trainnumber and final station of your current train
def get_trainInfo_db():
if tripData['trip']["trainType"]==None:
if tripData["trip"]["trainType"] == None:
return "No TrainInfo"
else:
trainType = tripData["trip"]["trainType"]
@ -129,37 +176,82 @@ def get_trainInfo_db():
finalStationName = tripData["trip"]["stopInfo"]["finalStationName"]
return trainType + " " + trainNumber + " " + finalStationName
# Get the Trainnumber and final station of your current travelynx trip
def get_trainInfo_tl():
checkin_tl()
trainType = tripDataTl["train"]["type"]
trainNumber = tripDataTl["train"]["no"]
fromStationName = tripDataTl["fromStation"]["name"]
toStationName = tripDataTl["toStation"]["name"]
toStationTrack = tripDataTl["toStation"]["platform"]
uScheduledTime=tripDataTl['toStation']['scheduledTime']
uActualTime=tripDataTl['toStation']['realTime']
uScheduledTime = tripDataTl["toStation"]["scheduledTime"]
uActualTime = tripDataTl["toStation"]["realTime"]
arrivalDelay = "{:+.0f}".format(((uActualTime - uScheduledTime) / 60))
arrivalTime = datetime.fromtimestamp(uActualTime, tz=timezone).strftime('%H:%M')
return trainType+" "+trainNumber+" | "+fromStationName+""+ toStationName+" "+arrivalTime+" ("+arrivalDelay+") @ "+ toStationTrack
arrivalTime = datetime.fromtimestamp(uActualTime, tz=timezone).strftime("%H:%M")
return (
trainType
+ " "
+ trainNumber
+ " | "
+ fromStationName
+ ""
+ toStationName
+ " "
+ arrivalTime
+ " ("
+ arrivalDelay
+ ") @ "
+ toStationTrack
)
def checkin_tl():
if tripDataTl["checkedIn"] == False:
sys.exit()
def main():
# Look for WIFIonICE or WIFI@DB otherwise do nothing...
if get_ssid() == "WIFIonICE":
if get_api_db() == 1:
print(get_trainInfo_db()+" | "+"SPEED: "+get_speed_db()+" km/h | "+"NEXT: "+get_next_db())
print(
re.sub(
r"\s+",
" ",
get_trainInfo_db()
+ " | "
+ "SPEED: "
+ get_speed_db()
+ " km/h | "
+ "NEXT: "
+ get_next_db(),
)
)
else:
get_api_tl()
print(get_trainInfo_tl()+" | NEXT: "+get_next_tl())
print(re.sub(r"\s+", " ", get_trainInfo_tl() + " | NEXT: " + get_next_tl()))
if get_ssid() in ssid_regio:
get_api_tl()
print(get_trainInfo_tl()+" | NEXT: "+get_next_tl())
print(re.sub(r"\s+", " ", get_trainInfo_tl() + " | NEXT: " + get_next_tl()))
if get_ssid() == "CDWiFi":
get_api_tl()
get_api_cd()
print(get_trainInfo_tl()+" | "+"SPEED: "+get_speed_cd()+" km/h | NEXT: "+get_next_tl())
print(
re.sub(
r"\s+",
" ",
get_trainInfo_tl()
+ " | "
+ "SPEED: "
+ get_speed_cd()
+ " km/h | NEXT: "
+ get_next_tl(),
)
)
if __name__ == '__main__':
if __name__ == "__main__":
sys.exit(main())