moving to static methods for creators.

This commit is contained in:
Lucas
2022-03-30 22:57:54 -04:00
parent e12079fbde
commit 30cbe70d7b
3 changed files with 22 additions and 20 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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