# « API » Divia — Python
Ce module servant d’« API » vous permet d’accéder aux horaires des prochains bus et tram du réseau dijonnais *Divia*, en temps réel, grâce au service *TOTEM*, ainsi qu’aux disponilités en temps réels des vélos et emplacements sur les stations *DiviaVélodi*, et ce directement depuis un script Python !
La partie « bus et tram » de cette bibliothèque est très largement inspirée (aussi bien sur le principe que dans la logique et les techniques utilisées) de [**divia-api** par **@gauthier-th**](https://github.com/gauthier-th/divia-api) (en JavaScript).
## Démo
Une démo de l’API est disponible en cliquant ici : [Démo](https://pda.firminlaunay.me/) (est c’est aussi [open-source](https://github.com/filau/pda_demo) !)
## Installation
Cette bibliothèque est disponible pour Python 3.6 et versions postérieures.
* Depuis [PyPI](https://pypi.org), avec [pip](https://pypi.org/project/pip/) :
```
$ pip install divia-api
```
* Manuellement, dans un dossier où vous avez décompressé [la dernière version](https://github.com/filau/python_divia_api/releases/latest) du module :
```
$ python setup.py install
```
## Exemple d’utilisation de l’API bus et tram
```python
from divia_api import DiviaAPI
api = DiviaAPI()
line = api.find_line("T2", 'R') # Récupération de la ligne 2 du tram, dans la direction « R » (« A » étant la valeur par défaut).
line = api.get_line("185") # Récupération de la ligne par son identifiant unique (ici le 185, qui correspond à la ligne 2 du tram, dans la direction « R ».
stop = line.find_stop("Darcy") # Récupération de l’arrêt « Darcy » pour cette ligne.
stop = line.get_stop("1494") # Récupération de l’arrêt « Darcy » pour cette ligne, à partir de son identifiant unique.
stop = api.find_stop("T2", "Darcy", 'R') # Les étapes précédentes (récupération de la ligne et de l’arrêt) peuvent également être combinées.
totem_result = stop.totem() # Interrogation du service TOTEM et récupération des prochains horaires. C’est une liste d’objets « datetime.datetime » qui est retournée par la fonction.
print(totem_result) # Affichage du résultat.
```
## Exemple de l’utilisation de l’API Vélodi
```python
from divia_api import VelodiAPI
velodi_api = VelodiAPI()
station = velodi_api.find_station("Lycée Carnot") # Récupération de la station DiviaVélodi « Lycée Carnot ».
station = velodi_api.get_station("34") # Récupération d’une station par son identifiant. Ici, l’identifiant « 34 » correspond à la station « Lycée Carnot ».
realtime = station.check() # Requête de données à jour sur la disponibilité des vélos et des emplacements dans cette station.
print(realtime.bikes, " ", realtime.docks) # Affichage du résultat (nombre de vélos disponibles et nombre de places disponibles sur la station).
realtime_all_stations = velodi_api.check_multiple_stations(velodi_api.stations) # Requête de données à jour sur l’intégralité des stations du réseau.
for station in realtime_all_stations:
print(f"Station {station.station.code} : {station}") # Affichage, pour chaque station du réseau, du numéro de la station et du résultat.
```
## __________
*Divia* est une marque déposée de *Keolis Dijon Multimodalité*. Nous ne sommes en aucun cas affiliés à *Keolis* ou à ses filiales et succursales.
Cette bibliothèque est ditribuée sous la [Licence publique générale GNU amoindrie, version 3](https://www.gnu.org/licenses/lgpl-3.0.fr.html).
© 2023, Firmin Launay ([hey@firminlaunay.me](mailto:hey@firminlaunay.me))
Raw data
{
"_id": null,
"home_page": "https://github.com/filau/python_divia_api",
"name": "divia-api",
"maintainer": "",
"docs_url": null,
"requires_python": "",
"maintainer_email": "",
"keywords": "divia,api,firmin,launay,dijon,bus,tram,velodi",
"author": "Firmin Launay",
"author_email": "hey@firminlaunay.me",
"download_url": "https://files.pythonhosted.org/packages/02/09/4354c6fc73b448887e2935af309b821f7efbc794abacdf2f80dcf814a600/divia-api-2.4.tar.gz",
"platform": null,
"description": "# \u00ab API \u00bb Divia \u2014 Python\n\nCe module servant d\u2019\u00ab API \u00bb vous permet d\u2019acc\u00e9der aux horaires des prochains bus et tram du r\u00e9seau dijonnais *Divia*, en temps r\u00e9el, gr\u00e2ce au service *TOTEM*, ainsi qu\u2019aux disponilit\u00e9s en temps r\u00e9els des v\u00e9los et emplacements sur les stations *DiviaV\u00e9lodi*, et ce directement depuis un script Python ! \nLa partie \u00ab bus et tram \u00bb de cette biblioth\u00e8que est tr\u00e8s largement inspir\u00e9e (aussi bien sur le principe que dans la logique et les techniques utilis\u00e9es) de [**divia-api** par **@gauthier-th**](https://github.com/gauthier-th/divia-api) (en JavaScript).\n\n## D\u00e9mo\n\nUne d\u00e9mo de l\u2019API est disponible en cliquant ici : [D\u00e9mo](https://pda.firminlaunay.me/) (est c\u2019est aussi [open-source](https://github.com/filau/pda_demo) !)\n\n## Installation\n\nCette biblioth\u00e8que est disponible pour Python 3.6 et versions post\u00e9rieures. \n \n* Depuis [PyPI](https://pypi.org), avec [pip](https://pypi.org/project/pip/) :\n```\n$ pip install divia-api\n```\n\n* Manuellement, dans un dossier o\u00f9 vous avez d\u00e9compress\u00e9 [la derni\u00e8re version](https://github.com/filau/python_divia_api/releases/latest) du module :\n```\n$ python setup.py install\n```\n\n## Exemple d\u2019utilisation de l\u2019API bus et tram\n\n```python\nfrom divia_api import DiviaAPI\n\napi = DiviaAPI()\n\nline = api.find_line(\"T2\", 'R') # R\u00e9cup\u00e9ration de la ligne 2 du tram, dans la direction \u00ab R \u00bb (\u00ab A \u00bb \u00e9tant la valeur par d\u00e9faut).\nline = api.get_line(\"185\") # R\u00e9cup\u00e9ration de la ligne par son identifiant unique (ici le 185, qui correspond \u00e0 la ligne 2 du tram, dans la direction \u00ab R \u00bb.\n\nstop = line.find_stop(\"Darcy\") # R\u00e9cup\u00e9ration de l\u2019arr\u00eat \u00ab Darcy \u00bb pour cette ligne.\nstop = line.get_stop(\"1494\") # R\u00e9cup\u00e9ration de l\u2019arr\u00eat \u00ab Darcy \u00bb pour cette ligne, \u00e0 partir de son identifiant unique.\n\nstop = api.find_stop(\"T2\", \"Darcy\", 'R') # Les \u00e9tapes pr\u00e9c\u00e9dentes (r\u00e9cup\u00e9ration de la ligne et de l\u2019arr\u00eat) peuvent \u00e9galement \u00eatre combin\u00e9es.\n\ntotem_result = stop.totem() # Interrogation du service TOTEM et r\u00e9cup\u00e9ration des prochains horaires. C\u2019est une liste d\u2019objets \u00ab datetime.datetime \u00bb qui est retourn\u00e9e par la fonction.\n\nprint(totem_result) # Affichage du r\u00e9sultat.\n```\n\n## Exemple de l\u2019utilisation de l\u2019API V\u00e9lodi\n\n```python\nfrom divia_api import VelodiAPI\n\nvelodi_api = VelodiAPI()\n\nstation = velodi_api.find_station(\"Lyc\u00e9e Carnot\") # R\u00e9cup\u00e9ration de la station DiviaV\u00e9lodi \u00ab Lyc\u00e9e Carnot \u00bb.\n\nstation = velodi_api.get_station(\"34\") # R\u00e9cup\u00e9ration d\u2019une station par son identifiant. Ici, l\u2019identifiant \u00ab 34 \u00bb correspond \u00e0 la station \u00ab Lyc\u00e9e Carnot \u00bb.\n\nrealtime = station.check() # Requ\u00eate de donn\u00e9es \u00e0 jour sur la disponibilit\u00e9 des v\u00e9los et des emplacements dans cette station.\n\nprint(realtime.bikes, \" \", realtime.docks) # Affichage du r\u00e9sultat (nombre de v\u00e9los disponibles et nombre de places disponibles sur la station).\n\nrealtime_all_stations = velodi_api.check_multiple_stations(velodi_api.stations) # Requ\u00eate de donn\u00e9es \u00e0 jour sur l\u2019int\u00e9gralit\u00e9 des stations du r\u00e9seau.\n\nfor station in realtime_all_stations:\n print(f\"Station {station.station.code} : {station}\") # Affichage, pour chaque station du r\u00e9seau, du num\u00e9ro de la station et du r\u00e9sultat.\n```\n\n## __________\n\n*Divia* est une marque d\u00e9pos\u00e9e de *Keolis Dijon Multimodalit\u00e9*. Nous ne sommes en aucun cas affili\u00e9s \u00e0 *Keolis* ou \u00e0 ses filiales et succursales. \n \nCette biblioth\u00e8que est ditribu\u00e9e sous la [Licence publique g\u00e9n\u00e9rale GNU amoindrie, version 3](https://www.gnu.org/licenses/lgpl-3.0.fr.html). \n\u00a9 2023, Firmin Launay ([hey@firminlaunay.me](mailto:hey@firminlaunay.me))\n\n\n",
"bugtrack_url": null,
"license": "LGPL-3.0",
"summary": "divia_api is a Python library that allows to retrieve the timetable of Divia\u2019s bus and tramways, along with some infos about DiviaV\u00e9lodi bikes, straight from a Python script.",
"version": "2.4",
"project_urls": {
"Download": "https://github.com/filau/python_divia_api/archive/refs/tags/2.4.tar.gz",
"Homepage": "https://github.com/filau/python_divia_api"
},
"split_keywords": [
"divia",
"api",
"firmin",
"launay",
"dijon",
"bus",
"tram",
"velodi"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "02094354c6fc73b448887e2935af309b821f7efbc794abacdf2f80dcf814a600",
"md5": "424e3a077e67327808ee4d3253ddfbac",
"sha256": "20697e8137aa930f2b1151f84be5ccd66b52965007adb860486d418c59613f40"
},
"downloads": -1,
"filename": "divia-api-2.4.tar.gz",
"has_sig": false,
"md5_digest": "424e3a077e67327808ee4d3253ddfbac",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 11337,
"upload_time": "2023-09-18T20:08:12",
"upload_time_iso_8601": "2023-09-18T20:08:12.159750Z",
"url": "https://files.pythonhosted.org/packages/02/09/4354c6fc73b448887e2935af309b821f7efbc794abacdf2f80dcf814a600/divia-api-2.4.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-09-18 20:08:12",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "filau",
"github_project": "python_divia_api",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "requests",
"specs": []
}
],
"lcname": "divia-api"
}