Skip to content

hkbus/hk-bus-eta

Repository files navigation

HK Bus ETA

Bus ETAs in Hong Kong is now available as open data in Hong Kong, while there is no format normalization across different transport provider. This package is a js package (typescript supported) for querying normalized public traffic ETA (Estimated Time of Arrival) in Hong Kong. The ETA data structure is based onhkbus/hk-bus-crawlingand a well-established open-source project is known ashkbus.app.

A Python version package is availablehereand the source code is availablehere.

Demo

Live demo is availablehere.

Install

npm install hk-bus-eta or yarn add hk-bus-eta

Usage

Crawling traffic database:

import{fetchEtaObj}from"hk-bus-eta";
importtype{BusDb}from"hk-bus-eta";

fetchEtaDb().then((db:BusDb)=>{
console.log(db)
})

Crawling ETA

import{fetchEtas}from"hk-bus-eta";
importtyep{Eta}from"hk-bus-eta";

// busDb is the BusDb object fetched by fetchEtaObj

fetchEtas({
...busDb.routeList["1+1+CHUK YUEN ESTATE+STAR FERRY"],
seq:0,
language:"en",
}).then(etas=>{
console.log(etas)
})

Data Structure

The data structure ofEtaDbis as follows:

{
holidays:string[];
routeList:{
[routeId:string]:{
route:string,
co:Company[],
orig:{
en:string,
zh:string
},
dest:{
en:string,
zh:string
},
fares:string[]|null,
faresHoliday:string[]|null,
freq:{
[type:string]:{
[startTime:string]:[string,string]|null
}
}|null,
jt:string|null,
seq:number,
serviceType:string,
stops:{
[company:string]:string[]
},
bound:{
[company:string]:"O"|"I"|"OI"|"IO"
},
gtfsId:string,
nlbId:string
}
}
stopList:{
[stopId:string]:{
location:{
lat:number,
lng:number,
},
name:{
en:string,
zh:string
}
}
}
stopMap:{
[stopId:string]:Array<{
[company:string]:string
}>
}
}

The data structure ofEtais as follows:

{
eta:string,
remark:{
zh:string,
en:string
},
co:string
}

Contribute

Project ownerchunlawis the initiator of the whole project. Everyone is welcome to contribute.

License

GPL-3.0 license