diff --git a/server/api.py b/server/api.py index c09b025..cc6259c 100644 --- a/server/api.py +++ b/server/api.py @@ -1,5 +1,6 @@ -from bottle import route, template, error, run, ServerAdapter +from bottle import route, template, error, run, get, ServerAdapter, static_file from departures import Departure +from operator import itemgetter import threading class Server(ServerAdapter): @@ -16,15 +17,20 @@ class Server(ServerAdapter): def stop(self): self.server.shutdown() -server = Server(port=8080) +server = Server(host="0.0.0.0", port=8080) @route('/departures') def index(): resp = [] for d in Departure.storage: resp.append(Departure.storage[d].json()) + resp.sort(key=itemgetter("departure")) return {'departures': resp} +@get("/") +def static(): + return static_file("index.html", root="static") + @error(404) def error404(error): return '' diff --git a/server/departures.py b/server/departures.py index b925dda..d6b9d2a 100644 --- a/server/departures.py +++ b/server/departures.py @@ -91,7 +91,7 @@ class Departure: self.delay = delay def get_departure(self): - departure = round(self.get_accurate_departure()*10) + departure = floor(self.get_accurate_departure()*10) return departure def get_accurate_departure(self): @@ -106,5 +106,6 @@ class Departure: 'line': self.line, 'type': self.type, 'last_stop': self.last_stop, - 'departure': round(self.get_accurate_departure()) + 'departure': floor(self.get_accurate_departure()), + 'delay': self.delay } \ No newline at end of file diff --git a/server/lora.py b/server/lora.py index 5bf6c3a..13e1354 100644 --- a/server/lora.py +++ b/server/lora.py @@ -57,7 +57,7 @@ class LoraController: while True: if not len(self.message_pool): break - data = self.message_pool.pop() + data = self.message_pool.pop(0) url = f"https://lora.plzen.eu/api/v2/nodes/{data[0]:0>16x}/queue" string = data[2]() headers = CaseInsensitiveDict() diff --git a/server/main.py b/server/main.py index 1a085cb..20b5fb2 100644 --- a/server/main.py +++ b/server/main.py @@ -40,30 +40,35 @@ class MainLoop: sleep(1) if self.ended: break - + + def stop(self): + print("Stopping...") + server.stop() + self.ended = True + self.controller.message_pool = [] def input_loop(self): - while not self.ended: - print("> ", end="") - command = input() + try: + while not self.ended: + print("> ", end="") + command = input() - if command in ["d", "dep", "departures"]: - for did in Departure.storage: - print(Departure.storage[did]) - if len(Departure.storage) == 0: - print("No loaded departures") + if command in ["d", "dep", "departures"]: + for did in Departure.storage: + print(Departure.storage[did]) + if len(Departure.storage) == 0: + print("No loaded departures") - if command in ["q", "queue"]: - for m in self.controller.message_pool: - print(m) - if len(self.controller.message_pool) == 0: - print("No messages in queue") + if command in ["q", "queue"]: + for m in self.controller.message_pool: + print(m) + if len(self.controller.message_pool) == 0: + print("No messages in queue") - if command in ["s", "stop"]: - print("Stopping...") - server.stop() - self.ended = True - self.controller.message_pool = [] + if command in ["s", "stop"]: + self.stop() + except KeyboardInterrupt: + self.stop() main_loop = MainLoop("40", lora_controller) main_loop.input_loop() \ No newline at end of file diff --git a/server/static/index.html b/server/static/index.html new file mode 100644 index 0000000..5bd770a --- /dev/null +++ b/server/static/index.html @@ -0,0 +1,95 @@ + + + + Odjezdová tabule + + + + +
+ +
+
spoj
+
poslední zastávka
+
zpoždění
+
odjezd
+ +
+
+ + + \ No newline at end of file