48 lines
1.6 KiB
Python
48 lines
1.6 KiB
Python
import json
|
|
import urllib.parse
|
|
from classes import *
|
|
|
|
|
|
def getRadar():
|
|
return HTTPClient().get("http://zugradar.oebb.at/bin/query.exe/dny?look_minx=-180000000&look_maxx=180000000&look_miny=-90000000&look_maxy=90000000&tpl=trains2json2&look_json=yes&performLocating=1&look_nv=get_zntrainname|no|attr|81|get_rtonly|yes|zugposmode|2|interval|30000|intervalstep|2000|maxnumberoftrains|500000000000|").text
|
|
|
|
|
|
def getTrains(names=None):
|
|
trains = json.loads(getRadar())["t"]
|
|
for train in trains:
|
|
name = " ".join(train["n"].split())
|
|
# destination = workers.conn.getStation(train["l"])
|
|
destination = train["l"]
|
|
xcoord = train["x"]
|
|
ycoord = train["y"]
|
|
prodclass = train["c"]
|
|
tid = train["i"]
|
|
|
|
find = False if names else True
|
|
|
|
if not find:
|
|
for cname in names:
|
|
if cname.lower().replace(" ", "") == name.split("-")[0].lower().replace(" ", "") or name.lower().replace(" ", "").startswith(cname.lower().replace(" ", "")):
|
|
find = True
|
|
|
|
if find:
|
|
yield Train(name=name, dest=destination, xcoord=xcoord, ycoord=ycoord, prodclass=prodclass, tid=tid)
|
|
|
|
|
|
def worker(trains=None, json=False):
|
|
outtext = """{
|
|
"trains": [
|
|
""" if json else """<?xml version="1.0" encoding="UTF-8"?>
|
|
<trains>
|
|
"""
|
|
|
|
for train in getTrains(trains):
|
|
outtext += ",\n" if (json and not outtext.strip()[-1] == "[") else ""
|
|
outtext += train.json(2) if json else train.xml(1)
|
|
outtext += "\n" if not json else ""
|
|
|
|
outtext += """
|
|
]
|
|
}""" if json else "</trains>"
|
|
|
|
return outtext
|