Skip to main content

A module for interacting with the Deutsche Bahn onboard APIs

Project description

iceportal_apis


No longer actively developed in favor of the onboardAPIs project which includes APIs for different providers.


PyPI version PyPI-Versions GitHub

Description

This module interacts with the onboard APIs of the Deutsche Bahn ICE trains.
It can do various things from reading the trains' velocity to telling you the distance to and the delay at the next station.
This is an unofficial project and not supported by Deutsche Bahn AG.

Note, that this module will only work correctly while you are on a train and connected to its WiFi-Hotspot.
However a basic simulation for offline research is also included in this module

Installation

  • Available on PyPI
    $ python -m pip install iceportal_apis
    
    for the newest (unstable) version install the module from GitHub
    $ python -m pip install git+https://github.com/felix-zenk/iceportal-apis.git
    

Usage

Example code is available in the file example.py and other files in samples.

The basic usage consists of requesting new data from the api, then processing it with the modules functions.

import iceportal_apis as ipa

train = ipa.Train()

while True:
    # Request new data from the api
    train.refresh()
    
    # Process data
    print(train.get_train_type().name)
    next_station = train.get_next_station()

    . . .

For GUI applications you can also specify automatic api polling

train = ipa.Train(auto_refresh=True)

License

This software is distributed under the MIT License, please see LICENSE for detailed information.

API documentation

1. Status API

The Status API is available at https://iceportal.de/api1/rs/status

A sample response can be found at:

iceportal_api.mocking.data.STATIC_STATUS

2. Trip API

The Trip API is available at https://iceportal.de/api1/rs/tripInfo/trip

A sample response can be found at:

iceportal_api.mocking.data.STATIC_TRIP

3. Connections API

The Connecting trains API can be found at https://iceportal.de/api1/rs/tripInfo/connection/{eva_number}

A sample response can be found at:

iceportal_api.mocking.data.STATIC_CONNECTIONS

4. Other APIs

These are other APIs I discovered but didn't investigate in:

4.1. https://iceportal.de/api1/rs/pois/map/{lat_s}/{lon_s}/{lat_e}/{lon_e}

4.2. https://iceportal.de/api1/rs/configs

4.3. https://iceportal.de/api1/rs/configs/cities

Development

If you would like to develop your own interface you can use sample data from iceportal_apis.mocking and derive a class from iceportal_apis.interfaces.ApiInterface or iceportal_apis.interfaces.TestInterface

from iceportal_apis.mocking.data import load_from_record, SAMPLE_FILE_STATUS

sample_data_status = load_from_record(SAMPLE_FILE_STATUS)

While on a train you can also save api data for later usage

from requests import get

from iceportal_apis.mocking.data import save_record
from iceportal_apis.constants import URL_STATUS

api_call = get(URL_STATUS).json()
save_record("filename.json", api_call)

When not connected to a trains hotspot use test mode

import iceportal_apis as ipa

train = ipa.Train(test_mode=True)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

iceportal_apis-2.0.0.tar.gz (7.8 kB view hashes)

Uploaded Source

Built Distribution

iceportal_apis-2.0.0-py3-none-any.whl (8.3 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page