|
|
from urllib.parse import urlencodefrom urllib.request import urlopenfrom disk_cache import disk_cacheimport jsonfrom sensitive import api
def get_data(type, api_key=api, timeout=None, **args): base_url = "http://www.ctabustracker.com/bustime/api/v2/{type}?{query}" args['key'] = api_key args['format'] = 'json' url = base_url.format(type=type, query=urlencode(args)) if timeout is not None: response = urlopen(url, timeout=timeout) else: response = urlopen(url) data = json.load(response)['bustime-response'] try: data['error'] raise Exception(str(data["error"])) except KeyError: return data
def get_times(stop_id, api_key=api, timeout=None): return get_data('getpredictions', api_key, stpid=stop_id, timeout=timeout)
@disk_cachedef get_routes(api_key=api, timeout=None): return get_data('getroutes', api_key, timeout=timeout)
@disk_cachedef get_directions(route, api_key=api, timeout=None): return get_data('getdirections', api_key, rt=route, timeout=timeout)
@disk_cachedef get_stops(route, direction, api_key=api, timeout=None): return get_data('getstops', api_key, rt=route, dir=direction, timeout=timeout)
@disk_cachedef get_name_from_direction(route, direction, api_key=api, timeout=None): test_stop = get_stops(route, direction, api_key=api_key, timeout=timeout)['stops'][0]['stpid'] return get_times(test_stop, api_key=api, timeout=timeout)['prd'][0]['des']
|