diff --git a/monitor.py b/monitor.py index 094f152..74b4b5d 100755 --- a/monitor.py +++ b/monitor.py @@ -182,21 +182,41 @@ def fixup_data(d: dict) -> dict: return d -def print_trip(trip: dict) -> None: - trip_part = "The {}:{} {} (???:{}: :{}) service to {} ".format(trip['orgHour'], trip['orgMinute'], - trip['lineNumber'], trip['lineCode'], - trip['directionCode'], trip['direction']) +def print_trip(trip: dict, full_text: bool = False) -> None: + if full_text: + fmt = { + "cancelled": "is cancelled.", + "late": "is {} min late.", + "early": "is {} min early.", + "on_time": "is on time.", + "no_rt": "has no real-time data.", + "trip": "The {}:{} {} service to {} " + } + else: + fmt = { + "cancelled": "cancelled", + "late": "+{} min", + "early": "-{} min", + "on_time": "on time", + "no_rt": "n/a", + "trip": "{}:{} {:<6}-> {:<38}" + } + + def fmt_trip(fmt_str: str, fmt_args: List[str] = []) -> str: + return (fmt['trip'] + fmt_str).format(trip['orgHour'], trip['orgMinute'], trip['lineNumber'], trip['direction'], + *fmt_args) + if has_realtime(trip): if is_cancelled(trip): - print(trip_part + "is cancelled.") + print(fmt_trip(fmt['cancelled'])) elif is_late(trip): - print(trip_part + "is {} minutes late.".format(trip['delay'])) + print(fmt_trip(fmt['late'], fmt_args=[trip['delay']])) elif is_early(trip): - print(trip_part + "is {} minutes early.".format(-trip['delay'])) + print(fmt_trip(fmt['early'], fmt_args=[-trip['delay']])) elif is_on_time(trip): - print(trip_part + "is on time.") + print(fmt_trip(fmt['on_time'])) else: - print(trip_part + "has no real-time data.") + print(fmt_trip(fmt['no_rt'])) def get_next_refresh(data: dict): diff --git a/setup.py b/setup.py index 10ae4f2..2754024 100644 --- a/setup.py +++ b/setup.py @@ -64,9 +64,8 @@ def get_lines(station_id: int) -> List[str]: page = False if page: print("Paging in batches of 20 results.") - results_displayed = 0 for ptr in range(len(results)): - if ptr % 20 == 0 or ptr == len(results) - 1 and ptr != 0: + if (ptr % 20 == 0 or ptr == len(results) - 1) and ptr != 0: choices += input("Please input your choices as a space-separated list (e.g. '0 2 7 15'):\n") + ' ' print(str(ptr) + ". " + results[ptr]['name']) else: @@ -113,3 +112,7 @@ def setup() -> None: print("Please save the following output to 'vrr.ini' and adjust any further settings:") print("\n" * 3) cfg.write(sys.stdout) + + +if __name__ == '__main__': + setup() diff --git a/vrr.ini b/vrr.ini index aefe960..c5e71fc 100644 --- a/vrr.ini +++ b/vrr.ini @@ -1,26 +1,16 @@ -; ===================================== -; VRR_ACCOUNTABILITY CONFIGURATION FILE -; ===================================== -; You may generate a configuration file using ./monitor.py -s - [crawl] -; A valid EFA station ID. This can be obtained in the Öffi "departures" view or by inspecting -; the regular POST requests on abfahrtsmonitor.vrr.de. -station_id=20021002 -; The server allows filtering by transport mode. Set those preferences here. -use_long_distance=yes -use_regional_trains=yes -use_commuter_trains=yes -use_underground_trains=yes -use_trams=yes -use_buses=yes -use_elevated_trains=yes -; The server allows filtering by line and direction. These line names can be -; obtained by inspecting the POST requests on abfahrtsmonitor.vrr.de. -use_lines=rbg:70070: :H,rbg:70070: :R,rbg:70076: :H,rbg:70076: :H +station_id = 20021002 +use_long_distance = yes +use_regional_trains = yes +use_commuter_trains = yes +use_underground_trains = yes +use_trams = yes +use_buses = yes +use_elevated_trains = yes +use_lines = swk:02052: :R,swk:02052: :H,swk:02054: :H,swk:02054: :R,swk:02058: :R,swk:02058: :H,swk:02060: :R,swk:02060: :H,swk:02061: :H,swk:02061: :R,bvr:88076:W:H,swk:02152:p:H,swk:02152:p:R,swk:02158:p:R,swk:02158:p:H,rbg:70070: :H,rbg:70070: :R,rbg:70076: :H,rbg:70076: :R,ddb:90E10: :H,ddb:90E10:P:R [db] -user=vrr -pass=vrr -database=vrr -host=localhost \ No newline at end of file +user = vrr +pass = vrr +host = localhost +database = vrr \ No newline at end of file