3 个版本
0.1.2 | 2024年2月24日 |
---|---|
0.1.1 | 2024年2月22日 |
0.1.0 | 2024年2月22日 |
#1481 in 网页编程
86 每月下载量
12KB
114 代码行
关于
此 crate 提供了一个 Rust API,用于与未记录的 MVG (Münchner Verkehrsgesellschaft) API 进行通信。
请参阅下面的示例部分,该部分展示了如何查询慕尼黑及周边地区的公共交通时刻表信息等。
由于在 MVG 开发者网站 上找不到有关官方 API 的信息,因此归功于 此 Python 项目,它记录了一些可用的端点。
目前,这还是一个正在进行的工程项目,因为只实现了“成功路径”解决方案,该方案基本上只记录了 API 端点。
免责声明
这不是一个官方项目。请参考官方 MVG 网站上的 版权声明,并尊重其中的版权部分,该部分指出
[...] 我们的系统用于直接与客户互动。第三方处理我们的内容或数据需要我们明确的同意。 未经我们明确的同意,仅允许在私人、非商业用途下适度使用。 任何形式的数据挖掘都不属于适度使用 [...]
示例
#[tokio::main]
async fn main() {
// prints
// "Starnberg Nord"
// "P+R Starnberg Nord"
// "B+R Starnberg-Nord 02 (Hans-Zellner-Weg)"
let locations = mvg::locations("Starnberg Nord").await.unwrap();
for l in locations.iter().take(3) {
println!("{:?}", l.name.as_ref().unwrap());
}
// prints e.g.
// SBAHN S6 Tutzing - 20:51:00
// SBAHN S6 Ostbahnhof - 21:01:00
// SBAHN S6 Tutzing - 21:04:00
let starnberg_nord_gid = locations.first().unwrap().global_id.as_ref().unwrap();
mvg::departures(starnberg_nord_gid)
.await
.unwrap()
.iter()
.take(3)
.for_each(|d| {
println!(
"{} {} {} - {}",
d.transport_type.as_ref().unwrap(),
d.label.as_ref().unwrap(),
d.destination.as_ref().unwrap(),
ts_to_hms(d.realtime_departure_time.unwrap() / 1000)
)
});
// prints
// Marienplatz (Theatinerstraße) - 142 meters
// Marienplatz - 189 meters
// Marienplatz (Rindermarkt) - 338 meters
let frauenkirche = (48.138611, 11.573889);
mvg::nearby_locations(frauenkirche.0, frauenkirche.1)
.await
.unwrap()
.iter()
.take(3)
.for_each(|l| {
println!(
"{} - {} meters",
l.name.as_ref().unwrap(),
l.distance_in_meters.unwrap(),
)
});
// prints
// Karlsplatz (Stachus) - (48.13951, 11.56613)
// Marienplatz - (48.13725, 11.57542)
// Isartor - (48.13364, 11.58303)
let stations = mvg::stations().await.unwrap();
stations.iter().take(3).for_each(|s| {
println!(
"{} - ({}, {})",
s.name.as_ref().unwrap(),
s.latitude.unwrap(),
s.longitude.unwrap()
)
});
// prints
// de:09162:1
// de:09162:2
// de:09162:3
let station_global_ids = mvg::station_global_ids().await.unwrap();
station_global_ids
.iter()
.take(3)
.for_each(|id| println!("{id}"));
// prints
// S1 - SBAHN
// S2 - SBAHN
// S3 - SBAHN
let lines = mvg::lines().await.unwrap();
lines.iter().take(3).for_each(|l| {
println!(
"{} - {}",
l.name.as_ref().unwrap(),
l.product.as_ref().unwrap()
)
});
}
依赖项
~3–16MB
~232K SLoC