Page 2 sur 2

Re: OpenWeatherMap API

Publié : jeu. 03/sept./2015 1:03
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

;==========================================

Re: OpenWeatherMap API

Publié : jeu. 03/sept./2015 3:52
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).

Re: OpenWeatherMap API

Publié : jeu. 03/sept./2015 9:20
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

Re: OpenWeatherMap API

Publié : jeu. 03/sept./2015 10:31
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"

Re: OpenWeatherMap API

Publié : jeu. 03/sept./2015 19:43
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).

Re: OpenWeatherMap API

Publié : jeu. 03/sept./2015 22:55
par MetalOS
Super vos codes merci du partage les gars.

Re: OpenWeatherMap API

Publié : ven. 04/sept./2015 13:13
par MetalOS
Moi je trouve au contraire que ça paraît logique que OpenFile() ouvre le fichier existent sans le recréer.

Re: OpenWeatherMap API

Publié : ven. 04/sept./2015 13:39
par MetalOS
Non il me semble que tu a raison je crois qu'avant c'était comme ça.

Re: OpenWeatherMap API

Publié : ven. 04/sept./2015 17:27
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)

Re: OpenWeatherMap API

Publié : ven. 04/sept./2015 17:32
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).

Re: OpenWeatherMap API

Publié : ven. 04/sept./2015 17:40
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.

Re: OpenWeatherMap API

Publié : ven. 04/sept./2015 18:14
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
;==========================================

Re: OpenWeatherMap API

Publié : ven. 04/sept./2015 18:16
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à ?

Re: OpenWeatherMap API

Publié : ven. 04/sept./2015 18:58
par Flype
Wouhou, vous avez poussé le délire bien loin :D
Il date de quand le dernier concours PurePuncher ?