英国火车信息服务,使用国家铁路开放API
此 API 旨在为 国家铁路实时出发信息板 Web 服务 提供一个更友好的界面。
TrainInformationService 可以使用 Swift Package Manager 或 CocoaPods 进行安装。
Swift Package Manager 需要 Swift 4.0 或更高版本。 首先,创建一个 Package.swift
文件。 它应该看起来像这样:
dependencies: [
.package(url: "https://github.com/dchakarov/TrainInformationService.git", from: "0.1.0"),
]
然后,swift build
应该会拉取并编译 TrainInformationService,供您开始使用。
要安装它,只需将以下行添加到您的 Podfile:
pod 'TrainInformationService'
要使用此框架,您需要一个国家铁路问询处 LDBWS (OpenLDBWS) 的令牌。 您可以在此处免费注册并获取您的令牌 - http://realtime.nationalrail.co.uk/OpenLDBWSRegistration/。 有关国家铁路提供的可用 API 的更多信息,您可以在此处阅读 - http://www.nationalrail.co.uk/100296.aspx
获取令牌后,您可以像这样实例化该服务:
import TrainInformationService
let trainInformationService = TrainInformationService(
apiUrl: "https://lite.realtime.nationalrail.co.uk/OpenLDBWS/ldb11.asmx",
token: "your-token-goes-here")
目前,该服务支持 OpenLDWS 的两种方法。 两者都是异步的,因为它们是从国家铁路实时出发信息板 Web 服务实时获取数据的。 有关方法的完整列表和文档,您可以访问此处 - https://lite.realtime.nationalrail.co.uk/OpenLDBWS/
您可以在此处找到车站列表及其 CSR 代码 - http://www.nationalrail.co.uk/stations_destinations/48541.aspx
let stationCSRCode = "PAD" // Paddington
let paddingtonBoard = await trainService.stationBoard(for: stationCSRCode, items: 10)
生成的 StationBoard
将是一个对象,包含 generatedAt 日期、完整的始发地和目的地名称,以及最多 10 个 DepartingService 对象的数组。
您可以使用其 CSR 代码,仅获取到特定目的地的结果
let originCSRCode = "KGX" // Kings Cross
let destinationCSRCode = "FPK" // Finsbury Park
let filteredBoard = await trainService.stationBoard(for: originCSRCode, to: destinationCSRCode, items: 10)
let stationCSRCode = "PAD" // Paddington
trainInformationService.departureBoard(for: stationCSRCode, items: 5) { result in
switch result {
case .success(let board):
print(board)
case .error(_):
break
}
}
生成的 board
将是一个最多 5 个 DepartingService 对象的数组。
如果您有一个服务 ID(例如,来自上述调用的 DepartingService 对象),您可以按如下方式获取其时刻表上剩余的站点列表
trainInformationService.serviceDetails(service.serviceId) { callingPoints in
print(callingPoints)
}
这里 callingPoints
是 CallingPoint 对象的数组。
欢迎贡献! 只需提交一个 PR。
Dimitar Chakarov, dimitar@dchakarov.com
这是发布到公共领域的免费且不受限制的软件。 有关更多信息,请参见 LICENSE 文件。