Ce package vise à fournir une interface propre, performante et sans barrière avec des informations horaires du Münchner Verkehrsgesellschaft (MVG), responsable des transports publics à Munich. Il exporte la classe MvgApi pour récupérer des stations, des lignes et des départs de l'API JSON non officielle à https://www.mvg.de.
Ce projet n'est pas un projet officiel du Münchner Verkehrsgesellschaft (MVG) . Il a été développé comme un projet privé à partir du manque d'une API documentée et ouvertement accessible. Il reproduit simplement les demandes faites par https://www.mvg.de pour fournir un accès sans barrière aux informations locales.
Par conséquent, les restrictions d'utilisation suivantes de l'empreinte MVG s'appliquent à tous les utilisateurs de ce package :
Nos systèmes sont utilisés pour l'interaction directe du client. Le traitement de notre contenu ou de nos données par des tiers nécessite notre consentement express. À des fins privées et non commerciales, une utilisation modérée est tolérée sans notre consentement explicite. Toute forme d' exploration de données ne constitue pas une utilisation modérée . Nous nous réservons le droit de révoquer cette autorisation en principe ou dans des cas individuels. Veuillez diriger toutes les questions sur: [email protected]
(De https://www.mvg.de/impressum.html, consulté le 04. février 2023)
Le projet a été inspiré par deux packages existants:
mvg-live.de . En 2022, le site Web MVGLIVE n'existe plus et le package a été archivé. Bien que l'ancienne API fonctionne toujours pour certaines stations, elle ne le fait pas pour d'autres - principalement en raison des identifiants de station mis à jour. Par conséquent, le package est considéré comme obsolète et ne peut pas être utilisé pour de nouvelles conceptions.www.mvg.de/api/fahrinfo , qui a été hors ligne en 2024. Il a examiné les identificateurs de station mis à jour et a fourni la base d'autres projets tels que MVG-CLI.Alors pourquoi un autre package API MVG? En fin de compte, trois raisons étaient décisives:
www.mvg.de/api/bgw-pt/v3 , qui semble être plus performant que le précédent. Installez à partir de l'index de package Python (PYPI) à l'aide de pip :
pip install mvg
L'interface a été conçue pour être simple et intuitive. L'utilisation de base suit ces étapes:
MvgApi.station(station) par son nom et son lieu (par exemple "Universität, München" ) ou son identifiant de station mondial (par exemple "de:09162:70" ).MvgApi.nearby(latitude, longitude) trouve la station la plus proche.MvgApi(station) par son identifiant global..departures() pour récupérer des informations de l'API.Un exemple de base ressemble à ceci:
from mvg import MvgApi
station = MvgApi . station ( 'Universität, München' )
if station :
mvgapi = MvgApi ( station [ 'id' ])
departures = mvgapi . departures ()
print ( station , departures ) Les méthodes statiques MvgApi.stations() et MvgApi.lines() exposent une liste de toutes les stations disponibles et une liste de toutes les lignes disponibles à partir de points de terminaison API désignés. Bien que ces appels soient excellents pour référence, ils sont également assez étendus et ne doivent pas être utilisés dans une boucle de requête fréquente.
Les résultats de .departures(limit, offset, transport_types) peuvent être filtrés à l'aide des arguments suivants:
limit limite la sortie au nombre donné de départs, par défaut est 10offset ajoute un décalage (par exemple, à distance de marche de la station) en quelques minutes, par défaut à 0transport_types filtre le résultat par une liste des types de transport (par exemple [TransportType.UBAHN] )Un exemple filtré ressemble à ceci:
from mvg import MvgApi , TransportType
station = MvgApi . station ( 'Universität, München' )
if station :
mvgapi = MvgApi ( station [ 'id' ])
departures = mvgapi . departures (
limit = 3 ,
offset = 5 ,
transport_types = [ TransportType . UBAHN ])
print ( station , departures ) station() ou nearby() Résultats un dict :
{
'id': 'de:09162:70',
'name': 'Universität',
'place': 'München'
'latitude': 48.15007,
'longitude': 11.581
}
departures() Résultats Une list de dict :
[{
'time': 1668524580,
'planned': 1668524460,
'line': 'U3',
'destination': 'Fürstenried West',
'type': 'U-Bahn',
'icon': 'mdi:subway',
'cancelled': False,
'messages': []
}, ... ]
La classe MvgApi appelle en interne les méthodes asynchrones utilisant asyncio et aiohttp pour effectuer efficacement les demandes Web. Ces méthodes asynchrones sont marquées par le suffixe _async et peuvent être utilisées par les utilisateurs dans des projets avec du code simultané.
L'exemple de base mais avec des appels asynchrones ressemble à ceci:
import asyncio
from mvg import MvgApi
async def demo () -> None :
station = await MvgApi . station_async ( 'Universität, München' )
if station :
departures = MvgApi . departures_async ( station [ 'id' ])
print ( station , await departures )
loop = asyncio . get_event_loop ()
loop . run_until_complete ( demo ())