このパッケージは、ミュンヘンの公共交通機関を担当する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日にアクセス)
このプロジェクトは、2つの既存のパッケージに触発されました。
mvg-live.deの以前のMVGlive APIへのインターフェイスを提供します。 2022年の時点で、MVGlive Webサイトはもう存在せず、パッケージはアーカイブされています。古いAPIは依然として一部のステーションでは機能しますが、他のステーションではそうではありません - 主にステーション識別子が更新されたためです。したがって、パッケージは非推奨と見なされ、新しいデザインに使用することはできません。www.mvg.de/api/fahrinfoのAPIに基づいて2020年から実装を提供します。これは、更新されたステーション識別子を考慮し、MVG-CLIなどの他のプロジェクトの基礎を提供しました。では、なぜ別のMVG APIパッケージ?最終的には、3つの理由が決定的でした。
www.mvg.de/api/bgw-pt/v3 api/bgw-pt/v3の新しいAPIを使用しています。これは、前のものよりもパフォーマンスが高いようです。pipを使用して、Pythonパッケージインデックス(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になりますoffset数分でオフセット(たとえば、ステーションへの徒歩圏内)を追加し、デフォルトは0になりますtransport_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 ())