diff --git a/tcl.py b/tcl.py index 4e828b4..1be2d1c 100644 --- a/tcl.py +++ b/tcl.py @@ -7,6 +7,8 @@ import aiohttp import asyncio import json import base64 +import difflib + class Config(BaseProxyConfig): def do_update(self, helper: ConfigUpdateHelper) -> None: @@ -23,6 +25,8 @@ class Tcl(Plugin): @command.argument("pattern", pass_raw=True, required=True) async def tclInfos(self, evt: MessageEvent, pattern: str) -> None: await evt.mark_read() + strToEncode = self.config["mail"] + ':' + self.config["password"] + base64string = base64.b64encode(strToEncode.encode('utf-8')) if not pattern: await evt.respond( """ @@ -40,8 +44,6 @@ class Tcl(Plugin): """ ) url = 'https://download.data.grandlyon.com/ws/rdata/tcl_sytral.tclalertetrafic_2/all.json?maxfeatures=200&start=1' - strToEncode = self.config["mail"] + ':' + self.config["password"] - base64string = base64.b64encode(strToEncode.encode('utf-8')) resp = await self.http.get(url, headers={'Authorization' : 'Basic ' + base64string.decode('utf-8')}) ans = await resp.text() try: @@ -66,6 +68,76 @@ class Tcl(Plugin): await evt.respond("

Pas d'alerte sur cette ligne

", allow_html=True) except KeyError: await evt.respond("Erreur d'analyse JSON ") + elif pattern.__contains__("horaires"): + chunks = pattern.split(None, 1) + if len(chunks) != 2: + await evt.respond( + """ + !tcl horaires arrêt -> Retourne les horaires à l'arrêt + """ + ) + return + with open("/home/tfa/maubot/tcl/tcl_sytral.tclarret.json") as file: + objet = json.load(file) + values = objet["values"] + arrets = [] + for value in values: + arrets.append(value["nom"].lower()) + arret = difflib.get_close_matches(chunks[1].lower(),arrets,n=1,cutoff=0.8) + if len(arret) == 0: + await evt.respond("Arrêt non trouvé") + return + Ids =[] + nomArret = "" + for value in values: + if value["nom"].lower() == arret[0]: + nomArret = value["nom"] + Ids.append(value["id"]) + + + url = 'https://download.data.grandlyon.com/ws/rdata/tcl_sytral.tclpassagearret/all.json?maxfeatures=2000&start=1' + respText = "

Prochains départs " + nomArret + " :

" + await evt.respond(respText, allow_html=True) + + @classmethod def get_config_class(cls) -> Type[BaseProxyConfig]: return Config