我使用 Python 创建了一个火车项目,但在使用 DB 时间表 API 时遇到了一些问题。是否可以通过 API 请求获取已取消的列车?我不这么认为。此外,火车延误也不包括在内。我使用了一个名为“schiene”的 Python 库来获取火车晚点情况。 “Schiene”与此站点交互: https://mobile.bahn.de/bin/mobil/query.exe/dox? 我确实得到了一些延误信息,但我仍然面临以下问题:
# TODO: this should not be hardcoded!
data['canceled'] = False
任何人都可以帮忙解决这个问题吗?
我尝试使用此 res API 从数据库 (RIS::Journeys) 获取已取消的火车,但是你需要为此付费...
所以这是不可能的
说的没错,使用
schiene
库和提供的 DB 时间表 API 无法直接获取已取消的列车信息。这是因为:
-
schiene
库主要关注列车晚点信息。 它的设计目标是从 DB 的 API 中提取实时的列车运行状况,而并非所有列车取消信息都会实时更新到该 API。 - DB 时间表 API 的免费版本不提供列车取消信息。 提到的需要付费的 RIS::Journeys API 才能访问更详细的列车状态数据,包括取消信息。
鉴于这些限制,可以尝试以下方法:
1. 定期检查列车状态变化:
-
使用
schiene
库定期查询特定列车的状态。 - 如果列车状态从“晚点”变为“未知”或其他异常状态,则可能暗示列车已被取消。但这并非绝对可靠,因为其他因素也可能导致状态变化。
2. 寻找其他数据源:
- 可以尝试寻找其他提供免费列车取消信息的 API 或网站。
- 例如,一些第三方交通信息平台可能会整合 DB 的数据并提供更全面的列车状态信息。
3. 联系 DB API 支持:
- 可以联系 DB API 支持团队,询问是否有其他方法可以访问列车取消信息,或者是否有计划在未来提供免费的取消信息 API。
代码示例(定期检查状态变化):
import schiene
import time
# 设置要查询的列车信息
train_name = "ICE 1234"
departure_station = "Berlin Hbf"
# 初始化 Schiene API 客户端
s = schiene.Schiene()
while True:
try:
# 查询列车状态
departures = s.departures(
station=departure_station,
train_name=train_name,
lookbehind=0, # 只查询即将发车的列车
)
# 获取第一趟符合条件的列车
departure = departures[0]
# 检查列车状态
if departure.is_cancelled:
print(f"列车 {train_name} 已取消。")
elif departure.delay:
print(f"列车 {train_name} 晚点 {departure.delay} 分钟。")
else:
print(f"列车 {train_name} 准点。")
# 设置查询间隔(例如,每分钟查询一次)
time.sleep(60)
except Exception as e:
print(f"查询列车状态时出错: {e}")
# 可以根据需要添加错误处理逻辑
请注意: 以上方法并不能保证完全准确地获取所有已取消的列车信息。 为了获得最准确的信息,建议参考 DB 官方网站或应用程序。
标签:python From: 78815138