def get_stops_data(): """Return full stop times information.""" stops = get_stops() trips = get_trips() routes_names = get_routes_names() stops_times_csv = load_csv(STATIC_STOP_TIMES_FILE) for stop_time in stops_times_csv: stop_id = stop_time["stop_id"] stop = stops[stop_id] if "arrivals" not in stop: stop["arrivals"] = [] trip_id = stop_time["trip_id"] route_id = trips[trip_id] route_name = routes_names[route_id] arrival_time = stop_time["arrival_time"] stop["arrivals"].append({ "route_name": route_name, "arrival_time": arrival_time, "arrival_time_integer": get_time_integer(arrival_time) }) return stops
def get_routes_trips(): """Return list of trips for each route in Lviv.""" trips_csv = load_csv(STATIC_TRIPS_FILE) routes_trips = collections.defaultdict(set) for trip in trips_csv: route_id = trip["route_id"] trip_id = trip["block_id"] routes_trips[route_id].add(trip_id) return routes_trips
def get_trips(): """Return trip_id and route_id mapping""" trips_csv = load_csv(STATIC_TRIPS_FILE) trips = {} for trip in trips_csv: trip_id = trip["trip_id"] route_id = trip["route_id"] trips[trip_id] = route_id return trips
def get_routes(): """Load csv file with static data for routes in Lviv.""" agency_csv = load_csv(STATIC_AGENCY_FILE) routes_csv = load_csv(STATIC_ROUTES_FILE) agencies = {agency["agency_id"]: agency["agency_name"] for agency in agency_csv} routes = [] for route in routes_csv: route_short_name = route["route_short_name"] route_type_short = re.sub(r"\d+", "", route_short_name) route_type = ROUTE_TYPE_MAP.get(route_type_short, "Інші") routes.append({ "id": route["route_id"], "route_type": route_type, "short_name": route_short_name, "long_name": route["route_long_name"], "agency_id": route["agency_id"], "agency_name": agencies[route["agency_id"]], "trips": [], }) return routes
def get_stops(): """Return stops information from static stops file.""" stops_csv = load_csv(STATIC_STOPS_FILE) stops = {} for stop in stops_csv: stop_id = stop["stop_id"] stop_latitude = float(stop["stop_lat"]) stop_longitude = float(stop["stop_lon"]) stop_name = stop["stop_name"] stop_desc = stop["stop_desc"] stops[stop_id] = { "stop_name": stop_name, "stop_desc": stop_desc, "coordinates": [stop_latitude, stop_longitude] } return stops
def get_stops_per_routes(): """Return dict with data about count of stops per routes.""" routes_trips = get_routes_trips() routes_names = get_routes_names() trips_map = {} for route, trips in routes_trips.items(): trips_map.update({trip: route for trip in trips}) stops = set() stop_times = load_csv(STATIC_STOP_TIMES_FILE) for stop_time in stop_times: trip_id = stop_time["trip_id"].split("_")[0] stop_id = stop_time["stop_id"] route_id = trips_map[trip_id] route_name = routes_names[route_id] stops.add((route_name, stop_id)) routes = dict.fromkeys(routes_names.values(), 0) for route_name, stop_id in stops: routes[route_name] += 1 stops_count = [{"id": k, "value": v} for k, v in routes.items()] return stops_count
def get_routes_names(): """Return short name for each route id.""" routes_csv = load_csv(STATIC_ROUTES_FILE) return {route["route_id"]: route["route_short_name"] for route in routes_csv}