train-ose
JavaScript client for the Greek 🇬🇷 trainOSE railway API. Inofficial, using trainOSE endpoints. Ask them for permission before using this module in production.
Installation
npm install --save train-ose
Usage
const trainOSE =
The train-ose
module conforms to the FPTI-JS 0.3.2
standard for JavaScript public transportation modules and exposes the following methods:
Method | Feature description | FPTI-JS 0.3.2 |
---|---|---|
stations.all([opt]) |
All stations of the TrainOSE network, such as Αθήνα (Athens) or Θεσσαλονίκη (Thessaloniki) |
✅ yes |
journeys(origin, destination, [opt]) |
Journeys between stations | ✅ yes |
edges() |
All pairs of adjacent stations and their distance (as in edges of the greek railway network graph) | ❌ no |
stations.all([opt])
Get all stations of the TrainOSE network, such as Αθήνα
(Athens) or Θεσσαλονίκη
(Thessaloniki). See this method in the FPTI-JS 0.3.2
spec.
Supported Options
There currently aren't any supported options for this method, but this might change in a future release.
Example
const trainOSE = const stationStream = trainOSEstationsall stationStream
type: "station" id: "ΑΘΗΝ" name: "Αθήνα" nameEnglish: "Athens" location: type: "location" longitude: 23720840454101562 latitude: 37992610931396484 country: "GR" timezone: "Europe/Athens" active: true
journeys(origin, destination, [opt])
Find journeys between stations. See this method in the FPTI-JS 0.3.2
spec.
Supported Options
Attribute | Description | FPTI-spec | Value type | Default |
---|---|---|---|---|
when |
Journey date, synonym to departureAfter |
✅ | Date |
new Date() |
departureAfter |
List journeys with a departure (first leg) after this date | ✅ | Date |
new Date() |
results |
Max. number of results returned | ✅ | Number |
null |
interval |
Results for how many minutes after when /departureAfter |
✅ | Number |
null |
transfers |
Max. number of transfers | ✅ | Number |
null |
Please note that this module fetches a list of stations using the stations.all()
method upon initialization, which takes about 1 second.
Also note that, unless opt.interval
is specified, the module will return journeys that start after when
/departureAfter
, but before the beginning of the following calendar day in Europe/Athens
time zone.
Example
const athens = 'ΑΘΗΝ' // station idconst thessaloniki = // FPTF station type: 'station' id: 'ΘΕΣΣ' // …trainOSE
type: "journey" legs: origin: type: "station" id: "ΑΘΗΝ" name: "Αθήνα" nameEnglish: "Athens" location: type: "location" longitude: 23720840454101562 latitude: 37992610931396484 country: "GR" timezone: "Europe/Athens" active: true destination: type: "station" id: "ΘΕΣΣ" name: "Θεσσαλονίκη" nameEnglish: "Thessaloniki" location: type: "location" longitude: 22929779052734375 latitude: 406444091796875 country: "GR" timezone: "Europe/Athens" active: true departure: "2019-06-27T06:22:00.000+03:00" arrival: "2019-06-27T10:32:00.000+03:00" mode: "train" public: true operator: type: "operator" id: "trainOSE" name: "trainOSE" url: "https://www.trainose.gr" line: type: "line" id: "50" name: "50" mode: "train" operator: type: "operator" id: "trainOSE" name: "trainOSE" url: "https://www.trainose.gr" price: currency: "EUR" amount: 251 class: "B" reduced: false available: 218 tariffs: currency: "EUR" amount: 351 class: "A" reduced: false available: 52 currency: "EUR" amount: 203 class: "A" reduced: true available: 52 currency: "EUR" amount: 251 class: "B" reduced: false available: 218 currency: "EUR" amount: 203 class: "B" reduced: true available: 218 price: amount: 251 currency: "EUR" class: "B" reduced: false available: 218 id: "ΑΘΗΝ_2019-06-27T06:22:00.000+03:00_ΘΕΣΣ_2019-06-27T10:32:00.000+03:00_50"
edges()
All pairs of adjacent stations and their distance (as in edges of the greek railway network graph). Returns a Readable
stream in object mode.
Example
const edgeStream = trainOSEedgeStream
"source": "ΑΓΥΑ" "target": "ΚΑΣΛ" "distance": 21
Contributing
If you found a bug, want to propose a feature or feel the urge to complain about your life, feel free to visit the issues page.