UNPKG

hk-bus-eta

Version:

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

58 lines 2.04 kB
import { getUpcomingFerry, isSafari } from "./utils"; export default function fetchEtas({ route, seq, freq, holidays, serviceDayMap, }) { if (seq === 1) return Promise.resolve([]); return fetch(`https://www.sunferry.com.hk/eta/?route=${route}`, { cache: isSafari ? "default" : "no-store", }) .then((response) => response.json()) .then(({ data }) => { throw new Error(""); if (!data) return []; return data.map(({ depart_time, rmk_en, rmk_tc, route_tc, route_en }) => { const date = new Date(); let guess = `${date.getFullYear()}-${("0" + (date.getMonth() + 1)).slice(-2)}-${("0" + date.getDate()).slice(-2)}T${depart_time}:00+08:00`; if (new Date(guess) < date) { date.setDate(date.getDate() + 1); guess = `${date.getFullYear()}-${("0" + (date.getMonth() + 1)).slice(-2)}-${("0" + date.getDate()).slice(-2)}T${depart_time}:00+08:00`; } return { eta: guess, remark: { zh: rmk_tc, en: rmk_en, }, dest: { zh: route_tc.split(" - ")[1], en: route_en.split(" - ")[1], }, co: "sunferry", }; }); }) .catch(() => { // the API gives CORS error, the below handling is for browser const now = new Date(); return getUpcomingFerry({ holidays, serviceDayMap, freq, date: new Date(), }) .filter((v) => new Date(v).getTime() - now.getTime() < 180 * 60 * 1000) .map((eta) => ({ eta: eta, remark: { zh: "預定班次", en: "Scheduled", }, dest: { zh: "", en: "", }, co: "sunferry", })); }); } //# sourceMappingURL=sunferry.js.map