UNPKG

hk-bus-eta-skpracta

Version:

Query the ETA (Estimated Time of Arrival) of HK Bus/Minibus/MTR/Lightrail (skpracta flavored)

50 lines 2.05 kB
import { isSafari } from "./utils"; export default function fetchEtas({ stopId, route, dest, }) { return fetch(`https://rt.data.gov.hk/v1/transport/mtr/lrt/getSchedule?station_id=${stopId.slice(2)}`, { cache: 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 []; }); } //# sourceMappingURL=lightRail.js.map