hk-bus-eta-skpracta
Version:
Query the ETA (Estimated Time of Arrival) of HK Bus/Minibus/MTR/Lightrail (skpracta flavored)
53 lines • 2.15 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const utils_1 = require("./utils");
function fetchEtas({ stopId, route, dest, }) {
return fetch(`https://rt.data.gov.hk/v1/transport/mtr/lrt/getSchedule?station_id=${stopId.slice(2)}`, {
cache: utils_1.isSafari ? "default" : "no-store",
})
.then((response) => response.json())
.then(({ platform_list }) => platform_list.reduce((acc, { route_list, platform_id }) => [
...acc,
...route_list
.filter(({ route_no, dest_ch, dest_en, stop }) => route === route_no &&
(dest_ch === dest.zh || dest_en.includes("Circular")) &&
stop === 0)
.map(({ time_en, train_length }) => {
let waitTime = 0;
switch (time_en.toLowerCase()) {
case "arriving":
case "departing":
case "-":
waitTime = 0;
break;
default:
waitTime = parseInt(time_en, 10);
break;
}
const etaDate = new Date(Date.now() + waitTime * 60 * 1000 + 8 * 3600000);
return {
eta: `${etaDate.getUTCFullYear()}-${`0${etaDate.getUTCMonth() + 1}`.slice(-2)}-${`0${etaDate.getUTCDate()}`.slice(-2)}` +
`T${`0${etaDate.getUTCHours()}`.slice(-2)}:${`0${etaDate.getMinutes()}`.slice(-2)}:${`0${etaDate.getSeconds()}`.slice(-2)}+08:00`,
remark: {
zh: `${platform_id}號月台 - ${Array(train_length)
.fill("▭")
.join("")}`,
en: `Platform ${platform_id} - ${Array(train_length)
.fill("▭")
.join("")}`,
},
dest: {
zh: "",
en: "",
},
co: "lightRail",
};
}, []),
], []))
.catch((e) => {
console.error(e);
return [];
});
}
exports.default = fetchEtas;
//# sourceMappingURL=lightRail.js.map