Le site de MétéoFrance a été relooké. Pas pour le mieux étant donné que l'on retrouve beaucoup de problèmes du site précédent et d'autres en plus : le changement cosmétique est malheureusement bien suffisant et encore une fois mal réalisé :

  • du Flash partout : les possesseurs d'iPhone (qui n'affiche pas le flash) seront à la fête ;
  • l'activation des cookies est nécessaire pour passer la page d'accueil : inadmissible !
  • ce cookie est défini par du code JavaScript sur la page d'accueil, donc JavaScript est nécessaire ;
  • le code HTML est changé, mais toujours aussi bogué puisque ce n'est pas du XML valide (9 erreurs relevées sur le W3C Validator sur la page d'accueil) ;
  • il y a toujours autant de pubs intrusives (popups...) ;
  • les URLs sont toujours aussi abominables. Exemple : http://marine.meteofrance.com/marine/accueil?17865.path=marinecote

Cette réorganisation impacte ma passerelle de consultation des bulletins sur téléphone mobile, Météo Mobile, qui ne fonctionnait donc plus :

  • l'URL des bulletins a changé. Exemple d'un bulletin côtier : http://marine.meteofrance.com/marine/accueil?MARINE_PORTLET.path=marinecotebulletinCOTE_RAPH_MENT ;
  • il faut maintenant envoyer le cookie IntersticielPerso=done pour ne pas être redirigé vers la page d'accueil (voir le code source de la page d'accueil sans cookie) ;
  • il y a encore des problèmes de XML, différents de la version précédente, donc on ne peut toujours pas utiliser un analyseur XML pour extraire le texte du bulletin.

Voici comment j'ai testé le requêtage HTTP pour récupérer la page d'un bulletin :

C:\>curl -i --header "Cookie: IntersticielPerso=done" http://marine.meteofrance.com/marine/accueil?MARINE_PORTLET.path=marinecotebulletinCOTE_RAPH_MENT

J'ai adapté le code de récupération. L'ancien code était très simple, grâce à file_get_contents() :

$url = 'http://www.meteofrance.com/FR/mer/bulCote.jsp?LIEUID=COTE_' . $lieu;
$data = file_get_contents($url);

Pour passer le cookie, j'ai dû utiliser la libcurl ainsi :

$url = 'http://marine.meteofrance.com/marine/accueil?MARINE_PORTLET.path=marinecotebulletin/COTE_' . $lieu;

$ch = curl_init($url);

curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
// C'est ici qu'est la partie spéciale du site de MétéoFrance
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Cookie: IntersticielPerso=done"));

curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_TIMEOUT, 4); // 4 secondes
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$page = curl_exec($ch);

if (curl_errno($ch)) {
    // Faire quelque chose de curl_error($ch)
    $page = '';
}
curl_close($ch);

Comme vous l'avez vu j'utilise pour l'instant les bulletins publiés sur le site web public. Mais je préfèrerais avoir un accès direct au bulletin texte brut. Je n'ai rien trouvé sur le site FTP de MétéoFrance. Alors, si vous connaissez l'URL d'une telle source, je suis intéressé.