Api Google Weather

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
MetalOS
Messages : 1510
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Api Google Weather

Message par MetalOS »

Salut les amis,

Pour une application que je doit faire, j'avais besoin de récupérer les conditions météo actuel d'un lieu précis. J'ai donc utilisé l'api xml que fournis gratuitement google. Voici comment récupérer les conditions actuel. Cette source n'est pas de moi, je l'ai trouvé sur le forum allemand de PB. Je n'est plus le nom de l'auteur, j'ai juste traduit certaine partie pour mieux ce repérer.

Code : Tout sélectionner

;###############################################################################
;##### 
;##### Api Google Weather (xml)
;##### Traduction MetalOS
;##### 
;##### Auteur: Forum Allemand
;###############################################################################

UsePNGImageDecoder()

Structure weather_data
  Celsius.i
  Fahrenheit.i
  Date.s
  Condition_Text.s
  Humidite.i
  Wind_Text.s
  Image.i
EndStructure
Procedure.i iGoogle_Weather(Location.s, Path.s, Map Weather_Data.weather_data(), Language.s = "fr")
  
  Url.s = "http://www.google.com/ig/api?weather=" + Location + "&hl=" + Language

  ClearMap(Weather_Data())

  If ReceiveHTTPFile(Url,Path + "wet.txt")
    Nr = ReadFile(#PB_Any,Path + "wet.txt")
    If Nr
      res.s = ReadString(Nr)
      CloseFile(Nr)
    EndIf
  EndIf
  DeleteFile(Path + "wet.txt")

  If res <> ""
    
    With Weather_Data(Location)
      
      Anz = CountString(res,">")
      Dim XML.s(Anz)
      
      For i=1 To Anz
        XML(i) = StringField(res,i,">")+">"
      Next i    
      
      For i=1 To Anz
        
        String.s = XML(i)
        
        If d=0
          If FindString(String,LCase("current_date_time data"),1)
            TempString.s = StringField(String,2,Chr(34))
            Datum = ParseDate("%yyyy-%mm-%dd %hh:%ii:%ss", TempString)
            d = 1
            \Date = FormatDate("%dd.%mm.%yyyy - %hh:%ii:%ss",Date)
          EndIf
        EndIf  
        If c=0
          If FindString(String,LCase("condition data"),1)
            \Condition_Text = StringField(String,2,Chr(34))
            c = 1
          EndIf
        EndIf      
        If a=0
          If FindString(String,LCase("temp_c data"),1)
            \Celsius = Val(StringField(String,2,Chr(34)))
            a = 1
          EndIf
        EndIf
        If b=0
          If FindString(String,LCase("temp_f data"),1)
            \Fahrenheit = Val(StringField(String,2,Chr(34)))
            b = 1
          EndIf          
        EndIf 
        If h=0
          If FindString(String,LCase("humidity data"),1)
            \Humidite = Val(RemoveString(StringField(String,2,":"),"%"))
            h=1
          EndIf
        EndIf  
        If Not IsImage(Image)
          If FindString(String,LCase("icon data"),1)
            ImageUrl.s = "http://img0.gmodules.com"+StringField(XML(i),2,Chr(34))
            ImageUrl = Left(ImageUrl,Len(ImageUrl)-3) + "png"
            If ReceiveHTTPFile(ImageUrl,Path + "weather.png")
              \Image = LoadImage(#PB_Any,Path + "weather.png")
              Image = \Image
              If IsImage(Image)
                DeleteFile(Path + "weather.png")
              EndIf
            EndIf             
          EndIf
        EndIf  
        If w=0
          If FindString(String,LCase("wind_condition data"),1)
            w=1
            \Wind_Text = Trim(RemoveString(StringField(String,2,":"),Chr(34)+"/>"))
          EndIf
        EndIf                 
        
      Next i  

    EndWith
    ProcedureReturn #True
  Else
    ProcedureReturn #False
  EndIf
  
EndProcedure

;##### Beispiel

InitNetwork()

  NewMap Weather.weather_data()
  
  Image = CreateImage(#PB_Any,40,40)
  
  Location.s = "paris"
  
  If iGoogle_Weather(Location, GetTemporaryDirectory(), Weather())
    
    OpenWindow(0,0,0,300,100,"Météo : "+Location,#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
    
    If IsImage(Weather(Location)\Image)
      ImageGadget(0,10,10,40,40,ImageID(Weather(Location)\Image))
    EndIf
    TextGadget(1,55,10,250,15,Weather(Location)\Condition_Text)    
    TextGadget(2,55,25,250,15,Str(Weather(Location)\Celsius) + " Degrés Celsius à "+Str(Weather(Location)\Humidite)+"% Humidité")
    TextGadget(3,55,40,250,15,"Vent de "+Weather(Location)\Wind_Text)
    Repeat
      Event = WaitWindowEvent()
      
      If Event = #PB_Event_CloseWindow
        Quit = 1
      EndIf
      
      
    Until Quit = 1
    
  EndIf
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: Api Google Weather

Message par GallyHC »

Bonjour Ar-s,

Perso avec une petite routine perso j'ai fait une petite routine qui donne cela :)

Image

Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Api Google Weather

Message par Ar-S »

Bonjour GallyHC :mrgreen:
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Api Google Weather

Message par Ar-S »

Petit correctif pour le code de Metalos

remplacer

Code : Tout sélectionner

TextGadget(1,55,10,250,15,Weather(Location)\Condition_Text)     
par

Code : Tout sélectionner

  text1.s = Weather(Location)\Condition_Text
  text1 = ReplaceString(text1,"#39;","'")
  TextGadget(1,55,10,250,15,text1)    
Sinon #39; apparait au lieu des apostrophes.

P.S : jolie interface GallyHC
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Api Google Weather

Message par SPH »

GallyHC a écrit :Bonjour Ar-s,

Perso avec une petite routine perso j'ai fait une petite routine qui donne cela :)

Image

Cordialement,
GallyHC
Tres beau :idea:

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: Api Google Weather

Message par GallyHC »

Bonjour,

Si sa interresse quelqu'un je peu, peu etre voir a metttre le source?

Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Mesa
Messages : 1126
Inscription : mer. 14/sept./2011 16:59

Re: Api Google Weather

Message par Mesa »

Moi je veux bien les sources stp.

merci.

Mesa.
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: Api Google Weather

Message par GallyHC »

bonjour,

donc je vous donne le lien de ce source comme il y a des images ect... c'est plus simple de faire un zip. l'url est http://www.koakdesign.info/news/?url=4d&val=40. En esperent quil soit utile pour quelque personne :)

Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Api Google Weather

Message par Kwai chang caine »

Merci beaucoup à vous deux pour le partage 8)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Api Google Weather

Message par SPH »

GallyHC a écrit :bonjour,

donc je vous donne le lien de ce source comme il y a des images ect... c'est plus simple de faire un zip. l'url est http://www.koakdesign.info/news/?url=4d&val=40. En esperent quil soit utile pour quelque personne :)

Cordialement,
GallyHC
Avant que je ne matte le code, j'ai une question : tu interroges quoi sur le net pour afficher la meteo ?

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Api Google Weather

Message par Ar-S »

Merci pour le zip :)
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
MetalOS
Messages : 1510
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: Api Google Weather

Message par MetalOS »

Ca SPH

http://www.google.com/ig/api?weather="paris,france"

On remplace la ville et le pays de sont choix.
Avatar de l’utilisateur
MetalOS
Messages : 1510
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: Api Google Weather

Message par MetalOS »

Le code n'est plus valable car Google semble avoir supprimé definitivement son API Météo. :( Dommage...
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Api Google Weather

Message par Ar-S »

Je pense qu'il était lié à igoogle qui va finir par être supprimé.
A mon avis tout ça est la faute des xxxStore qu'ils veulent imposer.

Mais il existe tellement de site présentant les prévisions qu'un webgadget suffit.

Site qui génère une prévision selon la ville:

Code : Tout sélectionner

http://www.meteorologic.net/webmaster.php
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
MetalOS
Messages : 1510
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: Api Google Weather

Message par MetalOS »

Yahoo fournit un api assez sympas.
Répondre