Nifty Procrastination Machine

    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.

    Install

    npm i slovenske-zeleznice

    DownloadsWeekly Downloads

    8

    Version

    1.0.0

    License

    ISC

    Unpacked Size

    17.8 kB

    Total Files

    9

    Last publish

    Collaborators

    • juliuste