diff --git a/modules/conjugaison.py b/modules/conjugaison.py new file mode 100644 index 0000000..6b5d31e --- /dev/null +++ b/modules/conjugaison.py @@ -0,0 +1,98 @@ +# coding=utf-8 + +import re +import traceback +import sys +from urllib.parse import quote + +from tools import web +from tools.web import striphtml + +nemubotversion = 3.3 + +def help_tiny (): + return "Find french conjugaison" + +def help_full (): + return "!conjugaison : give the conjugaison for in ." + +def load(context): + from hooks import Hook + add_hook("cmd_hook", Hook(cmd_conjug, "conjugaison")) + + +def cmd_conjug(msg): + if len(msg.cmds) < 3: + return Response(msg.sender, + "Demande incorrecte.\n %s" % help_full(), + msg.channel) + tens = msg.cmds[1] + verb = msg.cmds[2] + try: + conjug = get_conjug(verb, tens) + except: + conjug = None + exc_type, exc_value, exc_traceback = sys.exc_info() + traceback.print_exception(exc_type, exc_value, + exc_traceback) + + if conjug is None: + return Response(msg.sender, + "Une erreur s'est produite durant la recherche" + " du verbe %s" % verb, msg.channel) + elif len(conjug) > 0: + return Response(msg.sender, conjug, msg.channel, + title="Conjugaison de %s" % verb) + else: + return Response(msg.sender, + "Aucune conjugaison de %s n'a été trouvé" % verb, + msg.channel) + return False + + +def get_conjug(verb, stringTens): + url = "http://leconjugueur.lefigaro.fr/conjugaison/verbe/" + quote(verb.encode("ISO-8859-1")) + ".html" + print_debug (url) + page = web.getURLContent(url) + if page is not None: + for line in page.split("\n"): + if re.search('
', line) is not None: + return compute_line(line, stringTens) + else: + return None + +def compute_line(line, stringTens): + res = list() + idTemps = get_conjug_for_tens(stringTens) + + if idTemps is None: + return Response(msg.sender, + "Le temps que vous avez spécifiez n'existe pas", msg.channel) + + index = line.index('
([^/]*/b>)", newLine): +# res.append(strip_tags(elt.group(1))) + res.append(striphtml(elt.group(1))) + + return res + + +def get_conjug_for_tens(stringTens): + dic = {'pr' : '0', + 'ps' : '12', + 'pa' : '112', + 'pc' : '100', + 'f' : '18', + 'fa' : '118', + 'spr' : '24', + 'spa' : '124', + 'ii' : '6', + 'pqp' : '106'} + + return dic[stringTens] +