2.0.4 β€’ Published 4 years ago

korail v2.0.4

Weekly downloads
1
License
ISC
Repository
github
Last release
4 years ago

korail

JavaScript client for the South Korean πŸ‡°πŸ‡· korail railway API. Inofficial, using korail endpoints. Ask them for permission before using this module in production.

This module conforms to the FPTI-JS 0.3.2 standard for JavaScript public transportation modules.

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

Installation

npm install korail

Usage

const korail = require('korail')

The korail module conforms to the FPTI-JS 0.3.2 standard for JavaScript public transportation modules and exposes the following methods:

MethodFeature descriptionFPTI-JS 0.3.2
stations.all([opt])All stations of the Korail network, such as μ„œμšΈ, λΆ€μ‚° or λͺ©ν¬βœ… yes
journeys(origin, destination, [opt])Journeys between stationsβœ… yes
tripStopovers(tripId)All stopovers for a trip (all stations a given train passes)❌ no

stations.all([opt])

Get all stations of the Korail network, such as μ„œμšΈ, λΆ€μ‚° or λͺ©ν¬. 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 korail = require('korail')
const stationStream = korail.stations.all()

stationStream.on('data', item => {
    // item is an FPTF station object
    console.log(item)
})
{
    type: "station",
    id: "0001",
    name: "μ„œμšΈ",
    location: {
        type: "location",
        longitude: 126.9708191,
        latitude: 37.551856
    },
    group: "7",
    major: "1"
}

journeys(origin, destination, [opt])

Find journeys between stations. See this method in the FPTI-JS 0.3.2 spec.

Supported Options

AttributeDescriptionFPTI-specValue typeDefault
whenJourney date, synonym to departureAfterβœ…Datenew Date()
departureAfterList journeys with a departure (first leg) after this dateβœ…Datenew Date()
resultsMax. number of results returnedβœ…Numbernull
intervalResults for how many minutes after when/departureAfterβœ…Numbernull
transfersMax. number of transfersβœ…Numbernull
productFilter journey for specific train type❌Enum (String)KTX, μƒˆλ§ˆμ„, 무ꢁ화 (includes λˆ„λ¦¬λ‘œ), 청좘

Please note that this module fetches a list of stations using the stations.all() method upon initialization, which takes about 3-4 seconds.

Example

const seoul = '0001' // station id
const busan = { // FPTF station
	type: 'station',
	id: '0020'
	// …
}
korail.journeys(seoul, busan, { when: new Date('2019-06-27T05:00:00+0200'), product: 'KTX', transfers: 0 }).then(…)
{
    type: "journey",
    id: "0001-2019-06-27t12-00-00-000-09-00-0020-2019-06-27t14-42-00-000-09-00-ktx-127",
    legs: [
        {
            origin: {
                type: "station",
                id: "0001",
                name: "μ„œμšΈ",
                location: {
                    type: "location",
                    longitude: 126.9708191,
                    latitude: 37.551856
                },
                group: "7",
                major: "1"
            },
            destination: {
                type: "station",
                id: "0020",
                name: "λΆ€μ‚°",
                location: {
                    type: "location",
                    longitude: 129.0415717,
                    latitude: 35.1150906
                },
                group: "6",
                major: "21"
            },
            departure: "2019-06-27T12:00:00.000+09:00",
            arrival: "2019-06-27T14:42:00.000+09:00",
            mode: "train",
            public: true,
            operator: {
                type: "operator",
                id: "korail",
                name: "korail",
                url: "https://www.letskorail.com"
            },
            line: {
                type: "line",
                id: "127",
                name: "KTX 127",
                product: {
                    id: "100",
                    name: "KTX"
                },
                mode: "train",
                operator: {
                    type: "operator",
                    id: "korail",
                    name: "korail",
                    url: "https://www.letskorail.com"
                }
            },
            tripId: "127###20190627"
        }
    ],
    price: {
        amount: 59800,
        currency: "KRW"
    }
}

tripStopovers(tripId)

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

Example

const tripId = '127###20190627' // taken from the journeys example above
korail.tripStopovers(tripId).then(…)
[
    {
        type: "stopover",
        stop: {
            type: "station",
            id: "0001",
            name: "μ„œμšΈ"
        },
        arrival: null,
        departure: "2019-06-27T12:00:00.000+09:00"
    },
    {
        type: "stopover",
        stop: {
            type: "station",
            id: "0501",
            name: "κ΄‘λͺ…"
        },
        arrival: "2019-06-27T12:15:00.000+09:00",
        departure: "2019-06-27T12:16:00.000+09:00"
    },
    {
        type: "stopover",
        stop: {
            type: "station",
            id: "0502",
            name: "μ²œμ•ˆμ•„μ‚°"
        },
        arrival: "2019-06-27T12:37:00.000+09:00",
        departure: "2019-06-27T12:39:00.000+09:00"
    },
    // …
    {
        type: "stopover",
        stop: {
            type: "station",
            id: "0020",
            name: "λΆ€μ‚°"
        },
        arrival: "2019-06-27T14:42:00.000+09:00",
        departure: null
    }
]

Contributing

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

2.0.4

4 years ago

2.0.3

5 years ago

2.0.2

5 years ago

2.0.1

5 years ago

2.0.0

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago

0.1.2

5 years ago

0.1.1

6 years ago

0.1.0

6 years ago

0.0.0

6 years ago