oebb_py/workers/val.py

58 lines
1.5 KiB
Python
Raw Normal View History

2017-09-21 12:48:05 +00:00
import json
import urllib.parse
from classes import Hafas, Station
2017-09-21 12:48:05 +00:00
2017-09-21 12:48:05 +00:00
def getValidator(name):
hafas = Hafas()
data = hafas.request("svcReqL", [
{
"req": {
"input": {
"field": "S",
"loc": {
"name": f"{name}?",
"type": "ALL",
"dist": 1000
},
"maxLoc": 7
}
},
"meth": "LocMatch",
"id": "1|1|"
}
])
return json.loads(data)
2017-09-21 12:48:05 +00:00
def validateName(name):
stations = getValidator(name)
for station in stations["svcResL"][0]["res"]["match"]["locL"]:
name = station["name"]
sttype = station["type"]
extid = station.get("extId")
xcoord = station["crd"]["x"]
ycoord = station["crd"]["y"]
prodclass = station.get("pCls")
yield Station(name=name, sttype=sttype, extid=extid, xcoord=xcoord, ycoord=ycoord, prodclass=prodclass)
def worker(name, json=False):
outtext = """{
2017-09-24 19:04:59 +00:00
"stations": [
""" if json else """<?xml version="1.0" encoding="UTF-8"?>
2017-09-23 14:57:24 +00:00
<stations>
"""
for station in validateName(name):
outtext += ",\n" if (json and not outtext.strip()[-1] == "[") else ""
outtext += station.json(2) if json else station.xml(1)
outtext += "\n" if not json else ""
outtext += """
2017-09-24 19:04:59 +00:00
]
}""" if json else "</stations>"
return outtext