Paket ini bertujuan untuk menyediakan antarmuka yang bersih, berkinerja, dan bebas penghalang untuk informasi jadwal dari Münchner Verkehrsgesellschaft (MVG), yang bertanggung jawab untuk transportasi umum di Munich. Ini mengekspor kelas MvgApi untuk mengambil stasiun, garis, dan keberangkatan dari JSON API tidak resmi di https://www.mvg.de.
Proyek ini bukan proyek resmi dari Münchner Verkehrsgesellschaft (MVG) . Ini dikembangkan sebagai proyek pribadi karena kurangnya API yang terdokumentasi dan dapat diakses secara terbuka. Ini hanya mereproduksi permintaan yang dibuat oleh https://www.mvg.de untuk memberikan akses bebas penghalang ke informasi jadwal lokal.
Oleh karena itu, pembatasan penggunaan berikut dari jejak MVG berlaku untuk semua pengguna paket ini :
Sistem kami digunakan untuk interaksi pelanggan langsung. Pemrosesan konten atau data kami oleh pihak ketiga memerlukan persetujuan tertulis kami. Untuk tujuan pribadi, non-komersial, penggunaan sedang ditoleransi tanpa persetujuan eksplisit kami. Segala bentuk penambangan data bukan merupakan penggunaan moderat . Kami berhak untuk mencabut izin ini pada prinsipnya atau dalam kasus individual. Harap arahkan pertanyaan ke: [email protected]
(Dari https://www.mvg.de/impressum.html, diakses pada 04. Feb 2023)
Proyek ini terinspirasi oleh dua paket yang ada:
mvg-live.de . Pada tahun 2022 situs web MVGlive tidak ada lagi dan paket telah diarsipkan. Meskipun API lama masih berfungsi untuk beberapa stasiun, itu tidak untuk yang lain - terutama karena pengidentifikasi stasiun yang diperbarui. Oleh karena itu, paket dianggap sudah usang dan tidak dapat digunakan untuk desain baru.www.mvg.de/api/fahrinfo , yang secara offline pada tahun 2024. Ini dianggap sebagai pengidentifikasi stasiun yang diperbarui dan memberikan dasar untuk proyek-proyek lain seperti MVG-CLI.Jadi mengapa paket API MVG lain? Pada akhirnya tiga alasannya menentukan:
www.mvg.de/api/bgw-pt/v3 , yang tampaknya lebih berkinerja lebih dari yang sebelumnya. Instal dari Indeks Paket Python (PYPI) menggunakan pip :
pip install mvg
Antarmuka dirancang agar sederhana dan intuitif. Penggunaan dasar mengikuti langkah -langkah ini:
MvgApi.station(station) dengan nama dan tempatnya (misalnya "Universität, München" ) atau pengidentifikasi stasiun globalnya (mis "de:09162:70" ).MvgApi.nearby(latitude, longitude) menemukan stasiun terdekat.MvgApi(station) oleh pengidentifikasi globalnya..departures() untuk mengambil informasi dari API.Contoh dasar terlihat seperti ini:
from mvg import MvgApi
station = MvgApi . station ( 'Universität, München' )
if station :
mvgapi = MvgApi ( station [ 'id' ])
departures = mvgapi . departures ()
print ( station , departures ) Metode statis MvgApi.stations() dan MvgApi.lines() mengekspos daftar semua stasiun yang tersedia dan daftar semua baris yang tersedia dari titik akhir API yang ditunjuk. Meskipun panggilan ini bagus untuk referensi, mereka juga cukup luas dan tidak boleh digunakan dalam lingkaran kueri yang sering.
Hasil dari .departures(limit, offset, transport_types) dapat disaring menggunakan argumen berikut:
limit batas output ke jumlah keberangkatan yang diberikan, default ke 10offset menambahkan offset (misalnya jarak berjalan kaki ke stasiun) dalam hitungan menit, default ke 0transport_types menyaring hasil dengan daftar jenis transportasi (misalnya [TransportType.UBAHN] )Contoh yang difilter terlihat seperti ini:
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() atau nearby() menghasilkan dict :
{
'id': 'de:09162:70',
'name': 'Universität',
'place': 'München'
'latitude': 48.15007,
'longitude': 11.581
}
departures() Hasil list dict :
[{
'time': 1668524580,
'planned': 1668524460,
'line': 'U3',
'destination': 'Fürstenried West',
'type': 'U-Bahn',
'icon': 'mdi:subway',
'cancelled': False,
'messages': []
}, ... ]
Kelas MvgApi secara internal memanggil metode asinkron menggunakan asyncio dan aiohttp untuk melakukan permintaan web secara efisien. Metode asinkron ini ditandai oleh akhiran _async dan dapat digunakan oleh pengguna dalam proyek dengan kode bersamaan.
Contoh dasar tetapi dengan panggilan asinkron terlihat seperti ini:
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 ())