begin process at 2012 02 09 10:50:49
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > METEOQUEW[PHP] : RÉCUPÈRE LES INFOS DE METEOFRANCE

METEOQUEW[PHP] : RÉCUPÈRE LES INFOS DE METEOFRANCE


 Information sur la source

Note :
Aucune note
Catégorie :Divers Classé sous :meteo Niveau :Initié Date de création :17/05/2006 Date de mise à jour :20/05/2006 12:45:24 Vu / téléchargé :8 355 / 932

Auteur : BaroqueW

Ecrire un message privé
Site perso
Commentaire sur cette source (20)
Ajouter un commentaire et/ou une note

 Description

Voilà l’adaptation du script MeteoqueW originellement codé en TCL pour utilisation en script IRC pour bot Eggdrop. Il fonctionne sur le même principe, hormis le fait qu’il n’y a plus de réactions spécifiques sur certaines chaines (dtc mode), il n’y a plus de fonctions d’affichage pour le debug et il y a moins de paramètrages.

Il y a deux fichiers : affichemeteo.php qui fournit une "interface" au script MeteoqueW.php.

En substance, vous entrez une ville ou un code postal et MeteoqueW.php vous fournit un tableau de résultats exploitables pour cette ville. affichemeteo.php donne un exemple de présentation de ces résultats.


 Conclusion

D'autres scripts sur http://www.baroquew.com/spip/

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

17 mai 2006 22:21:51 :
Problème signalé au niveau de l'archive.
19 mai 2006 23:43:48 :
Corrections faites sur les conseils de MickBad : \n\n et \r\n enlevés (pourtant etheral m'affiche des \r\n quand je regarde les messages réellement émis par un navigateur qui ferait les mêmes requêtes), variables en global J'ai revu l'indentation et j'ai un peu plus commenté.
20 mai 2006 00:45:07 :
Les villes comprenant des apostrophes ou des espaces dans leur nom sont prises en compte désormais.
20 mai 2006 12:45:24 :
Correction liée aux accents et à d'autres caractères indésirables.

 Sources du même auteur

Source avec Zip AUTODROPSQL : POUR SUPPRIMER TOUTES LES TABLES MYSQL COMMENÇ...

 Sources de la même categorie

Source avec Zip COMPTEUR DE CLIQUE PHP AVEC JQUERY par devgoneti
Source avec Zip LIVRE D'OR SIMPLE (POUR DÉBUTANT) par devgoneti
Source avec Zip SCRIPT TRAVAUX POUR VOTRE SITE par FleuryK
Source avec Zip Source avec une capture EL COYOTOS LIVRE D'OR PHP 5 par elcoyotos
COMPTEUR DE VISITE - FICHIER TXT - CODE MINIMAL par SuperChouquette

Commentaires et avis

Commentaire de mickbad le 17/05/2006 22:17:21

mouais mouais mouais ... les fichiers semblent corrompues !
tu travailles sous MAC ? (pa'que ya un sous dossier __MACOSX)

Merci
.Mick.

Commentaire de BaroqueW le 17/05/2006 22:20:09

En effet, je vois bien un __MACOSX, désolé, c'est pas propre. Je vais l'enlever. Cela dit, les fichiers qui sont à la racine de l'archive sont valides chez moi : je viens de la retélécharger.

Merci

Baro

Commentaire de stepibou le 18/05/2006 02:36:30

ici les boucles seraient apreciables.

a+

Commentaire de neolien le 19/05/2006 14:48:56

J'ai le message d'erreur suivant :
Warning: implode(): Bad arguments. in /home/httpd/vhosts/voyage-location.com/httpdocs/MeteoqueW.php on line 163
Ville non trouvée

As-tu la solution ?

Commentaire de BaroqueW le 19/05/2006 14:56:10

Pour l'instant non. Ca dépend des versions de php des serveurs apparemment. Sur mon mac en PHP 4.3.9, ça passe et sur un serveur linux en PHP 4.4.0, ça ne passe plus.

Commentaire de BaroqueW le 19/05/2006 15:26:34

Après une petite investigation, l'erreur sur implode remonte à très loin. En fait, sur mon serveur en linux, il ouvre le socket sans problème mais il n'arrive rien à y lire. Donc les résultats sont vides et implode ne peut pas marcher.
Je ne sais pas encore si c'est un problème de droits ou bien de compatibilité...

Commentaire de neolien le 19/05/2006 15:45:08

Merci pour ta réponse rapide !

Dans le doute j'ai mis des CHMOD 777 sur les deux fichiers, je pencherais donc plus pour une configuration Apache de mon Hébergeur et notamment du "fsockopen" qui semble être verrouillé !

Merci quand même et dommage que je ne puisse pas l'installer sur mon dernier site de voyage : http://www.voyage-location.com

@++

Commentaire de stepibou le 19/05/2006 16:19:37

paye ta pub

Commentaire de mickbad le 19/05/2006 16:20:42

Salut,

Je reviens donc pour donner mon avis sur le problème rencontré avec le implode().

Je ne sais pas si, NEOLIEN, il s'agit du même problème mais je ne crois que faire un chmod 777 arrangerait les choses :)

En fait j'ai repéré 2 erreurs (ou 4 si on veux) et je serais tenté de dire : "ben voilà ce qui arrive qd on programme un truc n'importe comment" ! [dis avec le sourire naturellement sans volonté de blesser ;)]

Pourquoi je dis ça ?
- pas beaucoup de commentaires (debug pas facile à faire) à l'intérieur des fonctions
- des morceaux de codes (fonctions) sur une ligne : mouais
- des indentations dans tous les sens (du moins pour mon éditeur PSPad)
- des variables non déclarées mais utilisées (pas de pbm ok mais ce n'est pas propre et ça génère des NOTICEs sur certains serveurs)

M'enfin, tu as compris BaroqueW je ne trouve ça pas très joli à regarder et qd tu veux débusquer un bug ce n'est pas si facile que ça (surtout sans connaitre ni le code ni la pensée de l'auteur :))

Personnellement (je dis bien *personnellement*), je programme toujours en me disant que quelqu'un d'autre va lire le code pour me forcer à bien présenter les choses.
Mettre tout sur une ligne par exemple n'est pas top parfois et l'idée de "gagner de la place" n'est pas bonne.

Et puis, soyons NOUS aussi des artistes ! :)

BaroqueW, ne t'offusque absolument pas car je dis simplement mon avis dans le simple but de t'aider. Je n'ai pas la science infuse mais je pense que quelque part je n'ai pas tort :))


Au niveau des erreurs que j'ai trouvé :
- (pour moi du moins), les fonctions parsehost et parsepage n'ont pas forcément accès aux variables mis en tant que global. J'ai mis:
global $meteohost, $meteoIP;

- Dans ces mêmes fonctions, après la connexion et le test  de la validité du descripteur de fichier $fp, tu envoies la requête : fputs($fp,"GET ".$url2." HTTP/1.1\n\n");
Tu ne remarques pas ? 2 fois \n\n
C'est tellement bête et invisible que c'est évident :)

=> Tu indiques au serveur que tu as fini l'en-tête par une ligne vide. Seulement, tu envoies encore des données d'où le BAD REQUEST qui en ressort.
(pour le voir fait un echo $line après la réception de la réponse du serveur)

Sinon pas la peine de faire un \r\n, un \n suffit amplement car ce n'est pas du texte à lire directement avec un éditeur normal. Euh moi pas trop clair mais faire des efforts à l'avenir :))))


j'espère avoir aidé
Noelien, dit nous si c'est ça ton erreur :)

bye
.Mick.

Commentaire de BaroqueW le 19/05/2006 20:35:47

Hum, d'accord pour les erreurs que tu as vues (merci au passage pour la relecture laborieuse du code !) mais j'ai fait des essais sur mon serveur et un autre serveur de type personnel et ça marche, j'ai fait des essais sur deux hébergeurs pros et ça ne marche pas... il n'y aurait pas plutôt un blocage de certaines fonctions à ce niveau-là ?
Enfin, je vais essayer tes modifications mais je dois avouer que les fsockopen, j'ai repris des morceaux de code qui marchaient jusque là, d'où l'absence de commentaire sur ces parties (ce qui n'excuse pas l'absence de commentaire sur les autres parties, je sais ^^).
Et je le prends pas mal pour l'indentation, j'étais déjà au courant mais c'est dur de m'en débarrasser ^^

Commentaire de BaroqueW le 19/05/2006 23:45:18

Un grand merci à MickBad pour avoir trouvé que l'erreur venait des \r\n et \n\n. Maintenant j'ai deux questions pour lui : pourquoi certaines versions de php font que ça répond bien et d'autres non ? et pourquoi ethereal me dit que mon navigateur émet bien des requêtes finissant par \r\n (au même endroit) ?
Mais sinon merci bien, j'ai même fait des efforts sur l'indentation et les commentaires :)

Commentaire de neolien le 20/05/2006 08:29:33

Salut à tous !
Well BAROQUEW tes modifications inspirées de NICKBAD ont eu raison des erreurs
implode(): Bad arguments, donc cela fonctionne avec un petit bémol sur le temps de demain à 14h ou il s'arrête en disant le temps sera (mais plus de commentaires).

Sinon bel effort communautaire pour résoudre des petites erreurs de programmation, cela fais plaisir le partage..

@++ et bonne journée sur CS

Commentaire de BaroqueW le 20/05/2006 12:46:17

En effet, il y avait des caractères étranges qui se glissaient dans certaines prévisions et elles n'étaient pas vues par mon script, tout doit être rentré dans l'ordre là. En tout cas, chez moi ça marche sur un grand nombre de villes.

Commentaire de mickbad le 20/05/2006 17:47:33

Salut,

Effectivement il y a encore une erreur sur l'affichage.

> "sur le temps de demain à 14h ou il s'arrête en disant
> le temps sera (mais plus de commentaires)"

En fait, le programme repère certaines parties de code HTML de meteofrance (showAlt('gnagna',false)) et les extrait dans un tableau => fonction parsemeteo et bloc "//previsions"

Entre parenthèses, la boucle "for" pourrait être améliorée pour la condition de sortie. En effet avec notre erreur, il manque une donnée donc $weather[] possède non plus 4 éléments mais 3 !
Il est plus judicieux d'écrire:
for($i = 0; $i < count($weather); $i++)

Alors comme le fait remarquer BaroqueW, il y a des ajouts de caractères (des nombres en hexadécimal) dans le $buffer. Pas de bol (tout de même), j'ai remarqué que dans un des commentaires le nombre 800 s'est ajouté !! Vue que l'expression régulière ne garde pas les chiffres .. argh pas d'extraction donc une donnée manquante !!

J'avoue avoir cherché et trouvé un peu par hasard :)
J'ai donc remarqué une incompatibilité chronique entre les fonctions fgets/fread avec le protocole HTTP/1.1

Ainsi, au moins dans la fonction parsepage il faut remplacer le 1.1 par 1.0 à
fputs($fp,"GET ".$url2." HTTP/1.1\n");
=> fputs($fp,"GET ".$url2." HTTP/1.0\n");

Le fgets suivant semble mieux réagir et il n'y a plus d'ajout de code numérique (en hexa) intempestif :)

Ouf, ça maaaaaaaarche ! Vous pouvez le confirmer ?

J'ajoute encore une chose, la phrase "global $meteohost, $meteoIP;" devrait plutôt être insérée *dans* les fonctions parsehost et parsepage. Le mettre en haut ne sert à rien (du moins pour moi et ma version car j'ai toujours le warning/notice à ce propos, héhé :)

Enfin, je veux saluer le travail au niveau des expressions régulières .. là ya eu du boulot :))
Faut juste vérifier régulièrement que meteofrance.com ne change pas trop souvent son rendu HTML !!

Ya pas un flux XML qui peut être récupéré vu qu'il s'agit de données publiques et gratuites (vrai ça?)

Enjoy!
.Mick.

Commentaire de BaroqueW le 20/05/2006 18:31:35

Justement, je parse la page reçue à la recherche de " 800 " et je le vire vu qu'expérimentalement, il n'a rien à faire là et vient tout le temps se fourrer PILE au niveau de la seconde "prévision météo". Tu es sûr que ça le fait quand même chez toi avec ma dernière version ?

Sinon, ça fait un peu plus d'un mois et demi que leur code HTML a pas changé, je croise les doigts !

Et les données récupérées sont bien gratuites et publiques, oui. Mais je viens de voir que l'article 2 du §3 de leur Licence d'Utilisation (http://www.meteofrance.com/FR/index.jsp#) interdit "l'extraction répétée et systématique d'éléments même non protégés du site causant un préjudice à METEO-FRANCE."
Après je suis pas sûr qu'une requête HTTP par-ci par-là soit préjudiciable au niveau serveur pour eux. Mais évitez de les flooder, merci :)
Et pas de XML en vue, mais ils doivent en faire un payant pour les sites commerciaux je suppose.

PS pour Mick : j'essaye le HTTP 1.0 demain

Commentaire de LaurentKOogar le 22/05/2006 03:15:31

BaroqueW a dit
"Mais évitez de les flooder, merci :)"

lol
t'inkiete, puis c'est comme en géolocalisation, les meilleurs services sont payant et ce paye à la requete :)
Pour neolien: jete 1 oeil sur webmastravel.net si tu es dans les voyages. La météo sur un site de voyages, t'evite grave a moins d'avoir beaucoup de traff!! le voyage c'est forcément direction plein soleil, meme au groeland :-)

++

Commentaire de sharkit le 24/05/2006 08:34:09

Bonjour tout le monde
J'ai testé pour les depts outre mer, et la requète ne reconnait pas ( FR/mameteo/ que j'ai changé par FR/voyage/, suivant le type d'url que météo france envoies entre autre), savez quels paramatre il faudrait changer pour que l'on puisse interroger les dom ( notamment la Réunion ) ?
Merci pour tout

Commentaire de epsilon2 le 13/06/2006 23:31:01

Bonsoir,
J'ai installé le script meteo sur mon site et tout marchait pas trop mal.

Or apparement depuis 2 ou 3 jours je ne peux plus me connecter à meteofrance!
Problème avec fsockopen ligne 26 et implode() ligne 241.
Qui peux me dire si ce script fonctionne encore ?
merci
Jacques

Commentaire de BaroqueW le 14/06/2006 00:27:24

Ca marche encore chez moi
Vérifie que ton hebergeur n'a pas changé des réglages au niveau php (version, sécurité etc.)

Pour l'outre-mer, je ne sais pas et je n'ai pas trop de temps en ce moment, désolé :(

Commentaire de epsilon2 le 15/06/2006 23:51:41

Hello,
Je suis chez Free, et ça remarche sans avoir fait aucune Manip !
Merci A+
Jacques

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

carte meteo de france en flash [ par extremepc ] bonjour a tous !! j'explique mon probleme!ce soir je doit rendre un mon examen en flash et j'ai pas eu le temps de le faire!! car trop de boulot.le pr Code meteo ville [ par bibills ] Bonjour tout le monde,Voila j'ai installer pocket weazer sur mon HTC, je voudrais rentrer la ville de berck.Mais il ne la pas en memoire, et pour qu'i Probleme php - phpmyadmin - mysql [ par Keryann95 ] Salut, voilà j'ai un problème, j'aimerai affiché la météo sur mon site selon ma table tbl_meteo ,la journée de la météo = id le temps = meteodans mon syntax error, unexpected T_STRING, expecting ')' in ... [ par votreecom ] Bonjour,ceci est mon promier message sur ce forum!J'ai l'erreur qui apparait à la ligne 49 de mon script php-xml:Parse error: syntax error, unexpected Google maps meteo [ par DrMaboul71 ] Bonjour,Je doit creer une application web avec l'API goolge mapsJ'ai eu une idée je voudrais rajouter un module de meteo genre un lien sur lequel l'ut meteo [ par johnjjj ] bonjour je souhaite votre aide je veux ajouter a mon site météo qui change avec ip de ville du visiteur exemple si un visiteur connecte a mon site Météo France [ par yatoo ] Bonjour à tous, Je suis le webmaster du site The-meteo.com qui propose la ][url=http://www.the-meteo.com][b]météo France[/b[/url] jusqu'à 10 jours . Meteo [ par thitytspaz ] Comment afficher la meteo sur mon site svp


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,950 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales