This is an unofficial Swift package giving you a few options to query Dresden's public transport system for current bus- and tramstop data.
Want something like this for another language, look no further 🙂
Have a look at the example iOS app.
DVB is available through Cocoapods, Carthage/Punic and Swift Package Manager, whatever floats your boat.
// Cocoapods
pod 'DVB'
// Carthage
github "kiliankoe/DVB"
// Swift Package Manager
.package(url: "https://github.com/kiliankoe/DVB", from: "latest_version")
Be sure to check the docs for more detailed information on how to use this library, but here are some quick examples for getting started right away.
Caveat: Stops are always represented by their ID. You can get a stop's ID via Stop.find()
. Some of the methods listed below offer convenience overloads, which are listed here since they look nicer. The downside to these is that they have to send of a find request for every stop first resulting in a significant overhead. Should you already have a stop's ID at hand I strongly suggest you use that instead.
Monitor a single stop to see every bus, tram or whatever leaving this stop. The necessary stop id can be found by using the find()
function.
// See caveat above
Departure.monitor(stopWithName: "Postplatz") { result in
guard let response = result.success else { return }
print(response.departures)
}
Say you're looking for "Helmholtzstraße". You can use the following to find a list of matches.
Stop.find("Helmholtzstraße") { result in
guard let response = result.success else { return }
print(response.stops)
}
You can also get a list of stops around a given coordinate.
let coordinate = CLLocationCoordinate2D(latitude: 51.063080, longitude: 13.736835)
Stop.findNear(coordinate) { result in
guard let response = result.success else { return }
print(response.stops)
}
Want to go somewhere?
// See caveat above
Trip.find(from: "Albertplatz", to: "Hauptbahnhof") { result in
guard let response = result.success else { return }
print(response.routes)
}
Want to see if your favorite lines are currently being re-routed due to construction or some other reason? Check the published list of route changes.
RouteChange.get { result in
guard let response = result.success else { return }
print(response.lines)
print(response.changes)
}
Looking to find which lines service a specific stop? There's a func for that.
// See caveat above
Line.get(forStopName: "Postplatz") { result in
guard let response = result.success else { return }
print(response.lines)
}
Kilian Koeltzsch, @kiliankoe
Max Kattner, @maxkattner
DVB is available under the MIT license. See the LICENSE file for more info.
Please refer to the VVO Terms of Service regarding their widget. Take particular care not to use this library to hammer their servers through too many requests to their graciously-provided API.