-
Notifications
You must be signed in to change notification settings - Fork 0
/
transportrequest.py
67 lines (48 loc) · 2.2 KB
/
transportrequest.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#!/usr/bin/python
# -*- coding:utf-8 -*-
import json
import requests
class TransportRequest:
def __init__(self, _configAPI):
self.m_AppID = _configAPI['appID']
self.m_AppKey = _configAPI['key']
self.m_StationCode = _configAPI['station_code']
self.m_CallingAt = _configAPI['calling_at']
def DefaultRequest(self, _url, _customParams):
queryParameters = {'app_id': self.m_AppID,
'app_key': self.m_AppKey}
queryParameters.update(_customParams)
try:
responseObject = requests.get(_url, queryParameters)
if(responseObject.ok == False):
print("")
return
return responseObject.json()
except requests.ConnectionError:
return
def GetLiveServices(self):
''' Live service updates at a given station: departures, arrivals or passes '''
url = f"https://transportapi.com/v3/uk/train/station/{self.m_StationCode}/live.json"
customQueryParameters = { 'calling_at': self.m_CallingAt,
'darwin': 'true' }
dataTransport = self.DefaultRequest(url, customQueryParameters)
if(dataTransport == None):
return [], ""
return dataTransport['departures']['all'], dataTransport["station_name"]
def GetTimetabledAtServiceID(self, _serviceID):
''' Timetabled service updates for a given service '''
url = f"https://transportapi.com/v3/uk/train/service/{_serviceID}///timetable.json"
customQueryParameters = { 'station_code': self.m_StationCode }
dataTransport = self.DefaultRequest(url, customQueryParameters)
if(dataTransport == None):
return []
return dataTransport['stops']
def GetPlacesInformations(self, _query: str, _type: str):
''' Various information from a location (geo location, code, name, type) '''
url = f"https://transportapi.com/v3/uk/places.json"
customQueryParameters = {'query': _query,
'type': _type}
dataTransport = self.DefaultRequest(url, customQueryParameters)
if(dataTransport == None):
return []
return dataTransport['member']