OEBB-API (ÖBB-API)
A collection of functions fore node.js to acess train shedules, arrivals/departures, station search and ticketinformation from the OEBB(ÖBB)
I had a lot of help help from these great ressources
and a documentation file I found on the web
Installation
npm --save install oebb-api
Functions
- searchStationsNew
- searchStations
- getJourneys
- getStationBoardData
- getStationBoardDataOptions
- getStationSearchOptions
searchStationsNew(name)
It returns an promise that resolves to an array of possible stations matching name
const oebb = ; oebb;
returns
number: 1190100 longitude: 16372134 latitude: 48208547 name: '' meta: 'Wien' number: 1290401 longitude: 16375326 latitude: 48185507 name: 'Wien Hbf (U)' meta: '' .........
searchStations(options)
searchStation is very similar to searchStationsNew it however can take more options
and returns more information. You can call getStationSearchOptions to get a prefilled options object.
const oebb = ; var options = oebb;optionsS="wien h";oebb;
It returns an array with matching stations, POIs, etc.
value: 'Wien Hbf (U)' id: 'A=1@O=Wien Hbf (U)@X=16375326@Y=48185507@U=181@L=001290401@B=1@p=1513853468@' extId: '001290401' type: '1' typeStr: '[Bhf/Hst]' xcoord: '16375326' ycoord: '48185507' state: 'id' prodClass: '6013' weight: '32767' value: 'Wien Meidling' id: 'A=1@O=Wien Meidling@X=16333211@Y=48174559@U=181@L=001191201@B=1@p=1513853468@' extId: '001191201' type: '1' typeStr: '[Bhf/Hst]' xcoord: '16333211' ycoord: '48174559' state: 'id' prodClass: '4989' weight: '32588' .........
Name | description |
---|---|
value: | name of the station |
id | no idea |
extId | used in other queries; same as number (not quite shure if the really are the same all the time) |
type | int representing the type |
typeStr | the type as string |
xcoord | longitude |
ycoord | latitude |
state | no idea |
prodClass | no idea |
weight | I am guessing it represents how close a match the station is to the string |
getStationSearchOptions()
It returns an object containing the options for searchStations
const oebb = ; var options = oebb;
options
Name | default value | value | description |
---|---|---|---|
REQ0JourneyStopsS0A | 1 | An int between 1 and 255. | It selects the type of station to return e.g. 1 is [Bhf/Hst] |
REQ0JourneyStopsB | 12 | An int greater 0 | the amount of results which are returned |
S | a string | the string to match | |
js | true |
boolean | no idea what it does |
getStationBoardData(options)
It returns a promise resolving to an object containing arrival or depature information for a specific station. You can get a prefilled options
object, by calling getStationBoardDataOptions
const oebb = ; var options = oebb;optionsevaId=1191601;//Ottakring (Wien)oebb;
returns:
headTexts: 'Zeit' 'Fahrt' 'Nach' 'Steig' 'Abfahrten' 'Aktuell' 'Ankunft' stationName: 'Ottakring (Wien)' stationEvaId: '1191601' boardType: 'dep' imgPath: '/img/' iconProductsSubPath: 'vs_oebb/' rtInfo: true journey: id: '875171810' ti: '19:46' da: '23.12.2017' pr: 'U3' st: 'Wien Simmering' lastStop: 'Wien Simmering Bahnhof (U3)' ati: '20:12' tr: '1' trChg: false rt: false rta: false id: '836641815' ti: '19:46' da: '23.12.2017' pr: 'Tram 46' st: 'Wien Ring/Volkstheater U' lastStop: 'Wien Dr.-K.-Renner-Ring/Volkstheater (Schleife)' ati: '20:00' tr: '' trChg: rt: status: null dlm: '2' dlt: '19:47' dld:'23.12.2017' rta: false ... ... ... maxJ: 18
element description
general:
Name | description |
---|---|
headTexts | headings for arrivals depatures screen |
stationName | name of station |
stationEvaId | Id of station |
boardType | depatures or arrivals (dep/arr) |
imgPath | ? |
iconProductsSubPath | ? |
rtInfo | ? |
maxJ | number of returned entries -1 |
journey:
Name | description |
---|---|
id | ? |
ti | arrvial/depature time |
da | arrival/depature date |
pr | name of transport |
st | ? |
lastStop | last stop |
ati | wehn arrivals depature time from first stop ; when depatures expected time to reach last stop |
tr | track identifier |
trChg | did the track change |
rt :
it describes the delay or other status if there is one. If there is one it contains an object formated as follows:
Name | description |
---|---|
status | current status; "Ausfall" if canceled |
dlm | how many minutes too late |
dlt | actual arrival time |
dld | actual arrival date |
rta
it is very similar to rt I think it describes the delay for the arrival, but I am not certain.
Name | description |
---|---|
status | current status "Ausfall" if canceled then rt too is canceld and rt.status= "Ausfall" |
dlm | never seen it other than empty |
dlt | never seen it other than empty |
getStationBoardDataOptions()
returns prefilled options for getStationBoardData
const oebb = ; var options = oebb;
options
Name | default value | values | description |
---|---|---|---|
L | vs_scotty.vs_liveticker | vs_scotty.vs_liveticker | ? |
evaId | empty | integer | Id of station; extId or number from searchStationsNew or searchStations |
dirInput | empty | integer | Id of Station in which transportation is heading; extId or number f from searchStationsNew or searchStations. If it is set only trains which actually stop at the station specified with dirInput are shown |
boardType | dep | dep/arr | depatures or arrivals |
time | current time | HH:MM | time from when to start looking |
productsFilter | 1111111111111111 | binary flags? | selects modes of transportation see below for more information |
additionalTime | 0 | integer | in minute. Is added to time |
maxJourneys | 19 | integer | max of returned stations |
outputMode | tickerDataOnly | tickerDataOnly | ? |
start | yes | yes/no | wheter to start query |
selectDate | period | period/tody | selects mode; if tody dateBegin and dateEnd are ignored. |
dateBegin | current date | String dd.mm.YYYY | start day for lookup ignored if selectDate=today |
dateEnd | current date | String dd.mm.YYYY | end date for lookup ignored if selectDate=today |
productsFilter
slects which modes of transports should be listed
forexample if I set productsFilter
to 0000110000000000 only s-bahn and regionalzüge are shown
Flag number | mode of transport |
---|---|
1 | railjet |
2 | ? |
3 | ec and ice |
4 | nightjet d probably also nightjet en |
5 | regionalzüge |
6 | s-bahn |
7 | Bus |
8 | ? |
9 | subway |
10 | tram |
11 | ? |
12 | ? |
13 | Westbahn |
14 | ? |
15 | ? |
16 | ? |
getJourneys(from, to, add_offers, date)
returns a promise, that resolves to routes from
to
at date
. To add the offers, if they exist, set add_offers
to true
.
add_offers
is by default false.
date
is a node-datetime object. It has to be imported through npm
const oebb = ; oebb;
from
and to
they are formated:
from/to = number: 1190100 longitude: 16372134 latitude: 48208547 name: 'Wien';
This returns for example (connections
describes the journey and offer
contains the information about the price etc.):
(The console output will hide most of it, but it is there)
"connections": "connection": "id": "fb8a994b473d2931b32583890559a1dcadd736a0f2016132f6d1628b8b1d68fd" "from": "name": "Wien Hbf" "esn": 8103000 "departure": "2017-12-24T06:25:00.000" "departurePlatform": "7" "showAsResolvedMetaStation": false "to": "name": "Venezia Santa Lucia" "esn": 8300094 "arrival": "2017-12-24T14:05:00.000" "showAsResolvedMetaStation": false "sections": "from": "name": "Wien Hbf" "esn": 8103000 "departure": "2017-12-24T06:25:00.000" "departurePlatform": "7" "to": "name": "Venezia Santa Lucia" "esn": 8300094 "arrival": "2017-12-24T14:05:00.000" "duration": 27600000 "category": "name": "RJ" "number": "131" "displayName": "RJ" "longName": "de": "Railjet" "en": "Railjet" "it": "Railjet" "backgroundColor": "#ffffff" "fontColor": "#222222" "barColor": "#ab0020" "place": "de": "Bahnsteig" "en": "Platform" "it": "Banchina" "assistantIconId": "zugAssistant" "train": true "backgroundColorDisabled": "#F0F0F0" "fontColorDisabled": "#878787" "barColorDisabled": "#878787" "type": "journey" "hasRealtime": false "switches": 0 "duration": 27600000 "offer": "connectionId": "fb8a994b473d2931b32583890559a1dcadd736a0f2016132f6d1628b8b1d68fd" "price": 946 "offerError": false "firstClass": false "availabilityState": "available" ... ... ...