Vous lisez 3 fils de discussion
  • Auteur
    Messages
    • #4847
      lecagnois
      Participant

      Qui ta pas oublié l anniversaire d’un ami ou d un membre de la famille !
      Votre robot vous le rappel :

      Ci joint la procédure à inclure dans le fichier INMOOV-AI_startup.py

      `def anniversaire():
      # la clé du dico sera la date systeme
      anniversaire = time.strftime(‘%d/%m’)
      maintenant = datetime.now()
      annee=maintenant.year
      # création d un dictionnaire anniversaire entrer ici vos parents et amis (index :donnees)
      dico = {« 03/09″: »jeanpierre 1958 » , « 25/11″: »colette 1948 »}
      if (dico.get(anniversaire) == None):
      print(« pas anniversaire »)
      talk(« c’est l’anniversaire de personne »)
      else:
      agedico = int(dico.get(anniversaire)[-4:])
      prenom = (dico.get(anniversaire)[:-4])
      age = annee – agedico +1
      talk(« bon anniversaire  » + prenom + str(age) +  » printemps , tu les fais pas » )`

      Il faudra inclure la bibliotheque

      import time
      from datetime import datetime

      puis ajouter le fichier AIML qui va avec

      <?xml version="1.0" encoding="UTF-8"?>
      <aiml>                      
      
      <category>                   
       <pattern>"# anniversaire #</pattern> 
       <template>                  
      	<oob>                   
      		<mrl>             
      				<service>python</service>   
      				<method>exec</method>      
      				<param>anniversaire()</param>
      				                       
      				
      		 </mrl>            
      	</oob>                 
      </template>                 
      </category>                 
      
      <category><pattern>anniversaire de</pattern>
      <template><srai>#anniversaire#<star/></srai></template>
      </category> 
      
      </aiml> 

      le nommé anniversaire.aiml

      Prononcé le mot anniversaire , le programme vérifie vos amis dans le dictionnaire .
      il serait intéressant de mettre l action dans une fonction automatique
      je sais faire sous linux avec un cron
      Mais je sais pas faire sous MRL avec windows

      Si quelqu un a une idée ?

      Ou rajouté la tache dans les aléatoires .

      • Ce sujet a été modifié le il y a 9 années et 5 mois par lecagnois.
      • Ce sujet a été modifié le il y a 9 années et 5 mois par lecagnois.
    • #4850
      lecagnois
      Participant

      mis en forme du code :

      def anniversaire():
           # la clé du dico sera la date systeme
           anniversaire = time.strftime('%d/%m')
           maintenant = datetime.now()
           annee=maintenant.year
           # création d un dictionnaire anniversaire entrer ici vos parents et amis (index :donnees)
           dico = {"03/09":"jeanpierre 1958" , "25/11":"colette 1948"}	
           if (dico.get(anniversaire) == None):
      	    print("pas anniversaire")
      	    talk("c'est l'anniversaire de personne")
           else:
               agedico = int(dico.get(anniversaire)[-4:])
               prenom = (dico.get(anniversaire)[:-4])
               age = annee - agedico +1
               talk("bon anniversaire " + prenom + str(age) + " printemps , tu les fais pas" )
      	 
    • #4870
      lecagnois
      Participant

      Aller encore quelques modifications en jouant avec les dates en python .
      cela fais 3 semaines que j ai découvert ce langage , je m amuse comme un fou lol …

      la procédure anniversaire vérifie dans le dictionnaire vos amis puis va vous avertir 7 jours ou 1 jours avant l anniversaire de votre amis .

      vous pouvez bien sur modifier le nombre de jours avant de vous avertir
      exemple : modifier le chiffre +7 par un autre
      jour7 = datetime.timedelta(days = +7)

      comment installer tout ca :

      Dans le fichier INMOOV-AI_startup.py
      a) ajouter import time
      import datetime
      b) ajouter la procédure suivante :

      `def anniversaire():
      # la clé du dico sera la date systeme
      anniversaire = time.strftime(‘%m-%d’)
      jour = int(time.strftime(‘%d’))
      mois = int(time.strftime(‘%m’))
      annee = int(time.strftime(‘%Y’))

      # création d un dictionnaire anniversaire entrer ici vos parents et amis (index :donnees)
      dico = {« 09-12″: »jean pierre 1958 » , « 09-06″: »colette 1955 » , « 09-05 »: « francis 1960 »}
      # mise en forme des dates
      madate= datetime.datetime(annee,mois,jour)
      jour7 = datetime.timedelta(days = +7)
      jour1 = datetime.timedelta(days = +1)
      rappel = str((madate + jour7))[5:10]
      rappel2 = str((madate + jour1))[5:10]

      if (dico.get(rappel) != None):
      agedico = int(dico.get(rappel)[-4:])
      prenom = (dico.get(rappel)[:-4])
      age = annee – agedico +1
      talk(« c est lanniversaire de  » + prenom + str(age) + » ans dans 7 jours »)

      if (dico.get(rappel2) != None):
      agedico = int(dico.get(rappel2)[-4:])
      prenom = (dico.get(rappel2)[:-4])
      age = annee – agedico +1
      talk(« demain c ‘est lanniversaire de  » + prenom + str(age) + » ans »)

      if (dico.get(anniversaire) != None):
      agedico = int(dico.get(anniversaire)[-4:])
      prenom = (dico.get(anniversaire)[:-4])
      age = annee – agedico +1
      talk(« bon anniversaire  » + prenom + str(age) + » printemps ,tu les fais pas »)

      if ((dico.get(rappel) == None) and (dico.get(rappel2) == None) and (dico.get(anniversaire) == None)):
      talk(« c est lanniversaire de personne »)
      `

      plus le fichier AIML plus haut .

      POUR UTILISER :

      a) dire anniversaire
      ou en automatique
      b) inclure cette ligne dans le fichier AIML phrases_aleatoires.aiml

    • <srai>anniversaire</srai>
    • Nota : Toutes ces ajouts sont fait a partir du travail INMOOV-AI FRENCH de anthony
      http://inmoov.fr/forums/topic/inmoov-ai/

      • Cette réponse a été modifiée le il y a 9 années et 4 mois par lecagnois.
  • #4872
    anthony
    Modérateur

    Coucou ! Génial comme idée !

    J’ai intégré tout ça. Et apporté quelques modif dis moi ce que tu en pense
    ( je suis entrain de migrer le script vers la dernière version de MRL pour l’histoire de wikidata entre autre, je ferais un paquet complet bientôt . Les dernières version du script ne fonctionnent donc plus avec la version 1412)

    – J’ai utilisé un fichier externe csv plutôt qu’un fonction liste, cela évite de modifier le code et permet d’ajouter plusieurs personnes pour la même date. Et permettra à l’avenir d’importer des contact Google,Facebook etc…)
    – J’ai mis tout ce qui est texte dans l’aiml pour ceux qui veulent traduire dans d’autre langues

    Fichier csv ( dossier BDD ) :
    https://github.com/moz4r/aiml/blob/master/bots/BOTS-FRENCH/Inmoov_AI/BDD/birthday.csv

    Fonction anniversaire ( ligne 639 ) :
    https://github.com/moz4r/aiml/blob/master/bots/BOTS-FRENCH/Inmoov_AI/PYTHON/INMOOV-AI_startup.py

    Actions AIML ( ligne 70 ) :
    https://github.com/moz4r/aiml/blob/master/bots/BOTS-FRENCH/Inmoov_AI/AIML/situations1_datetime.aiml

    Concernant l’automatisation, il existe une fonction dans le sous script « vie aléatoire » c’est une sorte de cron qui tourne toutes les 10 minutes de mémoire. Mais possible de créer un autre timer si tu veux

    anthony

    • #4886
      lecagnois
      Participant

      Salut Anthony

      Ton code est beaucoup plus élégant .
      j aime bien quand tu met des commentaires , cela me permet de progresser …
      j avais pensés à une base de données en sql , la c ‘est beaucoup plus simple
      et je me demandai a quoi servait le fichier vide learnf.aiml.csv dans le répertoire de rachel

      je vais éplucher ton code surtout pour la compréhension de AIML car j ai pas tout compris

      Puis en bon franchouillard (lol) j avais pas pensé à l internalisation .

      DIS nous quand tu mettra en ligne la nouvelle version .

      Il faudrait trouver le temps de faire des tutos et de les mettre en ligne

  • Vous lisez 3 fils de discussion
    • Vous devez être connecté pour répondre à ce sujet.