Europa-Park, c’est cool

Comme le dit le titre, Europa-Park c’est carrément classe. Pour ceux qui ne se seraient jamais amusé de leur vie, c’est un parc d’attractions en Allemagne à Rust, 40 bornes de Strasbourg.

Le parc est cool, mais souvent bourré de monde durant les week-ends et les ponts… J’avais donc pensé à faire un site de statistiques regroupant les temps d’attentes pour chaque attraction par horaire, par jour, par météo, et tout le tintouin.

Bon, pour faire des stats, il faut des données. Dans ce cas on les trouve sur l’application mobile Europa-Park Guide qui nous fournit les temps d’attente en temps réel de 18 attractions.
C’est cool, on a des temps d’attente ! Reste plus qu’à engager un chinois pour les recopier dans une base de données toutes les 10 minutes. On va plutôt faire quelque chose de pratique.
Le but est de récupérer la requête http faite par l’application pour récupérer les temps d’attente.

On commence par remarquer que l’application n’affiche les temps d’attente seulement si le téléphone est géolocalisé dans le parc, pas pratique. Un coup de fake localization ? L’appli vérifie ça aussi !
Bon bah, hop, on sort le root pour changer la localisation sans que l’application fasse chier et c’est niquel.
On a donc maintenant des temps d’attente en dehors du parc, mais sur téléphone.

On sort ensuite le wireshark du téléphone sous android : Shark. Alors pour être clair : c’est de la merde cette application. Ça enregistre bien ce qu’il se passe sur le réseau mais rien n’est tagué correctement et on passe trop de temps à chercher ce qu’on veut dans les résultats.
M’enfin, on finit par trouver les requêtes que passe l’application.
Pour les stats, je récupère plusieurs informations :

  • temps d’attente
  • météo du jour
  • heure de fermeture

Pour la météo, c’est fastoche, du XML. On obtient ainsi la tendance actuelle (pluie, soleil, nuages, etc), la vitesse du vent, les températures, les mm de pluie, la probabilité de pluie.
L’heure de fermeture elle aussi est facile à choper, mais on ne la connait qu’à partir de 14h.
Viennent ensuite ce qu’on veut vraiment, les temps d’attente ! Alors là c’est plus chiant, il y a un genre de « code » qui est envoyé et vérifié. Histoire de voir ce que c’est sans trop se faire chier : on dézippe l’application.
Ce faisant, on voit que l’application… bah c’est que du javascript et y’a tout de marqué dedans, incluant tout ce que j’ai passé du temps à chercher, yay. Bon c’est pas grave, ça permet d’être sûr de soi. Et puis on trouve aussi le fameux code envoyé qui n’est en fait qu’une concaténation puis du md5 de « Europa-Park », de la date actuelle et de « Webservice ».

Pour des soucis de rapidité et sûrement de langues, seuls des codes sont retournés. On a par exemple le code 853 qui correspond au « Wodan Timburcoaster ». Il y a pareil pour les types d’attractions : aventure, aquatique et montagnes russes ; comme le site ne les utilise pas, bah j’en parle pas.

Chose qui peut être vachement intéressante : les jours fériés. Si on voit qu’il y a une affluence monstre un certain jour sans savoir pourquoi, c’est pas vraiment utile et ça casse un peu le but du site. C’est donc grace à ce type et quelques modifs de ma part qu’on peut voir les jours fériés ainsi que les ponts sur le site.

 

Maintenant qu’on a tout, il faut le stocker, l’afficher. J’avais commencé sur une base de Django. J’ai dû faire une connerie quelque part étant donné qu’une page mettait 25 secondes à s’afficher… M’enfin, j’ai recommandé avec flask et ça marche niquel.
Une BDD stocke les jours et chaque relevé de temps d’attente contenant le nom de l’attraction ainsi que la date du relevé est lié à un jour.
Pour l’affichage, c’est du bootstrap fait à l’arrache et copié/collé bien comme il faut. Les pages, c’est des templates Jinja2, c’est cool.
Pour les graphiques, CanvaJs ça marche pas mal du tout, on peut même passer la souris dessus c’est kikoo.

Ce qui peut aussi intéresser outre les relevés par jours ce sont les moyennes. Les moyennes globales sont un peu inutiles, on se doute bien que le plus gros rollercoaster du parc aura plus d’attente que le château hanté, m’enfin.
Les relevés par horaire permettent de savoir quand les gens mangent, quand il y a des pics. Pour les attractions à l’entrée, le pic vers le matin ; pour les attractions aquatiques, vers l’après-midi ! Comme le parc ferme après 18h, il peut y avoir des trucs louches vu qu’il y a plus d’affluence vers 19h quand le parc ferme à 21h que quand il ferme à 20h.

 

C’était un site intéressant à coder, un peu chiant pour la partie web par moments, mais cool quand même. Pour le moment il y a environ 40 jours d’enregistrés dans la BDD et au fil du temps les stats seront plus fiables.
Ah ! j’allais oublier, l’URL… http://eurostats.eu/

One Comment

Répondre à Lapologne Annuler la réponse.

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *