Dieses Paket zielt darauf ab, eine saubere, leistungsfähige und barrierefreie Schnittstelle zu Zeitplaninformationen des Münchner Verkehrsgesellschaft (MVG) bereitzustellen, der für den öffentlichen Verkehr in München verantwortlich ist. Es exportiert die Klasse MvgApi , um Stationen, Linien und Abweichungen von der inoffiziellen JSON -API unter https://www.mvg.de abzurufen.
Dieses Projekt ist kein offizielles Projekt aus dem Münchner Verkehrsgesellschaft (MVG) . Es wurde als privates Projekt aus mangelnden dokumentierten und offen zugänglichen API entwickelt. Es reproduziert lediglich die Anfragen von https://www.mvg.de, um einen barrierefreien Zugriff auf lokale Zeitplaninformationen zu gewährleisten.
Daher gelten die folgenden Nutzungsbeschränkungen des MVG -Abdrucks für alle Benutzer dieses Pakets :
Unsere Systeme werden für die direkte Kundeninteraktion verwendet. Die Verarbeitung unserer Inhalte oder Daten durch Dritte erfordert unsere ausdrückliche Zustimmung. Für private, nichtkommerzielle Zwecke wird die mäßige Verwendung ohne unsere explizite Zustimmung toleriert . Jede Form des Data Mining stellt keine mäßige Verwendung dar . Wir behalten uns das Recht vor, diese Genehmigung im Prinzip oder in Einzelfällen zu widerrufen. Bitte richten Sie alle Fragen an: [email protected]
(Von https://www.mvg.de/impressum.html, Zugriff am 04. Februar 2023)
Das Projekt wurde von zwei vorhandenen Paketen inspiriert:
mvg-live.de . Ab 2022 existiert die MVGlive -Website nicht mehr und das Paket wurde archiviert. Obwohl die alte API für einige Stationen immer noch funktioniert, ist dies nicht für andere geeignet - hauptsächlich aufgrund aktualisierter Stationskennungen. Daher wird das Paket als veraltet angesehen und kann nicht für neue Designs verwendet werden.www.mvg.de/api/fahrinfo basiert, die 2024 offline ging. Es wurde die aktualisierten Stationskennungen angesehen und bildete die Grundlage für andere Projekte wie MVG-Cli.Warum also eine weitere MVG -API -Paket? Am Ende waren drei Gründe entscheidend:
www.mvg.de/api/bgw-pt/v3 , die leistungsfähiger zu sein scheint als die vorherige. Installieren Sie aus dem Python Package Index (PYPI) mit pip :
pip install mvg
Die Schnittstelle wurde so konzipiert, dass sie einfach und intuitiv ist. Die grundlegende Nutzung folgt folgenden Schritten:
MvgApi.station(station) mit Namen und Ort (z. B. "Universität, München" ) oder seiner Global Station Identifier (z. B. "de:09162:70" ).MvgApi.nearby(latitude, longitude) die nächste Station.MvgApi(station) durch seine globale Kennung..departures() um Informationen aus der API abzurufen.Ein grundlegendes Beispiel sieht so aus:
from mvg import MvgApi
station = MvgApi . station ( 'Universität, München' )
if station :
mvgapi = MvgApi ( station [ 'id' ])
departures = mvgapi . departures ()
print ( station , departures ) Die statischen Methoden MvgApi.stations() und MvgApi.lines() enthüllen eine Liste aller verfügbaren Stationen und eine Liste aller verfügbaren Zeilen von bestimmten API -Endpunkten. Diese Anrufe sind zwar hervorragend als Referenz, aber sie sind auch ziemlich umfangreich und sollten nicht in einer häufigen Abfrageschleife verwendet werden.
Die Ergebnisse von .departures(limit, offset, transport_types) können mit den folgenden Argumenten gefiltert werden:
limit die Ausgabe auf die angegebene Anzahl der Abflüge, standardmäßig auf 10offset fügt in Minuten einen Offset (z.transport_types filtert das Ergebnis durch eine Liste von Transporttypen (z. B. [TransportType.UBAHN] )Ein filtriertes Beispiel sieht so aus:
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() oder nearby() Ergebnisse Ein dict :
{
'id': 'de:09162:70',
'name': 'Universität',
'place': 'München'
'latitude': 48.15007,
'longitude': 11.581
}
departures() Ergebnisse Eine list von dict :
[{
'time': 1668524580,
'planned': 1668524460,
'line': 'U3',
'destination': 'Fürstenried West',
'type': 'U-Bahn',
'icon': 'mdi:subway',
'cancelled': False,
'messages': []
}, ... ]
Die Klasse MvgApi erstellt intern asynchrone Methoden mithilfe von asyncio und aiohttp , um die Webanforderungen effizient durchzuführen. Diese asynchronen Methoden werden durch das Suffix _async gekennzeichnet und können von Benutzern in Projekten mit gleichzeitiger Code verwendet werden.
Das grundlegende Beispiel, aber mit asynchronen Anrufen sieht Folgendes aus:
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 ())