该软件包旨在为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 ())