Catégories
e-business

Recevoir l’horaire des marées par SMS avec Twitter, Yahoo Pipes et un peu de PHP

Le phare du Cap Ferret

Présentation

L’idée était de proposer un service de diffusion des horaires de marées du SHOM par SMS, via Twitter1.

Le modèle a été développé pour le Cap-Ferret.

Motivation

Pour me rendre service d’abord : mon bateau est ancré au Cap-Ferret, or j’ai toujours mon mobile sur moi, pas mon annuaire des marées… Partant, pour rendre service à quiconque se trouve en situation de programmer sa journée du lendemain en fonction des marées : surfeur, plaisancier, estivant… (je passe pour les pêcheurs, même amateurs, et parqueurs qui ont l’annuaire des marées greffé à l’ADN)

Pour jouer ensuite : non programmeur moi même, j’avais envie de tester si je serais capable d’agréger des services dits “web 2.0”, sensés donner “le pouvoir à l’utilisateur”, dans ce qu’il est convenu d’appeler un “mashup” ou application composite. J’ai failli y arriver tout seul…

Résultat

Le compte Twitter à suivre avec notification SMS : https://twitter.com/marees_ferret

Il est actualisé à 19:30 chaque jour avec la marée du lendemain.
Actuellement :

La notice :

Horaires des marées au Cap-Ferret – Gironde – Autorisation SHOM© n° 234/2008 – Mentions légales : suivez le lien

La méthode

Obtenir des données de qualité

Le Service Hydrographique et Océanographique de la Marine, ou SHOM, publie précisément d’excellentes prédictions de marées.
Exemple pour le Cap-Ferret 

Il est aisé d’obtenir la prédiction des marées pour le port, la date et la période de son choix, en passant les données en paramètres dans l’URL.

La page est composée en html avec les données incrustées dans des tableaux.

Récupérer les données

C’est ici qu’intervient ce puissant service 2.0 offert par yahoo : Yahoo Pipes 

Yahoo Pipes va me permettre de :
1. appeler la page du SHOM selon les paramètres passés ;
2. fetcher (parcourir) la page pour en extraire l’horaire du jour ;
3. construire avec les données, un tableau de données PHP.

Les paramètres : nom du port (à copier depuis le site du SHOM – par défaut CAP_FERRET), échéance (now, today, 5 days away – par défaut tomorrow), fuseau horaire (par défaut heure d’été soit TU+2)…

Le pipe est libre d’accès. Tout utilisateur de Yahoo Pipes peut choisir d’autres paramètres et obtenir un flux selon ses choix dans différents formats. Par exemple les marées à Arcachon pour 2 jours, en flux RSS.

L’adresse du pipe : https://pipes.yahoo.com/fxbodin/marees

L’emploi d’expressions régulières a permis :
– de « nettoyer » le code de la page (tabulations, espaces multiples, images…)
– de recomposer un flux RSS valide à partir du code html.

Exemple, remplacer :
.*<tr bgcolor=.{2}\w{5}.?><td align=.?center.?>\w{3}</td><td align=.?center.?>\d{1,2}</td><th>(\d{2}|-)</th><td align=.?center.?>(\d{1,2}h\d{1,2}|-)</td><td align=.?center.?>(\d{1,2},\d{1,2}m|-)</td><td align=.?center.?>(\d{1,2}h\d{1,2}|-)</td><td align=.?center.?>(\d{1,2},\d{1,2}m|-)</td><th>(\d{2}|-)</th><td align=.?center.?>(\d{1,2}h\d{1,2}|-)</td><td align=.?center.?>(\d{1,2},\d{1,2}m|-)</td><td align=.?center.?>(\d{1,2}h\d{1,2}|-)</td><td align=.?center.?>(\d{1,2},\d{1,2}m|-)</td></tr>.*
Par :
Matin coef $1 PM $2 BM $4 - Ap.Midi coef $6 PM $7 BM $9

Passer les données à Twitter

J’avais dans un premier temps employé le service Twitterfeed avec le flux RSS émis par le pipe. Méthode employée précédemment pour le projet bordeaux_2008.

Les inconvénient qui m’ont fait chercher un autre moyen :
– fréquentes difficultés rencontrées par Twitterfeed pour communiquer avec Twitter
– impossibilité de gérer l’heure de l’update

La solution a été d’écrire directement dans l’API de Twitter avec un script PHP.

Le script php qui passe les données du SHOM à Twitter via Yahoo Pipes (remplacer .txt par .php)

Sa fonction :
1. récupérer le résultat du pipe sérialisé, le désérialiser
2. construire le corps de l’update twitter
3. établir un canal avec Twitter pour le compte considéré
4. poste l’update dans l’API

Soyons clair : la partie 1, c’est du copier coller dans lequel j’ai injecté mon URL, la partie 2, c’est Julien qui me l’a écrite et heureusement parceque j’étais scotché et la partie 3 et 4 c’est du copier coller que j’ai un peu adapté. Comme je disais avant, je ne suis pas programmeur de métier…

A ce stade, nous avons un script qui, chaque fois qu’il est lancé, actualise le compte Twitter.
Si nous étions maître de notre serveur, il n’y aurait plus qu’à ajouter une ligne dans crontab.
Mais nous ne sommes pas.
Alors il faut être malin. heureusement, nombreux l’ont été avant et il existe plusieurs services en ligne et scripts qui permettent de simuler la fonction d’une crontab.

En l’occurrence, je me suis arrêté sur un plugin pour WordPress – Utopia Cron – qui utilise les visites d’un blog pour déclencher une comparaison entre l’heure courant et l’heure programmée, et le cas échéant, lancer le script désigné. C’est simple et ça fonctionne.

Aspects éditoriaux

J’ai demandé par e-mail et obtenu (par courrier postal) très rapidement une autorisation de reproduction numérotée du SHOM. En tant qu’éditeur, je suis donc bordé pour les droits, pourvu que je diffuse la notice légale.

La promotion, pour le moment réservée à mon réseau Twitter, et avec la saison, je pense motiver les différents groupes d’amoureux du Ferret actifs sur Facebook ; et bien sûr, en « première page » de mes Chroniques de l’Iboga. Je compte aussi sur les éditeurs de blogs sur le Bassin. Toutefois, l’accès à Twitter pour simple qu’il paraisse au geek de base, n’est dans la vraie vie pas si évident, surtout la validation du mobile… Probablement y aura-t-il des lecteurs de la version Web de @marees_ferret, mais faute de stats et de visibilité…

Ouvrir d’autres ports ? Certainement… si quelqu’un veut s’y coller, il est le bienvenu. On pourra abonner mutuellement les @marees_arcachon, @marees_ailleurs-sur-le bassin (en incorporant les variations d’horaires spécifiques) et, ça serait super, les @marees_ailleurs-en-france

Bilan

Voilà.
Au final une expérience intéressante (réaliser un mashup pas évident quand même), énervante (format de la date dans le flux rss, découpage en 3 sms de 62 caractères, caprices de twitterfeed), instructive (expressions régulières) et pratique (marées par SMS).


  1. Twitter est un service de blog de type “présence sociale” (what are you doing?) aux caractéristiques particulières :
    – taille des messages limitée à 140 caractères
    – extrême facilité pour s’abonner mutuellement entre utilisateurs (follow),
    – interface de programmation (API) ouverte et ultra simple, permettant d’adresser toutes les fonctions et tous les contenus d’un compte utilisateur
    – intégration native à la messagerie instantanée et aux mobiles, avec possibilité de demander gratuitement le relais des messages par SMS sur son mobile.

    Ces caractéristiques ont entraîné la création de véritables réseaux sociaux très actifs, ainsi que d’une myriade d’applications périphériques (”badges” à intégrer aux blogs, social timelines, logiciels clients, filtres, agrégateurs, recherche, représentations graphiques…)