이 패키지는 뮌헨의 대중 교통을 담당하는 Münchner Verkehrsgesellschaft (MVG)의 시간표 정보에 대한 깨끗하고 성능 및 장벽이없는 인터페이스를 제공하는 것을 목표로합니다. https://www.mvg.de의 비공식 JSON API에서 스테이션, 라인 및 출발을 검색하기 위해 MvgApi 클래스를 내보내는 것입니다.
이 프로젝트는 Münchner Verkehrsgesellschaft (MVG)의 공식 프로젝트가 아닙니다 . 문서화되고 공개적으로 액세스 가능한 API가 부족하여 개인 프로젝트로 개발되었습니다. 그것은 단순히 로컬 시간표 정보에 대한 장벽없는 액세스를 제공하기 위해 https://www.mvg.de의 요청을 재현합니다.
따라서이 패키지의 모든 사용자에게는 MVG 임명의 다음 사용 제한이 적용됩니다 .
당사의 시스템은 직접 고객 상호 작용에 사용됩니다. 제 3자가 컨텐츠 또는 데이터를 처리하려면 우리의 명시적인 동의가 필요합니다. 개인적이고 비상업적 목적으로, 우리의 명시 적 동의없이 적당한 사용이 허용됩니다 . 모든 형태의 데이터 마이닝은 중간 정도의 사용을 구성하지 않습니다 . 우리는 원칙적으로 또는 개별 경우 에이 허가를 철회 할 권리가 있습니다. 질문이 있으시면 [email protected]
(https://www.mvg.de/impressum.html에서, 04 년 2 월에 액세스
이 프로젝트는 기존 두 가지 패키지에서 영감을 얻었습니다.
mvg-live.de 의 이전 MVGLIVE API에 대한 인터페이스를 제공합니다. 2022 년 현재 MVGlive 웹 사이트는 더 이상 존재하지 않으며 패키지는 보관되었습니다. 이전 API는 여전히 일부 스테이션에서 작동하지만 다른 스테이션 식별자로 인해 다른 스테이션을위한 것이 아닙니다. 따라서 패키지는 감가 상각 된 것으로 간주되며 새로운 디자인에는 사용할 수 없습니다.www.mvg.de/api/fahrinfo 의 API를 기반으로 2020 년부터 구현을 제공합니다. 업데이트 된 스테이션 식별자를 고려하고 MVG-CLI와 같은 다른 프로젝트의 기초를 제공했습니다.그렇다면 왜 또 다른 MVG API 패키지입니까? 결국 세 가지 이유는 결정적이었습니다.
www.mvg.de/api/bgw-pt/v3 에서 새로운 API를 사용합니다. pip 사용하여 Python Package Index (PYPI)에서 설치하십시오.
pip install mvg
인터페이스는 단순하고 직관적으로 설계되었습니다. 기본 사용량은 다음 단계를 따릅니다.
"Universität, München" ) 또는 글로벌 스테이션 식별자 (예 : "de:09162:70" )로 MvgApi.station(station) 사용하여 스테이션을 찾으십시오.MvgApi.nearby(latitude, longitude) 가장 가까운 스테이션을 찾습니다.MvgApi(station) 사용하여 API 인스턴스를 만듭니다..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 제한 출력을 주어진 출발 수로, 기본값 10으로 제한합니다.offsettransport_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() 결과 dict list 을 결과 :
[{
'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 ())