API Keolis Open Data : Récupérez les horaires des bus du réseau Keolis en temps réel

2014-11-09 22:41:52 +0000

J’ai fait une découverte quelque-peu intriguante, il y a quelques temps, en passant au crible l’app officielle du réseau Twisto. Une URL était hard-coded, et pointait vers un sous-domaine de Keolis : timeo3.keolis.com.

Logo_Keolis_Groupe_0

Cette découverte m’a mis la puce à l’oreille; étant développeur de Twistoast, une application qui jusqu’ici analysait directement les données présentes sur le site officiel de Twisto afin de présenter une liste d’horaires dans une application native, j’étais plutôt bien placé pour savoir que Timeo est le petit nom donné au système d’horaires en temps réel du réseau de bus de Caen. Et pas seulement, apparemment.

En effet, en fouillant un peu plus sur les Internets à propos de cette URL, je suis tombé sur un document fort intéressant sur Pastebin, documentant quelques fonctions de ce qui semble être une API permettant de récupérer les horaires en temps réel de tous les bus du réseau Keolis, en gros.

J’ai donc commencé à l’étudier et à la documenter de la manière la plus exhaustive possible, afin de la rendre accessible au public, et l’ai publiée sur un Gist. Cet article vient en complément du Gist, pour donner un peu de background à l’histoire et peut-être quelques précisions techniques, si jamais vous souhaitez vous servir des données.

Twistoast, avant

Twistoast est née il y a environ un an, comme un simple projet pour m’initier à Android. Je venais de commander une montre Pebble, et je voulais pouvoir accéder aux horaires des bus Twisto en temps réel depuis celle-ci, étant un utilisateur régulier de leur service pour aller étudier. J’ai eu beau chercher, et chercher, et chercher, je ne trouvais pourtant aucun moyen de récupérer ces horaires en temps réel autre que leur site web; leurs applications officielles utilisent des WebViews, et aucune API ne semble disponible.

J’ai ainsi commencé à étudier le fonctionnement de Timéo, le système utilisé par Twisto pour fournir ces données et les rendre disponibles à l’utilisateur final, dont l’interface a été développée par Actigraph, un contracteur vraisemblablement expérimenté dans le domaine, qui gère également un bon nombre des sites web de Keolis, et probablement une bonne partie de leur backend.

Après de longues heures passées sur le sujet, je termine plus ou moins le développement d’une API en PHP me permettant de récupérer simplement tout ce dont j’ai besoin pour récupérer les horaires des bus Twisto en temps réel. Elle me donne alors grande satisfaction, et même si elle souffre encore de nombreux bugs (que je résoudrai au fil du temps), je commence à bosser sur la partie client de l’app Android qui deviendra Twistoast.

Pas grand-chose à raconter ici. J’ai beaucoup appris sur le développement Android grâce à cette app, et j’ai enfin eu accès aux horaires des bus Twisto sur ma montre. HUGE SUCCESS!

Keolis et l’Open Data

Retour au présent. Vers la fin de l’été dernier, je suis donc tombé sur cette API magique, directement disponible sur un sous-domaine de Keolis, et qui retourne les données en XML. Elle n’est pas trop mal conçue, et assez complète, mais j’aurais quelques remarques à faire si jamais vous souhaitez l’utiliser dans un de vos projets.

Vous pouvez retrouver la documentation de l’API ici, sur Github.

Remarques techniques

Premièrement, l’API devrait fonctionner pour les réseaux de bus des villes suivantes : Le Mans, Pau, Soissons, Aix-en-Provence, Caen, Dijon, Brest, Pau-Agen, Blois, St-Étienne, Nantes, Montargis, Angers, Macon-Villefranche, Épinay-sur-Orge, et Rennes (sauf erreur). Cependant, les données fournies pour certaines villes sont franchement limitées. Vérifiez donc cela avant de vous lancer dans le développement du service du siècle.

Ensuite, aucune idée de ce à quoi peut servir le paramètre xml=2. Tout est clair pour xml=1 et xml=3, mais xml=2 reste un mystère. Si vous trouvez quelque-chose, faites moi signe.

Ensuite, gros problème. Vous comprendrez vite que le paramètre refs est ce qui identifie un arrêt dans ce système; or, il change au cours du temps. Eh oui, c’est bizarre, mais c’est comme ça. J’ai cru remarquer qu’il ne change que pour certaines périodes; changement d’horaires, peut-être ? Toujours est-il qu’il faudra le mettre à jour régulièrement, faute de mieux. Vous pourrez toutefois récupérer les infos d’un seul arrêt dont vous connaissez le code (qui est du coup un identifiant qui ne change pas dans le temps… déconcertant), avec un appel du type ?xml=1&code=2523.

Remarques pratiques

L’API fournit des infos supplémentaires assez sympathiques, comme la couleur de la ligne, ou la direction d’un bus précis (en complément de la direction de la ligne). Pas de géolocalisation des arrêts cependant, contrairement à cette autre API de Navitia que je n’ai malheureusement pas eu l’occasion d’utiliser, vu qu’elle ne propose justement pas d’horaires en temps réel.

Remarque bête, mais néanmoins à noter, la capitalisation des noms est dégueulasse et sans aucun accent. Une fonction de capitalisation custom ne sera donc probablement pas de trop.

Conclusion

Un bien gros article pour un sujet qui va probablement toucher deux personnes dans l’Univers, mais j’avais besoin de transmettre ma connaissance. Donc si vous êtes cette autre personne, bonne chance !

Par ailleurs, je ne sais pas qui a posté le Pastebin originel, mais je sens que je lui dois une bière. Merci à lui ou elle !

Je sens que cette API a vraiment énormément de potentiel, et qu’une tonne d’autres données est disponible sur le site de Keolis. Je n’étais pas du tout intéressé par le domaine avant de me mettre à développer Twistoast, mais il y a encore énormément de progrès, de découvertes et d’inventions à développer dans le domaine du transport, et j’ai hâte de voir (ou même de participer) à ça.

Regardez ces vidéos ou je tire ! (aka les chaînes YouTube à voir absolument)

2013-08-13 21:22:49 +0000

Pour changer, je me suis dit que j’allais vous faire une petite compilation de mes chaînes YouTube anglophones préférées, celles qui me font sourire quand une vidéo vient de sortir.

Évidemment, ce sera très subjectif, mais vous trouverez certainement quelque-chose qui vous plaira dans le lot.

Oh, et une note : les vidéos que je regarde sont quasi-exclusivement en anglais. Désolé, mais pour moi les meilleurs chaînes ne sont PAS en français, donc non-anglophones s’abstenir (quoique…), il n’y aura que de l’anglais dans la liste. :p

Je vais classer les chaînes par catégories et par ordre de préférence, du meilleur vers le moins meilleur (pas de “pire” ici), pour simplifier les choses.

Animation et sketches

En général, on est assez bien servis en ce qui concerne les vidéos de type court-métrage ou sketches sur YouTube; les bonnes références ne manquent pas.

Tomska

Commençons par une perle : un vidéaste britannique principalement connu pour sa série asdfmovie à l’humour très british. Pensez aussi à visiter la chaîne de Lil Deuce Deuce, qui compose la musique pour la plupart des vidéos de Tomska et qui fait un travail incroyable.

Jacksfilms

Même s’il fait moins de vidéos depuis un moment, sa chaîne reste une mine d’or. Un bon échantillon comprendrait ses parodies de téléachat hilarantes.

Timtimfed

Un autre vidéaste extrêmement talentueux, que j’adore pour certaines de ses vidéos, notamment Back to the Whoture.

Guy Collins

Un animateur qui fait des vidéos de toute beauté et à couper le souffle. Un must-see.

freddiew

Il est tellement connu que je ne suis pas sûr qu’une présentation soit nécessaire. PANPANPAN BOOOOOM

AndrewMFilms

Pour en finir avec cette catégorie, je vous propose de regarder quelques vidéos d’AndrewMFilms, qui réalise des effets spéciaux parmi les plus réussis qu’il m’ait été donné de voir.

Science

Une bonne façon de trouver une excuse à tout ce temps gâché à regarder des vidéos YouTube est de regarder des vidéos qui vous rendront moins bête; heureusement, encore une fois, il y a de quoi faire.

VSauce

Une chaîne sur la science compréhensible par tout le monde et néanmoins extrêmement intéressante, j’ai nommé : VSauce ! Elle aborde des thèmes variés, en vulgarisant et en rendant le tout très agréable à regarder, sur un large panel de thèmes, qu’ils soient physiques ou philosophiques. À noter qu’il existe aussi VSauce3, avec d’autres présentateurs et d’autres émissions tout aussi passionnantes.

Computerphile

Quatre chaînes que je vais regrouper puisqu’elles sont toutes les quatre gérées par Brady Haran. Numberphile traite de mathématiques, Sixty Symbols de physique, Periodic Videos de chimie, et Computerphile d’informatique. Leurs vidéos traitent leur sujet de manière détaillée, scientifique, méthodique, sous forme d’interview avec des professionnels, souvent professeurs à l’Université de Nottingham.

Minute Physics

Des concepts de la physique expliquées en quelques minutes, grace à des dessins en time-lapse et une voix-off relaxante. Très complet et intéressant; j’ai même pu m’appuyer sur une vidéo de cette chaîne pour faire un exposé grâce à l’exactitude des explications.

The Slow Mo Guys

C’est pas vraiment de la science… mais ça y ressemble, et puis ils ont des blouses et une caméra qui filme à beaucoup, beaucoup de FPS. Autant vous dire qu’au moins, on s’amuse.

SciShow

SciShow (pour “science show”) est une châine qui retrace notamment les dernières nouvelles en matière de science, à travers de courtes émissions vulgarisées mais néanmoins détaillées.

Jeux vidéo

Sur YouTube, la majorité des vidéos que je regarde fait partie de ce que l’on appelle les Let’s Play, et principalement des Let’s Play de Minecraft.

réseau Mindcrack

Je vais regrouper ceux-ci, puisque Etho et Guude font tous deux partie de Mindcrack. Si vous aimez Minecraft, c’est définitivement un serveur sur lequel se trouvent des personnes que vous saurez apprécier. Mindcrack est un serveur privé, fermé au public, tous ses membres sont YouTubers et font des vidéos de qualité. L’ambiance qui y règne rend le tout encore plus excellent. Pensez à regarder les vidéos de différents membres, si vous avez du temps.

En particulier, je vous recommande Etho, un joueur de Minecraft qui a voulu faire des vidéos pour essayer d’exploiter tout le potentiel technique du jeu, d’où son slogan “Minecraft done technical”.

Je peux également vous recommander la chaîne de Guude, puisqu’en plus d’être à l’origine de Mindcrack, il propose des Let’s Play sur quelques autres excellents jeux. Fouillez dans ses playlists !

UberHaxorNova

Probablement pas mon youtuber préféré, mais je ne peux pas m’empêcher de regarder ses nombreuses vidéos, pour je-ne-sais-quelle raison. Sans doute à cause de son caractère particulier et des fou-rires réguliers.

The Yogscast

La Yogscast est une équipe de youtubers britanniques très célèbre pour ses vidéos sur Minecraft. Ils sont parfois critiqués, mais j’aime quand-même certaines de leurs vidéos qui sont souvent marrantes (notamment la série des “Trucking Tuesdays”).

TL;DR

Si vous voulez regarder ce qui pourrait vous plaire en une seule fois, j’ai compilé une playlist avec tous les extraits présents sur cette page. Enjoy !

Twitter, ou le traître à plumes

2013-03-13 18:11:13 +0000

Vous le savez, j’en avais parlé lorsque l’affaire était parue. Twitter a annoncé il y a quelques mois son API 1.1, une vaste blague ayant pour but “d’uniformiser l’expérience de l’utilisateur”, et qui se résume à faire un magnifique doigt d’honneur aux utilisateurs et des développeurs.

Die, bitch.

Pour résumer, la nouvelle version de cette API (qui est désormais la seule fonctionnelle) repose sur deux points principaux :

  • Le nombre de requêtes est limité à 60 par heures pour les requêtes de la timeline et l’envoi des tweets
  • Une application ne peut pas avoir plus de 100000 utilisateurs

Un cadeau pour les utilisateurs, et un cadeau pour les développeurs. Merci Twitter !

La stratégie derrière tout ça est claire : ces limitations ne s’appliquant qu’aux apps de tierce-partie, les utilisateurs vont, faute de patience, migrer vers l’app officielle de Twitter, sur laquelle ils ont un contrôle total.

Problème : l’app officielle de Twitter, elle est nulle. Absence totale de configuration, aucun choix pour le service d’upload de photos par exemple (obligation de passer par le service extrêmement limité et mal conçu de Twitter), impossible d’afficher les pseudos en place et lieu des “noms réels” -chose que j’ai toujours trouvée débile, étant donné que ce n’est pas avec ce nom qu’on interagit sur Twitter, mais avec le pseudo, interface lente, moche et mal pensée, obligation d’afficher le détail d’un tweet pour interagir avec, etc. Oui, etc, parce que je pourrais continuer pendant longtemps.

Donc, Twitter, fais bien les choses. Plutôt que de tenter de tuer ceux qui ont contribué à ta réussite, tu ferais mieux de chercher de vraies solutions au problème. Parce que oui, ceux qui utilisent les apps tierces, malheureusement, ce ne sont pas les utilisateurs lambda; et ces utilisateurs-là, ils n’étaient pas sur Twitter il y a deux-trois ans, quand tu en avais encore quelque-chose à foutre d’eux.

Donc voilà, Twitter me gonfle, et je suis trop accro pour le quitter, donc je reste. Comme tout le monde. Comme un mouton. Tant pis pour moi, de toute façon dans la vraie vie, c’est toujours le méchant qui gagne.

En attendant, il y a une solution à ces problèmes d’API : se faire passer pour Twitter. Pour ça, c’est simple, il suffirait de récupérer les clés d’API des apps officielles, qui ne sont, elles, pas bridées. Sauf qu’elles sont secrètes, et que personne ne peut les récupérer…

…oh, mais attendez. Quelqu’un l’a fait.

Twitter for iPhone

Consumer key: IQKbtAYlXLripLGPWd0HUA
Consumer secret: GgDYlkSvaPxGxC4X8liwpUoqKwwr3lCADbz8A7ADU

Twitter for Android

Consumer key: 3nVuSoBZnx6U4vzUxf5w
Consumer secret: Bcs59EFbbsdF6Sl9Ng71smgStWEGwXXKSjYvPVt7qys

Twitter for Google TV

Consumer key: iAtYJ4HpUVfIUoNnif1DA
Consumer secret: 172fOpzuZoYzNYaU3mMYvE8m8MEyLbztOdbrUolU

Twitter for iPad

Consumer key: CjulERsDeqhhjSme66ECg
Consumer secret: IQWdVyqFxghAtURHGeGiWAsmCAGmdW3WmbEx6Hck

Twitter for Mac

Consumer key: 3rJOl1ODzm9yZy63FACdg
Consumer secret: 5jPoQ5kQvMJFDYRNE8bQ4rHuds4xJqhvgNJM4awaE8

Twitter for Windows Phone

Consumer key: yN3DUNVO0Me63IAQdhTfCA
Consumer secret: c768oTKdzAjIYCmpSNIdZbGaG0t6rOhSFQP0S5uC79g

TweetDeck

Consumer key: yT577ApRtZw51q4NPMPPOQ
Consumer secret: 3neq3XqN5fO3obqwZoajavGFCUrC42ZfbrLXy5sCv8

(Qu’est-ce que j’aimerais que Twitter me demande de retirer cet article. On s’amuserait bien.)