Viewing 3 reply threads
  • Author
    Posts
    • #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 .

      • This topic was modified 8 years, 3 months ago by lecagnois.
      • This topic was modified 8 years, 3 months ago by 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/

      • This reply was modified 8 years, 3 months ago by lecagnois.
  • #4872
    anthony
    Moderator

    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

  • Viewing 3 reply threads
    • You must be logged in to reply to this topic.