diff --git a/tcl.py b/tcl.py
index 1be2d1c..0818842 100644
--- a/tcl.py
+++ b/tcl.py
@@ -10,6 +10,54 @@ import base64
import difflib
+class Terminus:
+ def __init__(self, name):
+ self.name = name
+ self.horaires = []
+
+ def add_horaire(self, horaire):
+ self.horaires.append(horaire)
+
+ def get_horaires(self):
+ return self.sort_horaires()
+
+ def get_name(self):
+ return self.name
+
+ def sort_horaires(self):
+ inth = []
+ for h in self.horaires:
+ if h == "Proche":
+ inth.append(0)
+ else :
+ inth.append(int(h[:-4]))
+ inth.sort()
+ return inth
+
+class Ligne:
+ def __init__(self, name):
+ self.name = name
+ self.terminus = []
+
+ def add_terminus(self, newterminus):
+ if newterminus in self.terminus:
+ return
+ self.terminus.append(newterminus)
+
+ def get_terminus(self, term):
+ for t in self.terminus:
+ if t.get_name() == term:
+ return t
+ return None
+
+ def get_all_terminus(self):
+ return self.terminus
+
+ def get_name(self):
+ return self.name
+
+
+
class Config(BaseProxyConfig):
def do_update(self, helper: ConfigUpdateHelper) -> None:
helper.copy("mail")
@@ -98,6 +146,7 @@ class Tcl(Plugin):
url = 'https://download.data.grandlyon.com/ws/rdata/tcl_sytral.tclpassagearret/all.json?maxfeatures=2000&start=1'
respText = "
Prochains départs " + nomArret + " :
"
self.log.info(respText)
+ lines = []
while len(url) > 0:
resp = await self.http.get(url, headers={'Authorization' : 'Basic ' + base64string.decode('utf-8')})
ans = await resp.text()
@@ -116,6 +165,7 @@ class Tcl(Plugin):
for value in values:
if value["id"] in Ids:
if value["type"] == "E": #Filtré sur les estimés et non théoriques
+ # Les metros ont leur propre code
if value["coursetheorique"].split('-')[0] == "301A" :
transport = "A"
elif value["coursetheorique"].split('-')[0] == "303" :
@@ -130,10 +180,43 @@ class Tcl(Plugin):
transport = "B"
else:
transport = value["coursetheorique"].split('-')[0][:-1]
- respText += "- Ligne " + transport + " - direction " \
- + value["direction"] + " : " + value["delaipassage"] + "
"
- self.log.info(respText)
+ found = False
+ for line in lines:
+ if line.get_name() == transport:
+ term = line.get_terminus(value["direction"])
+ if term is None:
+ newterm = Terminus(value["direction"])
+ newterm.add_horaire(value["delaipassage"])
+ line.add_terminus(newterm)
+ else:
+ term.add_horaire(value["delaipassage"])
+ found = True
+ if not found :
+ newLine = Ligne(transport)
+ newterm = Terminus(value["direction"])
+ newterm.add_horaire(value["delaipassage"])
+ newLine.add_terminus(newterm)
+ lines.append(newLine)
+ respText += ""
+ for line in lines:
+ self.log.info("Ligne " + line.get_name())
+ respText += "Ligne " + line.get_name() + "
"
+ terms = line.get_all_terminus()
+ for t in terms:
+ self.log.info(t.get_name())
+ respText += "Direction " + t.get_name() + ""
+ hs = t.get_horaires()
+ hs.sort()
+ for idx, h in enumerate(hs):
+ self.log.info(h)
+ if h == 0:
+ respText += "- Proche
"
+ else:
+ respText += "- " + str(h) + " min
"
+ if idx == 2: ##On limite à 3 items
+ break
+ respText += "
"
respText += "
"
await evt.respond(respText, allow_html=True)