From 10c2b9ffcaea345242ee1fea2047c52148f42188 Mon Sep 17 00:00:00 2001 From: Lucas Date: Sat, 9 Oct 2021 20:12:44 -0400 Subject: [PATCH] adding update time very hastily to the top right --- requirements.txt | 2 + server.py | 41 +++++++++++-------- templates/layouts/index.html | 10 ++--- .../static/js/{DataRequests.js => MtaData.js} | 6 +++ 4 files changed, 38 insertions(+), 21 deletions(-) rename templates/static/js/{DataRequests.js => MtaData.js} (95%) diff --git a/requirements.txt b/requirements.txt index 6411e55..d829544 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,6 +3,7 @@ certifi==2020.12.5 chardet==4.0.0 click==8.0.1 colorama==0.4.4 +deepdiff==5.5.0 dnspython==1.16.0 Flask==2.0.1 greenlet==1.1.0 @@ -13,6 +14,7 @@ itsdangerous==2.0.1 Jinja2==3.0.1 MarkupSafe==2.0.1 numpy==1.21.0 +ordered-set==4.0.2 pandas==1.3.0 protobuf==3.16.0 protobuf3-to-dict==0.1.5 diff --git a/server.py b/server.py index 91fb757..4d0a0be 100644 --- a/server.py +++ b/server.py @@ -1,12 +1,12 @@ -import logging import os import threading - -from flask import Flask, jsonify, render_template, request, abort -from mta_manager import MTA import pandas as pd +from deepdiff import DeepDiff +from datetime import datetime from dotenv import load_dotenv +from flask import Flask, jsonify, render_template, request, abort +from mta_manager import MTA load_dotenv() @@ -49,8 +49,10 @@ def get_mta_data(): global subway_data station = request.json["station"] if station in subway_data: + mta_data = subway_data[station] + mta_data["LastUpdated"] = subway_data["LastUpdated"] return jsonify( - subway_data[station] + mta_data ) else: abort(404) @@ -71,16 +73,20 @@ def get_stop_id(): if __name__ == "__main__": api_key = os.getenv('MTA_API_KEY', '') - mtaController = MTA( - api_key, - ["A", "C", "E", "1", "2", "3"], - ["127S", "127N", "A27N", "A27S"] - ) + old_data = None + last_updated = datetime.now().strftime("%d/%m/%Y %H:%M:%S") async def mta_callback(routes): - global subway_data + global subway_data, old_data, last_updated subway_data = link_to_station(mtaController.convert_routes_to_station_first(routes)) + subway_data["LastUpdated"] = last_updated + if old_data is None: + old_data = subway_data + data_diff = DeepDiff(old_data, subway_data, ignore_order=True) + if data_diff != {}: + old_data = subway_data + last_updated = datetime.now().strftime("%d/%m/%Y %H:%M:%S") app.logger.info(f"Updated Subway Data - {subway_data}") @@ -93,15 +99,20 @@ if __name__ == "__main__": self.run() + mtaController = MTA( + api_key, + ["A", "C", "E", "1", "2", "3"], + ["127S", "127N", "A27N", "A27S"] + ) + mtaController.add_callback(mta_callback) + def start_mta(): - mtaController.add_callback(mta_callback) while True: try: mtaController.start_updates() except Exception as e: app.logger.info(f"Exception found in update function - {e}") - threadLock = threading.Lock() threads = [threadWrapper(start_mta)] @@ -109,10 +120,8 @@ if __name__ == "__main__": t.start() debug = os.getenv("DEBUG", 'False').lower() in ('true', '1', 't') + app.run(host="localhost", debug= True, port=5000) - app.run(host="localhost", debug= False, port=5000) - - # Wait for all threads to complete for t in threads: t.join() print("Exiting Main Thread") diff --git a/templates/layouts/index.html b/templates/layouts/index.html index 5192adc..8da0a50 100644 --- a/templates/layouts/index.html +++ b/templates/layouts/index.html @@ -17,9 +17,9 @@ src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"> - + - Hello, world! + Pi MTA Display!
@@ -205,8 +208,5 @@
- - - diff --git a/templates/static/js/DataRequests.js b/templates/static/js/MtaData.js similarity index 95% rename from templates/static/js/DataRequests.js rename to templates/static/js/MtaData.js index 0201ea8..dcba979 100644 --- a/templates/static/js/DataRequests.js +++ b/templates/static/js/MtaData.js @@ -28,6 +28,12 @@ $(document).ready(function () { function updateStation(station, data) { updateDirections(station, data, "North"); updateDirections(station, data, "South"); + updateTime(data["LastUpdated"]) + } + + function updateTime(lastUpdated){ + console.log(lastUpdated) + $("#last_updated").text(lastUpdated) } function updateDirections(station, data, direction) {