A pure Python wrapper for the on-board APIs of many different transportation providers
Project description
onboardapis
Description
onboardapis allows you to interact with different on-board APIs. You can connect to the WI-FI of a supported transportation provider and access information about your journey, the vehicle you are travelling in and much more.
Note: Coverage across operators is not great yet.
Note: For now the only vehicle type covered by this package is trains.
Note: At the time this package supports the DB ICE Portal from germany and the ÖBB Railnet Regio from austria.
Installation
Install the latest version of onboardapis from PyPI using pip:
$ python -m pip install onboardapis
Quickstart
To begin with development you will need to know a few things first:
- What vehicle type you want to use
- Who operates the vehicle
- What country is the operator from
With this information you can get the needed module from the package
onboardapis.<vehicle-type>.<country>.<operator>
and import the API wrapper class from it.
Let's say you want to use the on-board API called ICE Portal of Deutsche Bahn trains in Germany.
from onboardapis.trains.germany.db import ICEPortal
Every implementation of an API wrapper class is a subclass of the abstract class of its vehicle type
(here Train
) found in the vehicle package. Every vehicle type itself is a subclass of Vehicle
.
from onboardapis import Vehicle
from onboardapis.trains import Train
from onboardapis.trains.germany.db import ICEPortal
assert issubclass(Train, Vehicle)
assert issubclass(ICEPortal, Train)
assert issubclass(ICEPortal, Vehicle)
assert isinstance(ICEPortal(), Train)
assert isinstance(ICEPortal(), Vehicle)
The abstract base class defines common attributes that are used by all implementations.
For example, the Train
class defines the attributes speed
and delay
alongside with the current station
(the next station you will arrive at) and others.
from onboardapis.trains.germany.db import ICEPortal
from onboardapis.utils.conversions import ms_to_kmh
train = ICEPortal()
train.init()
print(
"Travelling at", train.speed, "m/s",
f"({ms_to_kmh(train.speed):.2f} km/h)",
"with a delay of", train.delay, "seconds"
)
print(
"Next stop:", train.current_station.name,
"at", train.current_station.arrival.actual.strftime("%H:%M")
)
print(
f"Distance to {train.current_station.name}:",
f"{train.calculate_distance(train.current_station) / 1000:.1f} km"
)
And there you go! You can read more information about available attributes in the trains documentation.
Documentation
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for onboardapis-1.3.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | af67f1fe9fe84a156878e770c6342a74633c5c60bf9f99ac293b9e9551eed974 |
|
MD5 | 8a51ee021da7234a085aea87ba5becfe |
|
BLAKE2b-256 | ea5720574fd1a10a73953187925fa394c34431279178698b353b70ecde066de6 |