Aller avant les vacances un petit tuto avec utilisation d’une API (Application Programming Interface)
L’API ne fonctionne que pour les villes française. elle donne la météo sur 7 jours
dans le TUTO nous allons extraire que la première journée .
Nous pourrions modifier le code pour choisir un jour de la semaine ,mais j’ai fais simple .
voici le code
def meteo(ville) :
try:
page=urllib2.urlopen('http://api.meteorologic.net/forecarss?p='+ville)
html = page.read()
# suppresion des balises
Chaine = html.replace("<strong>"," ").replace("</strong>"," ").replace("<br />"," ").replace("°C "," ")[925:2290].decode("utf-8")
chaine2 = Chaine.split(":")
if len(chaine2) > 1 :
talkBlocking("voici les previsions météo de "+ville)
talkBlocking ("le Matin : "+chaine2[1][:len(chaine2[1])-5])
talkBlocking ("a Midi : "+chaine2[2][:len(chaine2[2])-12])
talkBlocking ("Apres midi : "+chaine2[3][:len(chaine2[3])-5])
talkBlocking ("le Soir : "+chaine2[4][:len(chaine2[4])-20])
else :
talkBlocking("je ne connais que les Ville francaise")
except IOError:
talkBlocking("oups il y a une erreur")
except OSError:
talkBlocking("oups il y a une erreur")
except ValueError:
talkBlocking("oups il y a une erreur")
except:
print(sys.exc_info()[0])
raise
Voici un bon exercice pour jouer sur les chaines de caractères en python :
html = page.read()
Lecture de la page HTLM
Chaine = html.replace(““,” “).replace(““,” “).replace(“<br />”,” “).replace(“°C “,” “)[925:2290].decode(“utf-8”)
Mise en forme avec suppression de balises HTML
chaine2 = Chaine.split(“:”)
Ici nous mettons le résultat dans un tableau
talkBlocking (“le Matin : “+chaine2[1][:len(chaine2[1])-5])
Ensuite on extrait les données du tableau .
Pour appeler la fonction il faudra dire meteo à (votre ville) ou temps à (votre ville)
Voici le fichier AIML :
<category>
<pattern>météo à *</pattern>
<template>
<oob>
<mrl>
<service>python</service>
<method>exec</method>
<param>meteo("<star index="1"/>")</param>
</mrl>
</oob>
</template>
</category>
<category>
<pattern>temps à *</pattern>
<template>
<oob>
<mrl>
<service>python</service>
<method>exec</method>
<param>meteo("<star index="1"/>")</param>
</mrl>
</oob>
</template>
</category>
-
This topic was modified 7 years, 8 months ago by lecagnois.
Attachments:
You must be
logged in to view attached files.