Skip to content

miklcct/js-kmb-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Jan 19, 2021
ce16e8b · Jan 19, 2021

History

75 Commits
Oct 23, 2020
Oct 23, 2020
Nov 17, 2020
Nov 4, 2020
Oct 16, 2020
Oct 23, 2020
Oct 16, 2020
Oct 16, 2020
Nov 17, 2020
Oct 16, 2020
Oct 23, 2020
Oct 23, 2020
Oct 23, 2020
Oct 23, 2020
Jan 19, 2021
Oct 23, 2020
Oct 23, 2020
Oct 23, 2020
Jan 19, 2021

Repository files navigation

Node.js module for getting bus information of KMB

This is a node.js module for getting bus service information of KMB routes. It can get routes, stops, variants, and ETAs.

Try it out in RunKit

Example Usage

Loading the library

// import the library class
const Kmb = require('js-kmb-api').default;

// create an API instance using the default setting
const kmb = new Kmb;

// create an API instance with caching in the browser
// It's recommended to use localStorage to cache stops, and sessionStorage to cache stop routes
// because stop names do not change often and are reloaded automatically
const kmb = new Kmb('en', localStorage, sessionStorage);

Using the library

Refer to the example-javascript.js or example-typescript.ts files for the following example in a runnable form.

// Load the forward route of 104
const route = (await kmb.getRoutes('104')).find(route => route.bound === 1);
if (route === undefined) {
    throw new Error('route is not found');
}

// load the main variant
const variant = (await route.getVariants()).sort((a, b) => a.serviceType - b.serviceType)[0];
if (variant === undefined) {
    throw new Error('No variants are found');
}

// Load the stop list of the main variant
const stoppings = await variant.getStoppings();

// Find a stop called "Immigration Tower"
const stopping = stoppings.find(stopping => stopping.stop.name === 'Immigration Tower');
if (stopping === undefined) {
    throw new Error('Stop is not found');
}

// Get the ETA there
const etas = await stopping.getEtas();
console.log(etas);

// Get the stoppings of all other routes for that stop
const stoppings_at_immigration_tower = await stopping.stop.getStoppings();
console.log(stoppings_at_immigration_tower);

To run the example, use

node example-javascript.js # Javascript example
ts-node example-typescript.ts # Typescript example

About

Javascript library for getting KMB data

Resources

License

Stars

Watchers

Forks

Packages

No packages published