GithubHelp home page GithubHelp logo

outadoc / twisto-api Goto Github PK

View Code? Open in Web Editor NEW
3.0 4.0 1.0 433 KB

API JSON pour Twisto, le réseau de bus et tram de Caen.

Home Page: http://dev.outadoc.fr

License: GNU General Public License v3.0

PHP 100.00%

twisto-api's Introduction

Twisto/Timeo Real-time API

Mise en garde

Cette API n'est plus franchement utile depuis que j'ai découvert l'existence de l'API officielle un peu cachée. Utilisez-la de préférence, l'API non-officielle de ce repo ne sera plus mise à jour.

Introduction

Le réseau Twisto est le réseau de bus et tram de la ville de Caen, géré par Viacités. Malheureusement, ce syndicat ne propose pas d'API pour accéder à ses services qui se vantent pourtant d'être disponibles sur un maximum d'appareils possible.

Cette API non-officielle comble partiellement ce manque en vous permettant, notamment, d'obtenir en temps réel et au format JSON les horaires des prochains bus Twisto, de la ville de Caen.

Vous pourrez également lister les lignes de bus, directions et arrêts disponibles.

Fonctionnement

L'API est écrite en PHP et repose sur le système Timeo de Actigraph, disponible sur les sites officiels de Twisto et les applications mobiles.

Utilisation

Appelez le script twisto-api.php avec différentes variables GET (ou POST) en fonction du résultat souhaité.
Le résultat est renvoyé sous forme d'un string JSON.

Lister les lignes de bus/tram

twisto-api.php?func=getLines

Exemple de résultat :

[
	{"id": "TRAM", "name": "TRAM"},
	{"id": "1", "name": "Lianes 1"},
	{"id": "2", "name": "Lianes 2"},
	{"id": "3", "name": "Lianes 3"},
	{"id": "4", "name": "Lianes 4"},
	{"id": "5", "name": "Ligne 5"},
	{"id": "6", "name": "Ligne 6"},
	{"id": "7", "name": "Ligne 7"},
	{"id": "8", "name": "Ligne 8"},
	{"id": "9", "name": "Ligne 9"},
	...
	{"id": "NUIT", "name": "Ligne Noctibus"}
]

L'identifiant obtenu pour chaque ligne pourra servir pour les autres fonctions du script.


Lister les directions pour une ligne donnée

twisto-api.php?func=getDirections&line=XX

...où XX est l'identifiant de la ligne.

Exemple de requête :

twisto-api.php?func=getDirections&line=11

Exemple de résultat :

[
	{"id": "A", "name": "Cuverville mairie"},
	{"id": "R", "name": "Bretteville l'enclos"}
]

L'identifiant est A pour "aller", ou R pour "retour".


Lister les arrêts pour une ligne et une direction données

twisto-api.php?func=getStops&line=XX&direction=A|R

...où XX est l'identifiant de la ligne, et la direction est A ou R.

Exemple de requête :

twisto-api.php?func=getStops&line=11&direction=A

Exemple de résultat :

[
	{"id": "5421", 	"name": "50 acres"},
	{"id": "11", 	"name": "Bibliotheque"},
	{"id": "4072", 	"name": "Bois claquet"},
	{"id": "4082", 	"name": "Briere"},
	{"id": "3532", 	"name": "Carrefour de la liberte"},
	{"id": "4112",	"name": "Charmettes"},
	{"id": "4122", 	"name": "Clair soleil"},
	{"id": "511", 	"name": "Creux au renard"},
	{"id": "1892", 	"name": "Demi-lune"},
	{"id": "121", 	"name": "Demoge"},
	{"id": "2052", 	"name": "Edmond rostand"},
	{"id": "5461", 	"name": "Eglise de bretteville"},
	...
	{"id": "4392", 	"name": "Vallee barrey"}
]

Lister les prochains bus pour UNE ligne, UNE direction et UN arrêt

twisto-api.php?func=getSchedule&line=XX&direction=A|R&stop=XXXX

...où XX est l'identifiant de la ligne, la direction est A ou R et XXXX est l'identifiant de l'arrêt.

Exemple de requête :

twisto-api.php?func=getSchedule&line=11&direction=A&stop=5421

Exemple de résultat :

[
	{
		"line": "Ligne 11",
		"direction": "Cuverville mairie",
		"stop": "Arrêt 50 acres",
		"next": [
			"Dans 15 minutes", 
			"Dans 35 minutes"
		]
	}
]

Lister les prochains bus pour plusieurs lignes/directions/arrêts à la fois

Pour cela, on envoie directement un cookie (le même que celui utilisé par le système officiel).
Le cookie est de la forme ARRÊT|LIGNE|DIRECTION;ARRÊT|LIGNE|DIRECTION;....

Exemple de requête (non-URLencoded) :

twisto-api.php?func=getSchedule&data=5421|11|A;12|11|R;251|3|A

Exemple de requête (URLencoded) :

twisto-api.php?func=getSchedule&data=5421%7C11%7CA%3B12%7C11%7CR%3B251%7C3%7CA

Exemple de résultat :

[
	{
		"line": "Ligne 11",
		"direction": "Cuverville mairie",
		"stop": "Arrêt 50 acres",
		"next": [
			"Dans 15 minutes", 
			"Dans 35 minutes"
		]
	}, {
		"line": "Ligne 11",
		"direction": "Bretteville l'enclos",
		"stop": "Arrêt Bibliotheque",
		"next": [
			"Dans 3 minutes", 
			"Dans 25 minutes"
		]
	}, {
		"line": "Lianes 3",
		"direction": "Herouville st-clair",
		"stop": "Arrêt Bicoquet",
		"next": [
			"Passage imminent",
			"À 0 H 25"
		]
	}
]

Gestion des erreurs

Si une erreur survient durant l'exécution du script, un message d'erreur devrait être inclus dans le JSON retourné, ainsi qu'une code de statut HTTP 500 (ou 400 en cas de paramètres manquants).

Exemples :

{"error": "Could not resolve host: dev.actigraph.fr; nodename nor servname provided, or not known"}

Si plus d'informations majeures sur le problème sont disponibles, un message complémentaire sera ajouté :

{
	"error": "Service indisponible",
	"message": "Chers clients, le service \"Prochains passages\" est actuellement indisponible. Nous faisons le maximum pour le rétablir au plus vite. Merci de votre compréhension."
}

twisto-api's People

Contributors

outadoc avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

iliasredissi

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.