slovenske-zeleznice

1.0.0 • Public • Published

slovenske-zeleznice

JavaScript client for the Slovenian 🇸🇮 Slovenske železnice (SŽ) railway API. Inofficial, using endpoints. Ask them for permission before using this module in production.

npm version Build Status Greenkeeper badge fpti-js version chat on gitter

Installation

npm install --save slovenske-zeleznice

Usage

const sz = require('slovenske-zeleznice')

The slovenske-zeleznice 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 network, such as Ljubljana or Maribor ✅ yes
journeys(origin, destination, [opt]) Journeys between stations ✅ yes
legStopovers(legId) All stopovers for a leg (all stations the train passes on that leg) ❌ no

stations.all([opt])

Get all stations of the network, such as Ljubljana or Maribor. 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 sz = require('slovenske-zeleznice')
const stationStream = sz.stations.all()
 
stationStream.on('data', item => {
    // item is an FPTF station object
    console.log(item)
})
{
    type: "station",
    id: "42357",
    name: "Ljubljana Brinje"
}

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

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/Ljubljana time zone.

Example

const ljubljana = '42300'
const maribor = { // FPTF station
    type: 'station',
    id: '43400'
    // …
}
sz.journeys(ljubljana, maribor, { when: new Date('2019-06-27T05:00:00+0200'), transfers: 0 }).then()
{
    type: "journey",
    id: "2004###2019-06-27###42300###43400",
    info: "Timetable valid from 9. Dec. 2018 do 14. Dec. 2019.",
    legs: [
        {
            origin: {
                type: "station",
                id: "42300",
                name: "Ljubljana"
            },
            destination: {
                type: "station",
                id: "43400",
                name: "Maribor"
            },
            departure: "2019-06-27T10:50:00.000+02:00",
            arrival: "2019-06-27T13:35:00.000+02:00",
            mode: "train",
            public: true,
            line: {
                type: "line",
                id: "2004",
                name: "LPV 2004",
                number: "2004",
                product: "LPV",
                mode: "train",
                public: true,
                operator: {
                    type: "operator",
                    id: "",
                    name: "Slovenske železnice",
                    url: "http://www.slo-zeleznice.si"
                }
            },
            operator: {
                type: "operator",
                id: "",
                name: "Slovenske železnice",
                url: "http://www.slo-zeleznice.si"
            },
            bicycle: true,
            wifi: false,
            id: "2004###2019-06-27###42300###43400"
        }
    ],
    price: {
        amount: 9.56,
        currency: "EUR"
    }
}

legStopovers(legId)

All stopovers for a given leg (all stations the train passes on that leg). Obtain a legId using the journeys(origin, destination, [opt]) method. Returns a Promise that resolves in a list of stopovers.

Example

const legId = '2004###2019-06-27###42300###43400' // taken from the journeys example above
sz.legStopovers(legId).then()
[
    {
        type: "stopover",
        stop: {
            type: "station",
            id: "42300",
            name: "Ljubljana"
        },
        departure: "2019-06-27T10:50:00.000+02:00",
        arrival: null
    },
    {
        type: "stopover",
        stop: {
            type: "station",
            id: "42212",
            name: "Ljubljana Polje"
        },
        departure: "2019-06-27T10:56:00.000+02:00",
        arrival: "2019-06-27T10:55:00.000+02:00"
    },
    // …
    {
        type: "stopover",
        stop: {
            type: "station",
            id: "43304",
            name: "Maribor Tezno"
        },
        departure: "2019-06-27T13:32:00.000+02:00",
        arrival: "2019-06-27T13:31:00.000+02:00"
    },
    {
        type: "stopover",
        stop: {
            type: "station",
            id: "43400",
            name: "Maribor"
        },
        departure: null,
        arrival: "2019-06-27T13:35:00.000+02:00"
    }
]

Contributing

If you found a bug or want to propose a feature, feel free to visit the issues page.

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 1.0.0
    4
    • latest

Version History

  • Version
    Downloads (Last 7 Days)
    • Published
  • 1.0.0
    4
  • 0.0.2
    1
  • 0.0.1
    1
  • 0.0.0
    1

Package Sidebar

Install

npm i slovenske-zeleznice

Weekly Downloads

7

Version

1.0.0

License

ISC

Unpacked Size

17.8 kB

Total Files

9

Last publish

Collaborators

  • juliuste