OpenWeatherMap API

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Re: OpenWeatherMap API

Message par Flype »

Nouvelle fonction : OWM_GetGroupByCityID().

Cà permet d'obtenir la météo de plusieurs villes en une seule requête.

Code : Tout sélectionner

;==========================================
;== OpenWeatherMap Test 3
;==========================================

InitNetwork()

IncludeFile "OpenWeatherMap.pbi"

UseModule OpenWeatherMap

;OWM_SetDefaultAPIKey("api_key")
OWM_SetDefaultLang(#OWM_LANG_French)
OWM_SetDefaultUnits(#OWM_UNIT_Metric)

Define x.OWM_Group

If OWM_GetGroupByCityID(x, "524901,703448,2643743")
  Debug "count: " + x\cnt
  ForEach x\items()
    Debug "============"
    Debug "name: "     + x\items()\name
    Debug "country: "  + x\items()\sys\country
    Debug "temp: "     + x\items()\main\temp + "°C"
    Debug "pressure: " + x\items()\main\pressure + " hPA"
    Debug "humidity: " + x\items()\main\humidity + "%"
    Debug "wind: "     + x\items()\wind\speed + "m/s"
    ForEach x\items()\weather()
      Debug "weather: " + x\items()\weather()\description
    Next
  Next
Else
  Debug "code: "    + x\error\cod
  Debug "message: " + x\error\message
EndIf

;==========================================
Image
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: OpenWeatherMap API

Message par Ollivier »

Flype a écrit :Ah tiens, je connais quelqu'un aussi comme çà, qui est allergique ou plutôt hyper-sensible aux ondes électromagnétiques... J'imagine que
c'est pas cool.
Je suis un petit peu sensible mais c'est sans plus.

Il suffit de prendre une vieille voiture avec un vieil auto-radio: tu entends alors résonner les GPS, mobiles et autres transmetteurs. C'est étrange, on dirait des mitrailleuses. J'étais sur une Nationale, j'avais l'impression d'écouter un champ de bataille pendant 3 heures de trajet! (1 moyenne de 2 à 3 rafales de paquets par seconde).
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: OpenWeatherMap API

Message par Kwai chang caine »

Flype a écrit :Merci pour ton chouette message Kwai,
Et encore j'ai essayé d'être soft :mrgreen:

La vie est courte, et je suis de ceux qui n'ont pas compris trop tard (et encore quelques fantomes hantent quotidiennement mon esprit :oops:) qu'il était important de dire aux personnes qu'on aime, quelle importance elles ont dans notre vie.
Et comme nous sommes dans une époque de m...ou chacun ne pense qu'a sa gueule (moi le premier), j'ai à coeur d'aller à contre courant comme dans tout ce que j'ai fait dans ma vie, en n'hésitant pas à exposer mes sentiments (bons ou mauvaix) aux quatre vents.
Certains appellent ça du cirage de pompe, moi de l'admiration.

C'est en partie grace à toi, que mes yeux de "baibise" de l'époque se sont éclairés.
FLYPE celui que rien n'arrettait, qui avait une solution à tout, qui faisait valser les API et les hieroglyphes, tel un maitre shaolin ses adversaires.

Tu a été mon gourou, mon premier MAITRE (pas de chance pour toi :mrgreen:) et ton savoir n'a eu d'équivalence que ta patience envers l'embryon de larve que j'étais.
C'est grâce à des gens comme toi, FRED, et bien d'autres du forum qui allient l'humilité au savoir, que naissent des passions pour certains qui n'auraient jamais osé bravé la complexité de la programmation.
En donnant de votre vaste connaissance, de votre temps, de votre patience à des gueux comme moi, vous contribuez à donner l'accés à ce monde tout autant merveilleux que complexe et fermé, qu'est la programmation.

Quand tu es parti, j'ai perdu un bras :cry: je ne dit pas que j'ai perdu le cerveau car encore eusse t'il fallu que j'en possede un :D
Tu m'as manqué quotidiennement, et encore maintenant, KCC a donc fait son baluchon pris une barque, ramé tel christophe vers les terres ou les français ne parlent plus français, pour y retrouver des MAITRES pouvant combler son manque.
"Grace" à toi, beaucoups d'eux ont souffert, pour ne citer qu'eux, principalement SROD et SPARKIE :cry:

Alors voila, je voulais par ces quelques mots, essayer de te rendre un peu de gentillesse que tu m'avais consacré à mes débuts. 8)
Tu sais, je suis un éleve fidéle, KCC un jour....KCC toujours
Je suis heureux de voir que malgré ton voyage dans divers langages, tu aimes toujours autant notre PB
Cela nous laisse peut être l'espoir de te relire de temps en temps :wink:

Tu as quitté ton serviteur, mais tu as laissé ton chat.... :?
Comme KCC est fidéle en amour ça fait X années que je le garde..mais va peut être falloir penser à assumer, et me payer une pension, parce que qu'est ce qu'il bouffe comme paté, puisque ce gland il est pas foutu d'attraper un piouf :mrgreen:

Image

Je te souhaite toute les chances du monde dans tes nouvelles aventures, bien que pour ce qui soit de la chance, je n'en suis pas le représentant attitré :|

Ton admirateur et serviteur pour la vie 8)
Kcc
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
Ar-S
Messages : 9478
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: OpenWeatherMap API

Message par Ar-S »

Si vous souhaitez récupérer le fichier ci après : http://bulk.openweathermap.org/sample/city.list.json
j'ai fait une petite procédure pour extraire les ID et Noms des villes françaises, la recherche par nom m'ayant causé des soucis, En Liant les Noms aux ID on peut accéder aux infos .

Le programme lit le fichier JSON et crée un fichier FT.TXT sous la forme NOMVILLE;ID
J'ai aussi mis le tout dans une liste (pour faire une interface avec recherche..)

L'URL de l'ID diffère de la recherche par ville comme ceci

Au lieu de
api.openweathermap.org/data/2.5/weather?q=ville;pays
on change la fin :
api.openweathermap.org/data/2.5/weather?id=iddelaville

Code : Tout sélectionner

; Filtrage Json => ID FR by Ar-S
; fichier à récupérer : [url]http://bulk.openweathermap.org/sample/city.list.json[/url]
; PB : 5.31

Global NewList FR.s()

Resultat = ReadFile(0, "city.list.json") 
Res2 = CreateFile(1,"fr.txt")
While Eof(0) = 0 
  T$ = ReadString(0)
  If FindString(T$,":"+Chr(34)+"FR"+Chr(34),START)
    
    ID.s = Mid(t$,8,7)
    Dep = FindString(t$,Chr(34),24)
    Name.s = Mid(T$,24, Dep - 24)
    
    Debug Name.s + " " + ID.s
    
    AddElement(FR())
    FR() = Name.s+";"+ID.s
    
    N+1
    WriteStringN(1, FR())
    
  EndIf
  
Wend
CloseFile(0) 
CloseFile(1)
Debug Str(N) + " villes"
~~~~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
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Re: OpenWeatherMap API

Message par Flype »

@kwai, t'inquiètes je savais déjà tout çà ;)
et merci bcp pour mon petit chat, je l'avais perdu :o il me rappelle trop Simon Cat :
http://simonscat.com/blog/kitten-collection/


A part çà,
La fonction Http::GetData() a besoin d'être améliorée parce qu'elle est trop limite (un seul Receive) avec les fonctions qui renvoient plusieurs objet météo (OWM_GetGroupByCityID(), et d'autres que je prépare).
Image
Avatar de l’utilisateur
MetalOS
Messages : 1492
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: OpenWeatherMap API

Message par MetalOS »

Super vos codes merci du partage les gars.
Avatar de l’utilisateur
MetalOS
Messages : 1492
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: OpenWeatherMap API

Message par MetalOS »

Moi je trouve au contraire que ça paraît logique que OpenFile() ouvre le fichier existent sans le recréer.
Avatar de l’utilisateur
MetalOS
Messages : 1492
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: OpenWeatherMap API

Message par MetalOS »

Non il me semble que tu a raison je crois qu'avant c'était comme ça.
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Re: OpenWeatherMap API

Message par Flype »

Yo,

Mise à jour du module - v1.3

1er Post pour la MAJ
http://www.purebasic.fr/french/viewtopi ... 23#p175123

3ème Post pour voir un exemple
http://www.purebasic.fr/french/viewtopi ... 25#p175125

Modifications :

- Http::GetData() amélioré (Boucle de ReceiveNetworkData beaucoup plus efficace)
- Ajout de OWM_GetCitiesInIDs(*object.OWM_Group, cityIDs.s)
- Ajout de OWM_GetCitiesInCircle(*object.OWM_Group, lat.d, lon.d, count.i = 10)
- Ajout de OWM_GetCitiesInRect(*object.OWM_Group, lat1.d, lon1.d, lat2.d, lon2.d, mapZoom.d)
Image
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Re: OpenWeatherMap API

Message par Flype »

Salut Spoke, çà l'air bien mais c'est con je ne peux pas tester ton programme, je suis sous Linux (il faudrait modifier un peu le code).
Image
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Re: OpenWeatherMap API

Message par Flype »

ok je regarde çà.

EDIT: bon çà marchotte. On ne peut pas changer de ville.
Cà doit venir de mon Linux qui interdit les Goto :mrgreen: je vais voir ce qui va pas là dedans.
Image
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Re: OpenWeatherMap API

Message par Flype »

Le double clic avec le Goto faisait planté purebasic (carrément crash avec report ubuntu)

Maintenant c'est ok :)
Le petit délai suite au clic me fait penser qu'un petit thread bien placé pour ne pas bloquer la fenêtre pendant le chargement çà serait pas mal.
Je vais faire un truc :twisted:

Et sinon pour les Linuxiens, si tu pouvais modifier ton code comme çà ce serait cool (CompilerIf) :

Code : Tout sélectionner

;==========================================
CompilerIf #PB_Compiler_OS = #PB_OS_Windows
  Procedure RemoveFromTaskbar(hwnd)
    If IsWindow_(hwnd)
      a=hwnd : b=GetWindowLong_(a,#GWL_HWNDPARENT) : If b<>0 : a=b : EndIf ; Needed for "TaskAssign.exe".
      ShowWindow_(a,#SW_HIDE) : GetWindowRect_(a,win.RECT) : w=win\right-win\left : h=win\bottom-win\top
      SetWindowLong_(a,#GWL_EXSTYLE,#WS_EX_TOOLWINDOW) :  SetWindowPos_(a,0,0,0,w-1,h-1,#SWP_NOMOVE)
      SetWindowPos_(a,0,0,0,w,h,#SWP_NOMOVE|#SWP_SHOWWINDOW) : ProcedureReturn 1
    EndIf
  EndProcedure
CompilerElse
  Procedure RemoveFromTaskbar(hwnd)
  EndProcedure
CompilerEndIf
;==========================================
Image
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Re: OpenWeatherMap API

Message par Flype »

Impressionnant comment tu compactes tout à mort, çà sent le coder PurePunch à donf :D
D'ailleurs en prenant juste l'essentiel du module et une petite interface çà ferait peut-être un bon punch :?:
Combien de caractères déjà ?
Image
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Re: OpenWeatherMap API

Message par Flype »

Wouhou, vous avez poussé le délire bien loin :D
Il date de quand le dernier concours PurePuncher ?
Image
Répondre