Navitia est un système qui permet de connaitre tout se qu’il y a à savoir sur les transports en commun en temps réel dans plusieurs villes de plusieurs pays.
Pour ma part, j’ai déjà testé avec Paris (fr-idf) et Toulouse (fr-sw), ces deux villes sont couvertes. Contrairement à Lyon (fr-se), qui après quelques minutes de test ne me semble pas couverte.
Pour faire une requête à l’API Navitia, il faut se créer un compte (gratuit) sur leur site (navitia.io) et récupérer le token pour le mettre dans l’adresse à chaque requête (avant @api.navitia.io).
Le code de l’exemple ci dessous va effectuer une requête cURL en PHP sur l’API Navitia et retourner une chaine en JSON avec la liste des 5 prochains bus au départ (de la station ROUGET DE LISLE à Paris).
$i = 0; $token = monToken; $url = "https://".$token."@api.navitia.io/v1/coverage/fr-idf/stop_areas/stop_area%3AOIF%3ASA%3A4%3A52/commercial_modes/commercial_mode%3Abus/departures?count=5"; // Initiate curl $ch = curl_init(); // Disable SSL verification curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // Will return the response, if false it print the response curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Set the url curl_setopt($ch, CURLOPT_URL,$url); // Execute $retourApi=curl_exec($ch); // Closing curl_close($ch); $retourApi = json_decode($retourApi, true); while ($retourApi["departures"][$i]){ $date = new DateTime($retourApi["departures"][$i]["stop_date_time"]["departure_date_time"]); $retourjson["bus"][$i]["heure"] = $date->format("H:i"); $retourjson["bus"][$i]["direction"] = $retourApi["departures"][$i]["display_informations"]["direction"]; $retourjson["bus"][$i]["color"] = $retourApi["departures"][$i]["display_informations"]["color"]; $retourjson["bus"][$i]["textcolor"] = $retourApi["departures"][$i]["display_informations"]["text_color"]; $retourjson["bus"][$i]["ligne"] = $retourApi["departures"][$i]["display_informations"]["label"]; $i++; } header('Content-Type: application/json;'); echo json_encode($retourjson, JSON_UNESCAPED_UNICODE);
Voici donc le retour de ce code :
"bus": [{ "heure": "23:34", "direction": "AEROPORT D'ORLY-TERMINAL SUD (Paray-Vieille-Poste)", "color": "ed1b2a", "textcolor": "ffffff", "ligne": "183" }, { "heure": "23:34", "direction": "Choisy-le-roi Gare RER (Choisy-le-Roi)", "color": "FF8000", "textcolor": "000000", "ligne": "03" }, { "heure": "23:35", "direction": "LA CROIX DE BERNY-RER (Antony)", "color": "216EB4", "textcolor": "FFFFFF", "ligne": "TVM" }, { "heure": "23:36", "direction": "CARREFOUR DE LA RESISTANCE (Thiais)", "color": "89C7D6", "textcolor": "000000", "ligne": "393" }, { "heure": "23:36", "direction": "MARCHE INTERNATIONAL DE RUNGIS (Chevilly-Larue)", "color": "f68f4b", "textcolor": "000000", "ligne": "103" }
Ici, la valeur color est la couleur de la ligne. Pour prendre un exemple concret, pour la ligne C du RER on aura le code couleur du jaune.
textcolor est la couleur du texte à afficher (vous comprendrez avec la prochaine capture d’écran).
Voici un type de rendu possible.
Navitia a mis en place un nouvel outils pour tester/construire les urls de requête : Navitia Playground
Pour plus d’informations sur les requêtes cURL, vous pouvez consulter la doc officielle (php.net/curl) ou cet article (dewep.net/curl) qui propose plusieurs façons d’utiliser les requêtes (récupérer la source d’une page externe, envoyer une requête POST, …).
Enjoy !
1 Commentaire Laisser un commentaire