#!/usr/bin/python3 # -*- coding: utf-8 -*- from subprocess import check_output from requests import get import json import sys from datetime import datetime import pytz timezone = pytz.timezone('Europe/Berlin') statusData = None #initialize variables... tripData = None # Request the raw data from ICE-Portal def get_api_db(): global statusData global tripData statusData_response = get("https://iceportal.de/api1/rs/status", timeout=5) statusData = statusData_response.json() tripData_response = get("https://iceportal.de/api1/rs/tripInfo/trip", timeout=5) tripData = tripData_response.json() # 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(): scanoutput = check_output(["/usr/sbin/iwlist", "wlp2s0", "scan"]) for line in scanoutput.split(): line = line.decode("utf-8") if line[:5] == "ESSID": ssid = line.split('"')[1] return ssid # Get Speed from ICE-Portal def get_speed_db(): speed= str(statusData["speed"]) return speed # Figure out, whats the next station and filter the output for this. def get_next_db(): 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']) break tripinfo = nextStationName+" "+ arrivalTime+" ("+ arrivalDelay+") "+ nextStationTrack return tripinfo # Get the Trainnumber and final station of your current train def get_trainInfo_db(): trainType = tripData["trip"]["trainType"] trainNumber = tripData["trip"]["vzn"] finalStationName = tripData["trip"]["stopInfo"]["finalStationName"] return trainType+" "+trainNumber+" "+ finalStationName def main(): # Look for WIFIonICE otherwise do nothing... if get_ssid() == "WIFIonICE": get_api_db() print(get_trainInfo_db()+" | "+"SPEED: "+get_speed_db()+" km/h | "+"NEXT: "+get_next_db()) return 0 if __name__ == '__main__': sys.exit(main())