diff --git a/classes/__init__.py b/classes/__init__.py index a9041af..80e05fa 100644 --- a/classes/__init__.py +++ b/classes/__init__.py @@ -1,12 +1,15 @@ class Station: def __init__(self, name, sttype, extid = None, xcoord = None, ycoord = None, prodclass = None): self.name = name - self.sttype = stype + self.sttype = sttype self.extid = extid self.xcoord = xcoord self.ycoord = ycoord self.prodclass = prodclass + def useId(self): + return self.extid or self.name + class Service: def __init__(self, name, svtype, depst, deptime, arrst, arrtime, deppf = None, currdep = None, arrpf = None, curarr = None, img = None, url = None): self.name = name diff --git a/workers/conn.py b/workers/conn.py index 5764193..f730e89 100644 --- a/workers/conn.py +++ b/workers/conn.py @@ -1,2 +1,23 @@ -def worker(frm, to, count, time, mode): - return "Connection." +from bs4 import BeautifulSoup +import requests +import datetime +import workers.val + +def connRequest(frm, to, count = 3, time = datetime.datetime.now(), mode = False): + outdate = datetime.datetime.strftime(time,"%d.%m.%Y") + outtime = datetime.datetime.strftime(time,"%H:%M") + + url = "http://fahrplan.oebb.at/bin/query.exe/dn?start=1&S=%s&Z=%s&REQ0JourneyDate=%s&time=%s&REQ0HafasNumCons0=%s%s" % (frm.extId if frm.extId else frm.name, to.extid if to.extid else to.name, outdate, outtime, count, "×el=arrive" if mode else "") + source = requests.get(url).text + + if "GO_conViewMode=outward" not in source: + raise ValueError("No connection found.") + + return source + +def getStation(name): + return workers.val.validateName(name)[0] + +def worker(frm, to, count = 3, time = datetime.datetime.now(), mode = False): + source = connRequest(frm, to, count, time, mode) + conns = dissem(source) diff --git a/workers/val.py b/workers/val.py index f46a424..1fdf76a 100644 --- a/workers/val.py +++ b/workers/val.py @@ -1,2 +1,25 @@ +import requests +import json +import urllib.parse +from classes import * + +def getValidator(name): + return requests.get("http://www.oebb.at/__ressources/system/stationsHafas.jsp?q=%s" % name).text + +def validateName(name): + stations = json.loads(getValidator(name)) + for station in stations: + name = station["value"] + sttype = station["type"] + try: + extid = station["extId"] + except: + extid = None + xcoord = station["xcoord"] + ycoord = station["ycoord"] + prodclass = station["prodClass"] + + yield Station(name = name, sttype = sttype, extid = extid, xcoord = xcoord, ycoord = ycoord, prodclass = prodclass) + def worker(name): return "Validate."