Ça m'aura pris un peu plus longtemps que je le pensais, mais je vais enfin pouvoir rouvrir monrer.fr !
Comme cela faisait quand même presque 6 semaines de downtime, je pense que je vous dois quand même quelques explications.
Dans mon post précédent, j'avais expliqué comment j'avais fait de la rétroingénierie sur l'appli Transilien officielle pour Android (attention, vidéo en auto-play sur la page) afin de déterminer comment cette appli faisait pour récupérer les horaires en live des prochains trains de chaque gare. L'étape suivante était bien entendu d'implémenter le fruit de mes trouvailles. Et comme vous pouvez le constater, c'est plus ou moins pour cette raison que j'ai eu quelques ennuis.
Une alerte Nagios plus tard, je me suis rendu compte que le serveur qui héberge monrer.fr s'est soudainement fait bannir. Je ne pouvais donc plus récupérer les horaires temps réel des trains.
Après quelques échanges avec plusieurs employés de la SNCF qui ont pris l'initiative de me contacter (et que je salue au passage), je me suis mis en tête d'essayer l'API Open Data officielle que la SNCF fournit depuis quelques mois, et qui est (d'un point de vue fonctionnel) grosso modo équivalent aux sources de données que j'utilisais avant. Cette nouvelle source de données n'est pas encore tout à fait parfaite (en particulier, seules les gares des lignes C et L sont interrogeables), mais que l'ouverture du service à l'ensemble des gares Transilien serait pour bientôt. Cette restriction sur les gares interrogeables se reflète pour le moment dans monrer.fr, mais dès que j'aurai des nouvelles, je vous tiendrai au courant.
Les changements d'un point de vue technique
J'ai profité du downtime pour retaper une bonne partie du code qui s'occupait de la récupération des informations proprement dite, pour me permettre à l'avenir de confronter plus facilement plusieurs sources de données. Je le fais d'ailleurs déjà, car pour un train donné, je récupère son horaire temps réel via l'API et son horaire théorique à l'aide des horaires Transilien en GTFS pour calculer son retard.
J'ai aussi dû retaper la gestion des gares de manière générale, parce que toutes mes sources de données utilisent les codes UIC en interne alors que je m'étais longtemps fié aux codes TR3.
Sinon, le site sait désormais par quelles lignes sont desservies chaque gare. Ça se voit dans les pop-ups d'autocomplétion :
Cette fonction paraît anodine mais cela me permettra au moins de poser les bases pour une feature request que j'ai eue, à savoir pouvoir filtrer les résultats par ligne.
Conclusion
J'ai attendu assez longtemps avant de rouvrir, parce que je voulais être sûr de ne pas laisser trop de bugs dans ce que j'allais faire. Cependant, tout n'est pas encore parfait, et il se peut que vous tombiez sur l'un des messages d'erreur suivants :
API is broken : erreur interne du serveur qui fournit l'API Prochains Départs. Suffit de rafraîchir la page et ça devrait repartir.
API call quota exceeded : là c'est parce que vous êtes trop nombreux. J'ai pour le moment toujours le quota à 10 appels par minute (ce qui me permet d'avoir 2 users regardant des gares différentes au maximum à un instant donné), mais heureusement pas pour longtemps.
Sinon, s'il y a autre chose, vous pouvez vous exprimer dans les commentaires, m'envoyer un mail ou jeter un œil au bugtracker du site.
Commentaires
Poster un commentaire
François
Bonsoir et Bonne année ! Merci de ta persévérance, j'attendais la réouverture du site avec impatience. Cependant, un petit bug : lorsque qu'on affiche les prochains trains en gare d'Ermont-Eaubonne, impossible d'obtenir la desserte des trains de la ligne J en direction de Paris Saint-Lazare. Je précise qu'il s'agit du terminus de cet axe de la ligne J. D'autre part, le logo "J" ne s'affiche pas à côté de la destination. En tout cas le site reste génial, j'attends avec impatience l'ouverture à toutes les lignes ! Cordialement
★ x0r
Ah oui, ça arrive quand un train est présent dans les horaires "live" mais qu'il n'a pas été trouvé (par son numéro) dans la base de données des horaires théoriques. C'est aussi de cette base de données que je dérive la desserte de chaque train. J'avais oublié ce détail.
★ x0r
En fait j'ai vu d'où vient le problème : la gare d'Ermont Eaubonne est référencée par deux codes UIC différents, et certains trains utilisent le premier, d'autres utilisent le second. J'ai d'ailleurs constaté la même chose pour quelques autres gares (La Défense ou Paris Austerlitz par exemple).
François
Merci d'avoir résolu le problème et d'avoir ajouté une fonctionnalité tant attendue : l'affichage des prochains trains par ligne ! Pour la gare d'Ermont-Eaubonne, ce n'est pas très étonnant, ligne J n'est pas gérée par le même poste d'aiguillage que celui des lignes H et C. D'ailleurs les voies de la J ne communiquent pas avec celles de la H et de la C.
Christophe
Super appli, bravo ! Le quota de quota à 10 appels par minute existe toujours ? J'aimerais mettre une redirection vers monrer.fr sur un site que je gère mais ça risque de coincer.. Y-a-t-il une date annoncée par la SNCF pour augmenter le nombre de requête ?
★ x0r
Le quota est à 20 appels par minute, mais j'ai également remarqué qu'il est inutile de faire plus d'une requête par minute car les données sont rafraîchies toutes les minutes. Je fais de la mise en cache des assez agressive des résultats de mon côté et j'essaye justement de contacter le responsable Open Data Transilien pour discuter d'une éventuelle augmentation de quota pour moi.
OBA
Félicitation pour cet exemple d'utilisation d'open data. Mon jeune fils est super content (fan de trains). Vérifié ce matin en gare de Versailles chantiers, c'est OK mais avec 1 Min de retard pour l'affichage d'un train retardé par exemple (ça doit être normal vu la fréquence de rafraîchissement). N'y a t-il pas l'information train court/train long et train à l'approche ? J'ai remarqué qu'une fois le train en gare et/ou l'horaire dépassé, le train n'était plus affiché sur le site alors qu'il l'était bien sur l'écrans SNCF. Cdt.
mobel
Bonjour, Peut-tu me monter comment récupéré les données de l'api transilien. J'utilise une request pour recup les donnée mais sans succès . exemple : xhr.open("GET","http://api.transilien.com/gare/87681007/depart",true); xhr.setRequestHeader("Authorization", "Basic"+ "(login"+ ":" + "mdp)");
A
Peut-être un souci temporaire, mais plus aucun train n'est affiché à l'heure où j'écris ces lignes.
Par exemple http://monrer.fr/json?s=PMP {"trains":[],"lines":["N"],"info":[]}
A
Revenu à la normale, merci pour ce service très apprécié x0r.
pouxi
Bonjour, Je découvre et je trouve ça merveilleux ! Merci.
Amaury
Bonjour, super travail. J'ai réalisé un travail similaire pour avoir un affichage personnalisé sur ma tablette dédiée à ma domotique. Je prends la ligne A et L à Poissy et je me base sur la base de donnée opendata de la sncf (api.sncf.com). Mais j'obtiens moins de résultats que toi (il y a des travaux en ce moment avec des trains L qui apparaissent bien sur ton site mais qui ne sont pas dans la base api.sncf.com). Utiliserais tu une autre source? ps: certains liens de ta page sont mort.
Poster un commentaire