Pages

Friday, September 17, 2010

Profiter du code d'un widget iGoogle

Ayant récemment déménagé à Rouen pour mes études, un de mes premiers besoin était de pouvoir consulter les horaires des transports en commun de la ville. Malheureusement, je n'ai pas trouvé d'application remplissant ce rôle pour mon téléphone sous Android. La seule chose que j'ai trouvé, c'est un lien vers un widget iGoogle. Ce widget permet de connaître les différentes perturbations du réseau de transport ainsi que les horaires des prochains métros, tramways, bus... J'ai donc observé son fonctionnement pour pouvoir obtenir ce que je recherche, c'est-à-dire les horaires des transports.


1 - Analyse du widget

Le widget se situe à l'adresse suivante (http://www.tcar.fr/gadget/gadget.xml). Ce fichier contient un certain nombre de choses dont les adresses d'images, d'une feuille de style, d'un fichier javascript ... Ce dernier est d'ailleurs l'élément le plus important du widget, car c'est au sein de ce fichier que l'on trouve toute les fonctions permettant au widget d'être interactif et de renvoyer des informations à l'utilisateur.

Les fonctions intéressantes du fichier javascript (http://www.tcar.fr/gadget/_js/widgetEngine.js) sont les suivantes :

- getLines() retourne des informations (id de la ligne, numéro de ligne, type, pictogramme) sur chaque ligne du réseau (métro, THEOR, bus, taxi ...)
www.tcar.fr/gadget/getAllLinesWithType.asp

- getDirections() retourne le numéro de ligne, les noms des terminus, et la direction suivant le terminus
www.tcar.fr/WebServices/xgoatService/xLine/getDirections.asp?uId=TCAR01&ligID=6 (exemple pour la ligne de métro)

- getStops() retourne tous les arrêts d'une ligne
www.tcar.fr/WebServices/xgoatService/xLine/getLineStops.asp?uId=TCAR01&ligID=6&ligSens=1 (exemple pour la ligne de métro avec en terminus l'arrêt Technopôle)

- getLineCode() retourne plusieurs informations dont le code de la ligne qui nous sera utile pour récupérer ensuite les horaires
www.tcar.fr/WebServices/xgoatService/xLine/getLineInfos.asp?uId=TCAR01&ligID=6

- callbackLineCode() permet de sélectionner les "identifiants transporteurs" de la ligne à partir du code retourné par getLineCode(). Cette fonction récupère seulement les deux derniers chiffres du code de la ligne.

- updateScheduleData() retourne les horaires de tous les métros, bus ... passant après l'heure actuelle (jusqu'à la fin de la journée). Suivant la ligne, les horaires peuvent être actualisé en tant réel ou non.
www.tcar.fr/SiriSoapClient/getStopTimetable.aspx?uId=INEO:Operator:Cityway:LOC&ligno=90&ptano=10126&sens=1 (en temps réel)
www.tcar.fr/WebServices/xgoatService/xHour/getLineStopNextHours.asp 


2 - Script python

J'ai fait un petit script en python afin de tester les éléments de la partie précédente. Le script n'est pas du tout flexible car il récupère l'horaire du prochain métro en direction du sud de Rouen et passant à l'arrêt le plus proche de chez moi. Lorsque le script à trouvé l'horaire du prochain métro, la synthèse vocale annonce l'horaire et la destination de celui-ci (fonctionnel sous Mac grâce à la commande "say").



Si tout se passe bien vous devriez entendre (sous Mac) une phrase semblable à celle-ci : "Next subway is at 20 hours 45 minutes for Technopôle."

Cet article et ce script ne me permettent pas de consulter les horaires des prochains métro à partir de mon téléphone comme je le souhaite, mais cela me permet d'avoir une meilleure idée de comment je pourrais  faire pour développer un widget ou une application pour Android (si je trouve le temps).

Maj : Il existe un site internet adapté aux téléphones mobiles pour consulter les horaires, cependant il faut entrer le nom de l'arrêt pour en connaître les horaires, ce qui est peu pratique lorsque l'on n'est pas sûr du nom, de l'orthographe ...