該軟件包旨在為MünchnerVerkehrsgesellschaft (MVG)的時間表提供乾淨,表現和無障礙的界面,該信息負責慕尼黑公共交通。它將MvgApi級別導出,以檢索https://www.mvg.de的非官方JSON API的站點和出發。
該項目不是MünchnerVerkehrsgesellschaft(MVG)的官方項目。它是由於缺乏記錄和公開訪問的API而開發的。它只需複制https://www.mvg.de提供的請求,以提供對本地時間表信息的無障礙訪問。
因此, MVG烙印的以下用法限制確實適用於此軟件包的所有用戶:
我們的系統用於直接客戶互動。第三方處理我們的內容或數據需要我們的明確同意。出於私人,非商業目的,未經我們明確的同意,可以容忍中等用途。任何形式的數據挖掘都不構成中等用途。我們保留原則上或在個人情況下撤銷此許可的權利。請將任何問題都引向:[email protected]
(摘自https://www.mvg.de/impressum.html,於2023年2月4日訪問)
該項目的靈感來自兩個現有軟件包:
mvg-live.de的前MVGLIVE API提供了一個接口。截至2022年,MVGLIVE網站不再存在,並且包裝已存檔。儘管舊的API仍然適用於某些電台,但它不適合其他電台 - 主要是由於更新的電台標識符。因此,該軟件包被視為棄用,不能用於新設計。www.mvg.de/api/fahrinfo ,它於2024年離線。它考慮了更新的電台標識符,並為MVG-CLI等其他項目提供了基礎。那麼為什麼另一個MVG API軟件包呢?最後,三個原因是決定性的:
www.mvg.de/api/bgw-pt/v3上使用了新的API,該網站的性能似乎比上一個更具性能。使用pip從Python軟件包索引(PYPI)安裝:
pip install mvg
該界面設計為簡單而直觀。基本用法遵循以下步驟:
MvgApi.station(station)以其名稱和地點(例如"Universität, München" )或其全球站標識符(例如"de:09162:70" )找到一個站。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將輸出限制為給定數量的出發數,默認為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()結果dict list :
[{
'time': 1668524580,
'planned': 1668524460,
'line': 'U3',
'destination': 'Fürstenried West',
'type': 'U-Bahn',
'icon': 'mdi:subway',
'cancelled': False,
'messages': []
}, ... ]
該類MvgApi在內部使用asyncio和aiohttp調用異步方法,以有效地執行Web請求。這些異步方法由後綴_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 ())