Этот пакет направлен на то, чтобы обеспечить чистый, исполнительный и без барьера интерфейс для расписания информации о Мюнхнере Веркерсгеселшхафте (MVG), ответственной за общественный транспорт в Мюнхене. Он экспортирует класс MvgApi в поиск станций, линий и вылетов от неофициального API JSON по адресу https://www.mvg.de.
Этот проект не является официальным проектом от Münchner Verkehrsgesellschaft (MVG) . Он был разработан как частный проект из -за отсутствия документированного и открыто доступного API. Он просто воспроизводит запросы, сделанные https://www.mvg.de, предоставить бесплатный доступ к локальной информации.
Таким образом, следующие ограничения на использование от отпечатка MVG применяются ко всем пользователям этого пакета :
Наши системы используются для прямого взаимодействия с клиентами. Обработка нашего контента или данных третьими лицами требует нашего явного согласия. В частных, некоммерческих целях умеренное использование терпимо без нашего явного согласия. Любая форма интеллектуального анализа данных не является умеренным использованием . Мы оставляем за собой право отозвать это разрешение в принципе или в отдельных случаях. Пожалуйста, направьте любые вопросы: [email protected]
(От https://www.mvg.de/impressum.html, доступ к 04. Февраль 2023 г.)
Проект был вдохновлен двумя существующими пакетами:
mvg-live.de . По состоянию на 2022 год веб -сайт MVGlive больше не существует, и пакет был заархивирован. Хотя старый API все еще работает для некоторых станций, он не для других - в основном из -за обновленных идентификаторов станций. Следовательно, пакет считается устаревшим и не может использоваться для новых дизайнов.www.mvg.de/api/fahrinfo , который в 2024 году вышел из строя. Он рассмотрел обновленные идентификаторы станции и предоставил основу для других проектов, таких как MVG-CLI.Так почему же другой пакет MVG API? В конце концов три причины были решающими:
www.mvg.de/api/bgw-pt/v3 , который кажется более эффективным, чем предыдущий. Установите из индекса пакета Python (PYPI) с помощью pip :
pip install mvg
Интерфейс был разработан, чтобы быть простым и интуитивно понятным. Основное использование следует этим шагам:
MvgApi.station(station) по ее названию и месту (например, "Universität, München" ) или его глобальный идентификатор станции (например "de:09162:70" ).MvgApi.nearby(latitude, longitude) находит ближайшую станцию.MvgApi(station) с помощью его глобального идентификатора..departures() , чтобы получить информацию из API.Основной пример выглядит следующим образом:
from mvg import MvgApi
station = MvgApi . station ( 'Universität, München' )
if station :
mvgapi = MvgApi ( station [ 'id' ])
departures = mvgapi . departures ()
print ( station , departures ) Статические методы MvgApi.stations() и MvgApi.lines() разоблачают список всех доступных станций и список всех доступных строк из назначенных конечных точек API. Хотя эти вызовы отлично подходят для справки, они также довольно обширны и не должны использоваться в частых циклах запроса.
Результаты .departures(limit, offset, transport_types) могут быть отфильтрованы с использованием следующих аргументов:
limit ограничивает вывод заданным количеством вылетов, по умолчанию до 10offset добавляет смещение (например, в нескольких минутах ходьбы до станции) в минуты, по умолчанию к 0transport_types фильтрует результат по списку типов транспорта (например [TransportType.UBAHN] )Отфильтрованный пример выглядит следующим образом:
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() или nearby() Результаты dict :
{
'id': 'de:09162:70',
'name': 'Universität',
'place': 'München'
'latitude': 48.15007,
'longitude': 11.581
}
departures() Результаты list dict :
[{
'time': 1668524580,
'planned': 1668524460,
'line': 'U3',
'destination': 'Fürstenried West',
'type': 'U-Bahn',
'icon': 'mdi:subway',
'cancelled': False,
'messages': []
}, ... ]
Класс MvgApi внутренне вызывает асинхронные методы с использованием asyncio и aiohttp для эффективного выполнения веб -запросов. Эти асинхронные методы отмечены суффиксом _async и могут использоваться пользователями в проектах с одновременным кодом.
Основной пример, но с асинхронными вызовами выглядит так:
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 ())