Este pacote tem como objetivo fornecer uma interface limpa, performante e sem barreira a informações de cronograma da Münchner Verkehrsgesellschaft (MVG), responsável pelo transporte público em Munique. Ele exporta a classe MvgApi para recuperar estações, linhas e partidas da API JSON não oficial em https://www.mvg.de.
Este projeto não é um projeto oficial do Münchner Verkehrsgesellschaft (MVG) . Foi desenvolvido como um projeto privado a partir da falta de uma API documentada e abertamente acessível. Simplesmente reproduz as solicitações feitas por https://www.mvg.de para fornecer um acesso sem barreira a informações de cronogramas locais.
Portanto, as seguintes restrições de uso da impressão MVG se aplicam a todos os usuários deste pacote :
Nossos sistemas são usados para interação direta do cliente. O processamento de nosso conteúdo ou dados por terceiros exige nosso consentimento expresso. Para fins privados e não comerciais, o uso moderado é tolerado sem o nosso consentimento explícito. Qualquer forma de mineração de dados não constitui uso moderado . Reservamo -nos o direito de revogar essa permissão em princípio ou em casos individuais. Por favor, direcione qualquer dúvida para: [email protected]
(de https://www.mvg.de/impressum.html, acessado em 04 de fevereiro de 2023)
O projeto foi inspirado por dois pacotes existentes:
mvg-live.de . A partir de 2022, o site da MVGLive não existe mais e o pacote foi arquivado. Embora a API antiga ainda funcione para algumas estações, não é para outras - principalmente devido a identificadores de estação atualizados. Portanto, o pacote é considerado depreciado e não pode ser usado para novos designs.www.mvg.de/api/fahrinfo , que ficou offline em 2024. Considerou os identificadores de estação atualizados e forneceu a base para outros projetos, como o MVG-CLI.Então, por que outro pacote de API MVG? No final, três razões foram decisivas:
www.mvg.de/api/bgw-pt/v3 , que parece ser mais performante que a anterior. Instale no Python Package Index (PYPI) usando pip :
pip install mvg
A interface foi projetada para ser simples e intuitiva. O uso básico segue estas etapas:
MvgApi.station(station) por seu nome e local (por exemplo, "Universität, München" ) ou seu identificador de estação global (por exemplo "de:09162:70" ).MvgApi.nearby(latitude, longitude) encontra a estação mais próxima.MvgApi(station) por seu identificador global..departures() para recuperar informações da API.Um exemplo básico se parece com o seguinte:
from mvg import MvgApi
station = MvgApi . station ( 'Universität, München' )
if station :
mvgapi = MvgApi ( station [ 'id' ])
departures = mvgapi . departures ()
print ( station , departures ) Os métodos estáticos MvgApi.stations() e MvgApi.lines() expõem uma lista de todas as estações disponíveis e uma lista de todas as linhas disponíveis dos pontos de extremidade da API designada. Embora essas chamadas sejam ótimas para referência, elas também são bastante extensas e não devem ser usadas em um loop de consulta frequente.
Os resultados de .departures(limit, offset, transport_types) podem ser filtrados usando os seguintes argumentos:
limit limita a saída para o número fornecido de partidas, padrão para 10offset adiciona um deslocamento (por exemplo, a uma curta distância da estação) em minutos, padrão para 0transport_types filtra o resultado de uma lista de tipos de transporte (por exemplo, [TransportType.UBAHN] )Um exemplo filtrado se parece com o seguinte:
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() resulta um dict :
{
'id': 'de:09162:70',
'name': 'Universität',
'place': 'München'
'latitude': 48.15007,
'longitude': 11.581
}
departures() resulta uma list de dict :
[{
'time': 1668524580,
'planned': 1668524460,
'line': 'U3',
'destination': 'Fürstenried West',
'type': 'U-Bahn',
'icon': 'mdi:subway',
'cancelled': False,
'messages': []
}, ... ]
A classe MvgApi chama internamente métodos assíncronos usando asyncio e aiohttp para executar as solicitações da Web com eficiência. Esses métodos assíncronos são marcados pelo sufixo _async e podem ser utilizados por usuários em projetos com código simultâneo.
O exemplo básico, mas com chamadas assíncronas, é assim:
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 ())