Este paquete tiene como objetivo proporcionar una interfaz limpia, rentable y sin barreras a la información del horario del Münchner Verkehrsgesellschaft (MVG), responsable del transporte público en Munich. Exporta la clase MvgApi para recuperar estaciones, líneas y desviaciones de la API JSON no oficial en https://www.mvg.de.
Este proyecto no es un proyecto oficial del Münchner Verkehrsgesellschaft (MVG) . Fue desarrollado como un proyecto privado por falta de una API documentada y abiertamente accesible. Simplemente reproduce las solicitudes realizadas por https://www.mvg.de para proporcionar un acceso gratuito a la información local de horario local.
Por lo tanto, las siguientes restricciones de uso de la impronta MVG se aplican a todos los usuarios de este paquete :
Nuestros sistemas se utilizan para la interacción directa del cliente. El procesamiento de nuestro contenido o datos por parte de terceros requiere nuestro consentimiento expreso. Para fines privados y no comerciales, el uso moderado se tolera sin nuestro consentimiento explícito. Cualquier forma de minería de datos no constituye un uso moderado . Nos reservamos el derecho de revocar este permiso en principio o en casos individuales. Dirija cualquier pregunta a: [email protected]
(Desde https://www.mvg.de/impressum.html, accedido el 04 de febrero de 2023)
El proyecto se inspiró en dos paquetes existentes:
mvg-live.de . A partir de 2022, el sitio web MVGlive ya no existe y el paquete ha sido archivado. Aunque la antigua API todavía funciona para algunas estaciones, no para otras, principalmente debido a los identificadores actualizados de la estación. Por lo tanto, el paquete se considera en desuso y no se puede utilizar para nuevos diseños.www.mvg.de/api/fahrinfo , que se desconectó en 2024. Consideró los identificadores de estación actualizados y proporcionó la base para otros proyectos como MVG-CLI.Entonces, ¿por qué otro paquete de API MVG? Al final, tres razones fueron decisivas:
www.mvg.de/api/bgw-pt/v3 , que parece ser más desempeñada que la anterior. Instale desde el Índice de paquetes de Python (PYPI) usando pip :
pip install mvg
La interfaz fue diseñada para ser simple e intuitiva. El uso básico sigue estos pasos:
MvgApi.station(station) por su nombre y lugar (por ejemplo, "Universität, München" ) o su identificador de estación global (por ejemplo, "de:09162:70" ).MvgApi.nearby(latitude, longitude) encuentra la estación más cercana.MvgApi(station) por su identificador global..departures() para recuperar información de la API.Un ejemplo básico se ve así:
from mvg import MvgApi
station = MvgApi . station ( 'Universität, München' )
if station :
mvgapi = MvgApi ( station [ 'id' ])
departures = mvgapi . departures ()
print ( station , departures ) Los métodos estáticos MvgApi.stations() y MvgApi.lines() exponen una lista de todas las estaciones disponibles y una lista de todas las líneas disponibles de los puntos finales de API designados. Si bien estas llamadas son excelentes para referencia, también son bastante extensas y no deben usarse dentro de un bucle de consulta frecuente.
Los resultados de .departures(limit, offset, transport_types) se pueden filtrar utilizando los siguientes argumentos:
limit limita la salida al número dado de salidas, por defecto a 10offset agrega un desplazamiento (por ejemplo, a poca distancia de la estación) en minutos, predeterminado a 0transport_types filtra el resultado mediante una lista de tipos de transporte (por ejemplo [TransportType.UBAHN] )Un ejemplo filtrado se ve así:
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() o nearby() resultados un dict :
{
'id': 'de:09162:70',
'name': 'Universität',
'place': 'München'
'latitude': 48.15007,
'longitude': 11.581
}
departures() Resulta una list de dict :
[{
'time': 1668524580,
'planned': 1668524460,
'line': 'U3',
'destination': 'Fürstenried West',
'type': 'U-Bahn',
'icon': 'mdi:subway',
'cancelled': False,
'messages': []
}, ... ]
La clase MvgApi llama internamente métodos asíncronos utilizando asyncio y aiohttp para realizar las solicitudes web de manera eficiente. Estos métodos asincrónicos están marcados por el sufijo _async y pueden ser utilizados por usuarios en proyectos con código concurrente.
El ejemplo básico pero con llamadas asíncronas se ve así:
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 ())