moving to static methods for creators.
This commit is contained in:
@@ -4,8 +4,8 @@ import json
|
|||||||
|
|
||||||
from google.transit import gtfs_realtime_pb2
|
from google.transit import gtfs_realtime_pb2
|
||||||
from protobuf_to_dict import protobuf_to_dict
|
from protobuf_to_dict import protobuf_to_dict
|
||||||
from .train import get_train_from_dict
|
|
||||||
from time import time
|
from time import time
|
||||||
|
from train import Train
|
||||||
|
|
||||||
|
|
||||||
class MTA(object):
|
class MTA(object):
|
||||||
@@ -52,7 +52,7 @@ class MTA(object):
|
|||||||
feed = gtfs_realtime_pb2.FeedMessage()
|
feed = gtfs_realtime_pb2.FeedMessage()
|
||||||
feed.ParseFromString(r.content)
|
feed.ParseFromString(r.content)
|
||||||
subway_feed = protobuf_to_dict(feed)['entity']
|
subway_feed = protobuf_to_dict(feed)['entity']
|
||||||
trains.extend([train for train in [get_train_from_dict(train_dict) for train_dict in subway_feed] if train is not None])
|
trains.extend([train for train in [Train.get_train_from_dict(train_dict) for train_dict in subway_feed] if train is not None])
|
||||||
return trains
|
return trains
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -2,10 +2,7 @@
|
|||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from math import trunc
|
from math import trunc
|
||||||
|
|
||||||
def get_stop_from_dict(obj):
|
|
||||||
if "arrival" in obj and "departure" in obj and "stop_id" in obj:
|
|
||||||
return Stop( obj["stop_id"], obj["arrival"]["time"], obj["departure"]["time"])
|
|
||||||
return None
|
|
||||||
|
|
||||||
|
|
||||||
class Stop(object):
|
class Stop(object):
|
||||||
@@ -22,3 +19,9 @@ class Stop(object):
|
|||||||
time = datetime.fromtimestamp(self.arrival_time)
|
time = datetime.fromtimestamp(self.arrival_time)
|
||||||
time_minutes = trunc(((time - now).total_seconds()) / 60)
|
time_minutes = trunc(((time - now).total_seconds()) / 60)
|
||||||
return f"stop_id:{self.id}| arr:{time_minutes}| dep:{self.departure_time}"
|
return f"stop_id:{self.id}| arr:{time_minutes}| dep:{self.departure_time}"
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_stop_from_dict(obj):
|
||||||
|
if "arrival" in obj and "departure" in obj and "stop_id" in obj:
|
||||||
|
return Stop(obj["stop_id"], obj["arrival"]["time"], obj["departure"]["time"])
|
||||||
|
return None
|
||||||
|
|||||||
@@ -1,17 +1,4 @@
|
|||||||
from .stop import get_stop_from_dict
|
from stop import Stop
|
||||||
|
|
||||||
|
|
||||||
def get_train_from_dict(obj):
|
|
||||||
if "trip_update" in obj and "stop_time_update" in obj["trip_update"]:
|
|
||||||
# data we need is here create object
|
|
||||||
id = obj["id"]
|
|
||||||
route = obj["trip_update"]["trip"]["route_id"]
|
|
||||||
all_stops = [get_stop_from_dict(x) for x in obj["trip_update"]["stop_time_update"]]
|
|
||||||
valid_stops = [valid_stop for valid_stop in all_stops if valid_stop is not None]
|
|
||||||
return Train(id, route, valid_stops)
|
|
||||||
else:
|
|
||||||
return None
|
|
||||||
|
|
||||||
|
|
||||||
class Train(object):
|
class Train(object):
|
||||||
def __init__(self, id, route, stops):
|
def __init__(self, id, route, stops):
|
||||||
@@ -41,3 +28,15 @@ class Train(object):
|
|||||||
def __str__(self):
|
def __str__(self):
|
||||||
formatted_stops = '\n'.join([str(stop) for stop in self.stops])
|
formatted_stops = '\n'.join([str(stop) for stop in self.stops])
|
||||||
return f"train_id:{self.id} | line_name:{self.route}| stops:\n {formatted_stops}"
|
return f"train_id:{self.id} | line_name:{self.route}| stops:\n {formatted_stops}"
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_train_from_dict(obj):
|
||||||
|
if "trip_update" in obj and "stop_time_update" in obj["trip_update"]:
|
||||||
|
# data we need is here create object
|
||||||
|
id = obj["id"]
|
||||||
|
route = obj["trip_update"]["trip"]["route_id"]
|
||||||
|
all_stops = [Stop.get_stop_from_dict(x) for x in obj["trip_update"]["stop_time_update"]]
|
||||||
|
valid_stops = [valid_stop for valid_stop in all_stops if valid_stop is not None]
|
||||||
|
return Train(id, route, valid_stops)
|
||||||
|
else:
|
||||||
|
return None
|
||||||
Reference in New Issue
Block a user