Page 1 sur 1
[R] Météo... API ou Site web ?
Posté : jeu. 27 mars 2014 08:24
par Ks10
Bonjour à tous !
Je bosse actuellement sur un petit projet personnel et mon objectif est de pouvoir récupérer des informations sur la météo.
Ce que j'aimerais :
- L'utilisateur entre son pays dans un input.
- Par rapport à ce pays, il obtient des informations sur la météo.
Exemple : Si il va faire beau (mauvais ou pluvieux), température, vitesse du vent, bref quelques informations sympathiques.
Ce que j'aimerais savoir c'est :
- Quels sont les moyens d'avoir ces informations ? En passant par un site web ? Si oui lequel ? Ou en passant par une API exploitable par Autoit ?
Merci d'avance.
Re: [..] Météo... API ou Site web ?
Posté : jeu. 27 mars 2014 18:15
par walkson
Bonjour,
Comme je me suis fait aussi un petit programme météo, voici quelques adresses:
http://www.my-meteo.fr/meteo+webmaster/ ... ce+24h.php (ou 48h.php)
http://www.meteoalarm.eu/
http://www.meteociel.com/
http://www.meteolafleche.com/
http://www.meteolafleche.com/meteofrancejour2.jpg
http://www.wofrance.fr/meteo/marine?01& ... fr&LANG=fr
http://maps.wunderground.com/maps/eu/WindSpeed.html
etc...
sur le principe: $hDownload = InetGet("
http://www.meteociel.com/prevision/prev" & $y & ".png", @ScriptDir & "\image.png")
CAD que je récupère l'adresse de l'image que je complète selon le site (date, heure, tranche d'heures etc..)
ex:
http://www.meteolafleche.com/meteofrancejour1.jpg
http://www.meteolafleche.com/meteofrancejour2.jpg
Le gros problème est de trouver des sites qui ne changent pas leur configuration
En espérant t'avoir un peu aidé
Re: [..] Météo... API ou Site web ?
Posté : jeu. 27 mars 2014 19:01
par mikell
Si tu veux te frotter à une API, tu peux utiliser celle-ci
http://www.previmeteo.com/services-pro/ ... google.php
en t'inspirant éventuellement du code de guinness ici
http://www.autoitscript.com/forum/topic ... in-region/
Sinon pour la France j'utilise ça (mais je suis feignant...)
► Afficher le texte
Code : Tout sélectionner
Opt("WinTitleMatchMode", -2)
Global Const $WS_EX_TRANSPARENT = 0x00000020
Global Const $WS_POPUPWINDOW = 0x80880000
$oIE=ObjCreate("Shell.Explorer.2")
$_x = 300
$_y = 30
$_w = 675;465
$_h = 685+50
$gui = GUICreate ("", $_w, $_h,$_x, $_y, $WS_POPUPWINDOW)
$GUIActiveX = GUICtrlCreateObj($oIE, -75, -230, $_w+480, $_h+400)
GUISetState(@SW_SHOW)
$oIE.Navigate( "http://france.meteofrance.com/france/meteo?PREVISIONS_PORTLET.path=previsions")
HotKeySet("{SPACE}", "Terminate")
HotKeySet("{ESC}", "Terminate")
While 1
If WinExists("ads") Then WinClose("ads")
_Drag ($gui,$_w,$_h,$_x,$_y)
Wend
Func Terminate()
$oIE=0
GUIDelete ()
FileDelete(@UserProfileDir & "\Local Settings\Temporary Internet Files\*.*")
Exit
EndFunc
Func _IsPressed($hexKey)
Local $aR, $bRv
$hexKey = '0x' & $hexKey
$aR = DllCall("user32", "int", "GetAsyncKeyState", "int", $hexKey)
If $aR[0] <> 0 Then
$bRv = 1
Else
$bRv = 0
EndIf
Return $bRv
EndFunc
Func _Drag ($gui,$reg_x,$reg_y,ByRef $x,ByRef $y)
Local $pos[2],$xm,$ym,$dx,$dy
$pos = MouseGetPos()
$xm=$pos[0]
$ym=$pos[1]
If ($xm<$x) or ($xm>($x+$reg_x)) then Return
If ($ym<$y) or ($ym>($y+$reg_y)) then Return
$dx=$xm-$x
$dy=$ym-$y
while _IsPressed(01) = 1
$pos = MouseGetPos()
$xm=$pos[0]
$ym=$pos[1]
$x = $xm - $dx
$y = $ym - $dy
WinMove ( $gui, "", $x, $y )
wend
Return
EndFunc
Re: [..] Météo... API ou Site web ?
Posté : ven. 28 mars 2014 14:16
par aulus
Bonjour Mikell,
La ligne $GUIActiveX = GUICtrlCreateObj($oIE, -75, -230, $_w+480, $_h+400, $WS_EX_TRANSPARENT) affiche une erreur. En ôtant $WS_EX_TRANSPARENT tout marche bien.
Re: [..] Météo... API ou Site web ?
Posté : ven. 28 mars 2014 18:07
par Sea
Retire Global Const $WS_EX_TRANSPARENT = 0x00000020 tu dois sans doute avoir des includes qui inclue déjà cette valeur et on ne redéfini JAMAIS une constante

Re: [..] Météo... API ou Site web ?
Posté : ven. 28 mars 2014 18:56
par aulus
Non, je dois le retirer dans $GUIActiveX = GUICtrlCreateObj($oIE, -75, -230, $_w+480, $_h+400, $WS_EX_TRANSPARENT)
Re: [..] Météo... API ou Site web ?
Posté : ven. 28 mars 2014 21:09
par mikell
aulus, tu as raison et j'édite mon post derechef
error: GUICtrlCreateObj() [built-in] called with wrong number of args
Ce qui m'intriguait c'est que Scite ne m'affichait pas d'erreur, la seule explication (peut-être) est que : au départ c'est un exe antique que je fis jadis avec une vieille version d'autoit, code récupéré (suite à formatage) par décompilation (autorisée)
Sur ce au3 de récup Scite me dit :
Au3check doesn't support input files encoded as UTF16 with BOM
Sur une copie du code dans un au3 "actuel" là j'ai bien l'erreur
Re: [..] Météo... API ou Site web ?
Posté : dim. 30 mars 2014 23:08
par Rancar
Bonsoir,
Je cherchais à faire la même chose que vous il y a quelques jours et je me suis débrouillé pour faire ceci. Ce script n'affiche que la température mais on peut y ajouter d'autres valeurs
► Afficher le texte
Code : Tout sélectionner
#include <String.au3>
#include <Array.au3>
#include <File.au3>
$ville = InputBox("Ville","Ville ?")
$meteoget = InetGet("http://api.openweathermap.org/data/2.5/weather?q="&$ville&"&mode=xml&lang=fr","meteo.txt",1)
InetClose($meteoget)
Local $ReadText
_FileReadToArray("meteo.txt",$ReadText)
For $x = 1 To $ReadText[0]
If StringInStr($ReadText[$x],"temperature",0,1) Then
$line2 = FileReadLine("meteo.txt",$x)
$line = StringTrimLeft($line2,22)
MsgBox(0,"",Round(StringLeft($line,5)-272.15))
EndIf
Next
Re: [..] Météo... API ou Site web ?
Posté : dim. 30 mars 2014 23:16
par jguinch
@rancar : sympa ce site...
Comme je n'y connais rien en XML, j'ai essayé de regarder si on pouvait "simplifier" :
► Afficher le texte
Code : Tout sélectionner
$filename = @ScriptDir & "\meteo.xml"
$meteoget = InetGet("http://api.openweathermap.org/data/2.5/weather?q=Paris&mode=xml&units=metric&lang=fr",$filename,1)
$oXML = ObjCreate("Msxml2.DOMdocument.3.0")
If @error Then Exit MsgBox(16, "Erreur", "Impossible de créer l'objet Msxml2.DOMdocument.3.0")
$oXML.async = False
$error = $oXML.Load ($filename)
If Not $error Then
MsgBox(0, "Load XML", "An error occurred loading " & $filename, 10)
Exit 1
EndIf
$objNodeList = $oXML.getElementsByTagName("temperature");
If IsObj($objNodeList) Then
$TMin = $objNodeList.item(0).getAttribute("min")
$TMax = $objNodeList.item(0).getAttribute("max")
$Tunit = $objNodeList.item(0).getAttribute("unit")
ConsoleWrite("Temperature minimale : " & $TMin & " " & $Tunit & " / Temperature maximale : " & $TMax & " " & $Tunit)
EndIf
C'est un début.
Re: [..] Météo... API ou Site web ?
Posté : mar. 01 avr. 2014 20:13
par Ks10
Merci pour vos exemples je vais jetter un oeil.