-
Notifications
You must be signed in to change notification settings - Fork 1
/
Ingolstadt.py
43 lines (33 loc) · 1.09 KB
/
Ingolstadt.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
from bs4 import BeautifulSoup
from park_api.geodata import GeoData
from park_api.util import convert_date
# Additional information for single lots:
# http://www2.ingolstadt.de/Wirtschaft/Parken/Parkeinrichtungen_der_IFG/
geodata = GeoData(__file__)
def parse_html(html):
soup = BeautifulSoup(html, "html.parser")
data = {
"last_updated": convert_date(soup.p.string, "(%d.%m.%Y, %H.%M Uhr)"),
"lots": []
}
# get all lots
raw_lots = soup.find_all("tr")
for raw_lot in raw_lots:
elements = raw_lot.find_all("td")
state = "open"
if "class" in raw_lot.attrs and "strike" in raw_lot["class"]:
state = "closed"
lot_name = elements[0].text
lot = geodata.lot(lot_name)
data["lots"].append({
"name": lot.name,
"free": int(elements[1].text),
"total": lot.total,
"lot_type": lot.type,
"address": lot.address,
"coords": lot.coords,
"state": state,
"id": lot.id,
"forecast": False
})
return data