-
Notifications
You must be signed in to change notification settings - Fork 0
/
dvs.py
70 lines (56 loc) · 2.26 KB
/
dvs.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
68
69
70
import requests
import urllib
import json
import datetime
import dateutil.parser
class TimeError(Exception):
pass
def validate_date(date_in):
try:
datetime.datetime.strptime(date_in, '%Y-%m-%d')
return True
except ValueError:
return False
def station(addr, station_code):
headers = {
"User-Agent": "Spoor.app website backend/1.0"
}
station_code_esc = urllib.quote(station_code, safe='')
r = requests.get(addr + "/v2/station/" + station_code_esc, headers=headers)
response = json.loads(r.text)
if response['result'] != "OK":
return False
return response['vertrektijden']
def train(addr, day, service_number, station = None, parse_time = False):
headers = {
"User-Agent": "Spoor.app website backend/1.0"
}
if validate_date(day) is False:
raise TimeError("Date input is incorrect")
day_esc = urllib.quote(day, safe='')
service_number_esc = urllib.quote(service_number, safe='')
if station is not None:
station_esc = urllib.quote(station, safe='')
url = addr + "/v2/trein/" + service_number_esc + "/" + day_esc + "/" + station_esc
else:
url = addr + "/v2/trein/" + service_number_esc + "/" + day_esc
r = requests.get(url, headers=headers)
response = json.loads(r.text)
if response['result'] != "OK":
return False
if response['trein'] is None:
return False
if parse_time is not False:
for vleugel in response['trein']['vleugels']:
for stop in vleugel['stopstations']:
if 'aankomst' in stop:
if stop['aankomst'] is not None:
stop['aankomst'] = dateutil.parser.parse(stop['aankomst']).strftime("%H:%M")
if 'vertrek' in stop:
if stop['vertrek'] is not None:
stop['vertrek'] = dateutil.parser.parse(stop['vertrek']).strftime("%H:%M")
if 'aankomst' in response['trein']:
response['trein']['aankomst'] = dateutil.parser.parse(response['trein']['aankomst']).strftime("%H:%M")
if 'vertrek' in response['trein']:
response['trein']['vertrek'] = dateutil.parser.parse(response['trein']['vertrek']).strftime("%H:%M")
return response['trein']