hk-bus-eta 3.7.8 → 3.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -2
- package/dist/index.js +26 -16
- package/dist/index.js.map +1 -1
- package/dist/journeyTime.js +6 -4
- package/dist/journeyTime.js.map +1 -1
- package/dist/lightRail.js +1 -1
- package/dist/lightRail.js.map +1 -1
- package/esm/index.js +26 -16
- package/esm/index.js.map +1 -1
- package/esm/journeyTime.js +6 -4
- package/esm/journeyTime.js.map +1 -1
- package/esm/lightRail.js +1 -1
- package/esm/lightRail.js.map +1 -1
- package/package.json +8 -8
- package/src/index.ts +51 -57
- package/src/journeyTime.ts +12 -4
- package/src/lightRail.ts +1 -3
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# HK Bus ETA
|
|
2
2
|
|
|
3
|
-
Bus ETAs in Hong Kong is now available as open data in Hong Kong, while there is no format normalization across different transport provider.
|
|
3
|
+
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 on [hkbus/hk-bus-crawling](https://github.com/hkbus/hk-bus-crawling) and a well-established open-source project is known as [hkbus.app](https://hkbus.app/).
|
|
4
4
|
|
|
5
5
|
A Python version package is available [here](https://pypi.org/project/hk-bus-eta/) and the source code is available [here](https://github.com/hkbus/hk-bus-crawling).
|
|
6
6
|
|
|
@@ -17,7 +17,6 @@ or
|
|
|
17
17
|
|
|
18
18
|
## Usage
|
|
19
19
|
|
|
20
|
-
__Crawling traffic database:__
|
|
21
20
|
```ts
|
|
22
21
|
import { fetchEtaDb } from "hk-bus-eta";
|
|
23
22
|
import type { EtaDb } from "hk-bus-eta";
|
package/dist/index.js
CHANGED
|
@@ -40,10 +40,9 @@ const hkkf_1 = __importDefault(require("./hkkf"));
|
|
|
40
40
|
function fetchEtas({ route, stops, bound, dest, freq, seq, serviceType, co, nlbId, gtfsId, stopList, language, holidays, serviceDayMap, }) {
|
|
41
41
|
return __awaiter(this, void 0, void 0, function* () {
|
|
42
42
|
try {
|
|
43
|
-
|
|
44
|
-
for (const company_id of co) {
|
|
43
|
+
const tasks = co.map((company_id) => __awaiter(this, void 0, void 0, function* () {
|
|
45
44
|
if (company_id === "kmb" && stops.kmb) {
|
|
46
|
-
|
|
45
|
+
return (0, kmb_1.default)({
|
|
47
46
|
route,
|
|
48
47
|
stops: stops.kmb,
|
|
49
48
|
stopId: stops.kmb[seq],
|
|
@@ -51,33 +50,33 @@ function fetchEtas({ route, stops, bound, dest, freq, seq, serviceType, co, nlbI
|
|
|
51
50
|
co,
|
|
52
51
|
serviceType,
|
|
53
52
|
bound: bound.kmb,
|
|
54
|
-
})
|
|
53
|
+
});
|
|
55
54
|
}
|
|
56
55
|
else if (company_id === "ctb" && stops.ctb) {
|
|
57
|
-
|
|
56
|
+
return (0, ctb_1.default)({ stopId: stops.ctb[seq], route, bound: bound.ctb, seq });
|
|
58
57
|
}
|
|
59
58
|
else if (company_id === "nlb" && stops.nlb) {
|
|
60
|
-
|
|
59
|
+
return (0, nlb_1.default)({ stopId: stops.nlb[seq], nlbId, language });
|
|
61
60
|
}
|
|
62
61
|
else if (company_id === "lrtfeeder" && stops.lrtfeeder) {
|
|
63
|
-
|
|
62
|
+
return (0, lrtfeeder_1.default)({ stopId: stops.lrtfeeder[seq], route, language });
|
|
64
63
|
}
|
|
65
64
|
else if (company_id === "gmb" && stops.gmb) {
|
|
66
|
-
|
|
65
|
+
return (0, gmb_1.default)({ stopId: stops.gmb[seq], gtfsId, seq, bound: bound.gmb });
|
|
67
66
|
}
|
|
68
67
|
else if (company_id === "lightRail" && stops.lightRail) {
|
|
69
|
-
|
|
68
|
+
return (0, lightRail_1.default)({ stopId: stops.lightRail[seq], route, dest });
|
|
70
69
|
}
|
|
71
70
|
else if (company_id === "mtr" && stops.mtr) {
|
|
72
71
|
if (!stopList) {
|
|
73
72
|
throw new Error("mtr requires stopList");
|
|
74
73
|
}
|
|
75
|
-
|
|
74
|
+
return (0, mtr_1.default)({
|
|
76
75
|
stopId: stops.mtr[seq],
|
|
77
76
|
route,
|
|
78
77
|
stopList,
|
|
79
78
|
bound: bound.mtr,
|
|
80
|
-
})
|
|
79
|
+
});
|
|
81
80
|
}
|
|
82
81
|
else if (company_id === "fortuneferry" && stops.fortuneferry) {
|
|
83
82
|
if (!stopList) {
|
|
@@ -89,14 +88,14 @@ function fetchEtas({ route, stops, bound, dest, freq, seq, serviceType, co, nlbI
|
|
|
89
88
|
if (!holidays) {
|
|
90
89
|
throw new Error("fortuneferry requires holidays");
|
|
91
90
|
}
|
|
92
|
-
|
|
91
|
+
return (0, fortuneferry_1.default)({
|
|
93
92
|
stops,
|
|
94
93
|
seq,
|
|
95
94
|
stopList,
|
|
96
95
|
freq,
|
|
97
96
|
serviceDayMap,
|
|
98
97
|
holidays,
|
|
99
|
-
})
|
|
98
|
+
});
|
|
100
99
|
}
|
|
101
100
|
else if (company_id === "sunferry" && stops.sunferry) {
|
|
102
101
|
if (!serviceDayMap) {
|
|
@@ -105,7 +104,7 @@ function fetchEtas({ route, stops, bound, dest, freq, seq, serviceType, co, nlbI
|
|
|
105
104
|
if (!holidays) {
|
|
106
105
|
throw new Error("sunferry requires holidays");
|
|
107
106
|
}
|
|
108
|
-
|
|
107
|
+
return (0, sunferry_1.default)({ route, seq, holidays, serviceDayMap, freq });
|
|
109
108
|
}
|
|
110
109
|
else if (company_id === "hkkf" && stops.hkkf) {
|
|
111
110
|
if (!serviceDayMap) {
|
|
@@ -114,14 +113,25 @@ function fetchEtas({ route, stops, bound, dest, freq, seq, serviceType, co, nlbI
|
|
|
114
113
|
if (!holidays) {
|
|
115
114
|
throw new Error("hkkf requires holidays");
|
|
116
115
|
}
|
|
117
|
-
|
|
116
|
+
return (0, hkkf_1.default)({
|
|
118
117
|
route,
|
|
119
118
|
bound: bound.hkkf,
|
|
120
119
|
freq,
|
|
121
120
|
seq,
|
|
122
121
|
holidays,
|
|
123
122
|
serviceDayMap,
|
|
124
|
-
})
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
return [];
|
|
126
|
+
}));
|
|
127
|
+
const settled = yield Promise.allSettled(tasks);
|
|
128
|
+
let _etas = [];
|
|
129
|
+
for (const result of settled) {
|
|
130
|
+
if (result.status === "fulfilled") {
|
|
131
|
+
_etas = _etas.concat(result.value);
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
console.error(result.reason);
|
|
125
135
|
}
|
|
126
136
|
}
|
|
127
137
|
if (_etas.some((e) => e.eta)) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAwB;AACxB,gDAAwB;AACxB,gDAAwB;AACxB,4DAAoC;AACpC,gDAAwB;AACxB,4DAAoC;AACpC,gDAAwB;AACxB,0DAAkC;AAClC,kEAA0C;AAC1C,kDAA0B;AAoB1B,SAAsB,SAAS,CAAC,EAC9B,KAAK,EACL,KAAK,EACL,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,GAAG,EACH,WAAW,EACX,EAAE,EACF,KAAK,EACL,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,aAAa,GACE;;QACf,IAAI;YACF,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/journeyTime.js
CHANGED
|
@@ -15,9 +15,10 @@ const __HK_BUS_ETA_JT_CACHE__ = {};
|
|
|
15
15
|
function fetchEstJourneyTimeBasedOnHistoricalData({ route, startSeq, endSeq, }) {
|
|
16
16
|
return __awaiter(this, void 0, void 0, function* () {
|
|
17
17
|
const requests = [];
|
|
18
|
+
const stops = Object.values(route.stops)[0];
|
|
18
19
|
for (let i = startSeq; i < endSeq; ++i) {
|
|
19
|
-
const start =
|
|
20
|
-
const end =
|
|
20
|
+
const start = stops[i];
|
|
21
|
+
const end = stops[i + 1];
|
|
21
22
|
const day = parseInt((0, date_fns_tz_1.formatInTimeZone)(new Date(), "Asia/Hong_Kong", "i"), 10) - 1;
|
|
22
23
|
const hour = (0, date_fns_tz_1.formatInTimeZone)(new Date(), "Asia/Hong_Kong", "HH");
|
|
23
24
|
requests.push(fetch(`https://raw.githubusercontent.com/HK-Bus-ETA/hk-bus-time-between-stops/refs/heads/pages/times_hourly/${day}/${hour}/${start.slice(0, 2)}.json`)
|
|
@@ -35,9 +36,10 @@ function fetchEstJourneyTimeBasedOnHistoricalData({ route, startSeq, endSeq, })
|
|
|
35
36
|
function fetchEstJourneyTimeBasedOnHistoricalAvgData({ route, startSeq, endSeq, }) {
|
|
36
37
|
return __awaiter(this, void 0, void 0, function* () {
|
|
37
38
|
const requests = [];
|
|
39
|
+
const stops = Object.values(route.stops)[0];
|
|
38
40
|
for (let i = startSeq; i < endSeq; ++i) {
|
|
39
|
-
const start =
|
|
40
|
-
const end =
|
|
41
|
+
const start = stops[i];
|
|
42
|
+
const end = stops[i + 1];
|
|
41
43
|
requests.push(fetch(`https://raw.githubusercontent.com/HK-Bus-ETA/hk-bus-time-between-stops/refs/heads/pages/times/${start.slice(0, 2)}.json`)
|
|
42
44
|
.then((r) => r.json())
|
|
43
45
|
.then((r) => {
|
package/dist/journeyTime.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"journeyTime.js","sourceRoot":"","sources":["../src/journeyTime.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,6CAA+C;AAU/C,MAAM,uBAAuB,GAAa,EAAE,CAAC;AAE7C,SAAe,wCAAwC,CAAC,EACtD,KAAK,EACL,QAAQ,EACR,MAAM,GAKP;;QACC,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,KAAK,IAAI,CAAC,GAAG,QAAQ,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE;YACtC,MAAM,KAAK,GAAG,
|
|
1
|
+
{"version":3,"file":"journeyTime.js","sourceRoot":"","sources":["../src/journeyTime.ts"],"names":[],"mappings":"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"}
|
package/dist/lightRail.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const utils_1 = require("./utils");
|
|
4
4
|
function fetchEtas({ stopId, route, dest, }) {
|
|
5
|
-
return fetch(`https://rt.data.gov.hk/v1/transport/mtr/lrt/getSchedule?station_id=${stopId.slice(2)}`, {
|
|
5
|
+
return fetch(`https://rt.data.gov.hk/v1/transport/mtr/lrt/getSchedule?station_id=${stopId.slice(2)}&with_special=1`, {
|
|
6
6
|
cache: utils_1.isSafari ? "default" : "no-store",
|
|
7
7
|
})
|
|
8
8
|
.then((response) => response.json())
|
package/dist/lightRail.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lightRail.js","sourceRoot":"","sources":["../src/lightRail.ts"],"names":[],"mappings":";;AACA,mCAAmC;AAQnC,SAAwB,SAAS,CAAC,EAChC,MAAM,EACN,KAAK,EACL,IAAI,GACW;IACf,OAAO,KAAK,CACV,sEAAsE,MAAM,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"lightRail.js","sourceRoot":"","sources":["../src/lightRail.ts"],"names":[],"mappings":"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"}
|
package/esm/index.js
CHANGED
|
@@ -10,10 +10,9 @@ import fortuneferry from "./fortuneferry";
|
|
|
10
10
|
import hkkf from "./hkkf";
|
|
11
11
|
export async function fetchEtas({ route, stops, bound, dest, freq, seq, serviceType, co, nlbId, gtfsId, stopList, language, holidays, serviceDayMap, }) {
|
|
12
12
|
try {
|
|
13
|
-
|
|
14
|
-
for (const company_id of co) {
|
|
13
|
+
const tasks = co.map(async (company_id) => {
|
|
15
14
|
if (company_id === "kmb" && stops.kmb) {
|
|
16
|
-
|
|
15
|
+
return kmb({
|
|
17
16
|
route,
|
|
18
17
|
stops: stops.kmb,
|
|
19
18
|
stopId: stops.kmb[seq],
|
|
@@ -21,33 +20,33 @@ export async function fetchEtas({ route, stops, bound, dest, freq, seq, serviceT
|
|
|
21
20
|
co,
|
|
22
21
|
serviceType,
|
|
23
22
|
bound: bound.kmb,
|
|
24
|
-
})
|
|
23
|
+
});
|
|
25
24
|
}
|
|
26
25
|
else if (company_id === "ctb" && stops.ctb) {
|
|
27
|
-
|
|
26
|
+
return ctb({ stopId: stops.ctb[seq], route, bound: bound.ctb, seq });
|
|
28
27
|
}
|
|
29
28
|
else if (company_id === "nlb" && stops.nlb) {
|
|
30
|
-
|
|
29
|
+
return nlb({ stopId: stops.nlb[seq], nlbId, language });
|
|
31
30
|
}
|
|
32
31
|
else if (company_id === "lrtfeeder" && stops.lrtfeeder) {
|
|
33
|
-
|
|
32
|
+
return lrtfeeder({ stopId: stops.lrtfeeder[seq], route, language });
|
|
34
33
|
}
|
|
35
34
|
else if (company_id === "gmb" && stops.gmb) {
|
|
36
|
-
|
|
35
|
+
return gmb({ stopId: stops.gmb[seq], gtfsId, seq, bound: bound.gmb });
|
|
37
36
|
}
|
|
38
37
|
else if (company_id === "lightRail" && stops.lightRail) {
|
|
39
|
-
|
|
38
|
+
return lightrail({ stopId: stops.lightRail[seq], route, dest });
|
|
40
39
|
}
|
|
41
40
|
else if (company_id === "mtr" && stops.mtr) {
|
|
42
41
|
if (!stopList) {
|
|
43
42
|
throw new Error("mtr requires stopList");
|
|
44
43
|
}
|
|
45
|
-
|
|
44
|
+
return mtr({
|
|
46
45
|
stopId: stops.mtr[seq],
|
|
47
46
|
route,
|
|
48
47
|
stopList,
|
|
49
48
|
bound: bound.mtr,
|
|
50
|
-
})
|
|
49
|
+
});
|
|
51
50
|
}
|
|
52
51
|
else if (company_id === "fortuneferry" && stops.fortuneferry) {
|
|
53
52
|
if (!stopList) {
|
|
@@ -59,14 +58,14 @@ export async function fetchEtas({ route, stops, bound, dest, freq, seq, serviceT
|
|
|
59
58
|
if (!holidays) {
|
|
60
59
|
throw new Error("fortuneferry requires holidays");
|
|
61
60
|
}
|
|
62
|
-
|
|
61
|
+
return fortuneferry({
|
|
63
62
|
stops,
|
|
64
63
|
seq,
|
|
65
64
|
stopList,
|
|
66
65
|
freq,
|
|
67
66
|
serviceDayMap,
|
|
68
67
|
holidays,
|
|
69
|
-
})
|
|
68
|
+
});
|
|
70
69
|
}
|
|
71
70
|
else if (company_id === "sunferry" && stops.sunferry) {
|
|
72
71
|
if (!serviceDayMap) {
|
|
@@ -75,7 +74,7 @@ export async function fetchEtas({ route, stops, bound, dest, freq, seq, serviceT
|
|
|
75
74
|
if (!holidays) {
|
|
76
75
|
throw new Error("sunferry requires holidays");
|
|
77
76
|
}
|
|
78
|
-
|
|
77
|
+
return sunferry({ route, seq, holidays, serviceDayMap, freq });
|
|
79
78
|
}
|
|
80
79
|
else if (company_id === "hkkf" && stops.hkkf) {
|
|
81
80
|
if (!serviceDayMap) {
|
|
@@ -84,14 +83,25 @@ export async function fetchEtas({ route, stops, bound, dest, freq, seq, serviceT
|
|
|
84
83
|
if (!holidays) {
|
|
85
84
|
throw new Error("hkkf requires holidays");
|
|
86
85
|
}
|
|
87
|
-
|
|
86
|
+
return hkkf({
|
|
88
87
|
route,
|
|
89
88
|
bound: bound.hkkf,
|
|
90
89
|
freq,
|
|
91
90
|
seq,
|
|
92
91
|
holidays,
|
|
93
92
|
serviceDayMap,
|
|
94
|
-
})
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
return [];
|
|
96
|
+
});
|
|
97
|
+
const settled = await Promise.allSettled(tasks);
|
|
98
|
+
let _etas = [];
|
|
99
|
+
for (const result of settled) {
|
|
100
|
+
if (result.status === "fulfilled") {
|
|
101
|
+
_etas = _etas.concat(result.value);
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
console.error(result.reason);
|
|
95
105
|
}
|
|
96
106
|
}
|
|
97
107
|
if (_etas.some((e) => e.eta)) {
|
package/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,OAAO,CAAC;AACxB,OAAO,GAAG,MAAM,OAAO,CAAC;AACxB,OAAO,GAAG,MAAM,OAAO,CAAC;AACxB,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,GAAG,MAAM,OAAO,CAAC;AACxB,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,GAAG,MAAM,OAAO,CAAC;AACxB,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,IAAI,MAAM,QAAQ,CAAC;AAoB1B,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,EAC9B,KAAK,EACL,KAAK,EACL,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,GAAG,EACH,WAAW,EACX,EAAE,EACF,KAAK,EACL,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,aAAa,GACE;IACf,IAAI;QACF,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,OAAO,CAAC;AACxB,OAAO,GAAG,MAAM,OAAO,CAAC;AACxB,OAAO,GAAG,MAAM,OAAO,CAAC;AACxB,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,GAAG,MAAM,OAAO,CAAC;AACxB,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,GAAG,MAAM,OAAO,CAAC;AACxB,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,IAAI,MAAM,QAAQ,CAAC;AAoB1B,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,EAC9B,KAAK,EACL,KAAK,EACL,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,GAAG,EACH,WAAW,EACX,EAAE,EACF,KAAK,EACL,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,aAAa,GACE;IACf,IAAI;QACF,MAAM,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,EAAkB,EAAE;YACxD,IAAI,UAAU,KAAK,KAAK,IAAI,KAAK,CAAC,GAAG,EAAE;gBACrC,OAAO,GAAG,CAAC;oBACT,KAAK;oBACL,KAAK,EAAE,KAAK,CAAC,GAAG;oBAChB,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;oBACtB,GAAG;oBACH,EAAE;oBACF,WAAW;oBACX,KAAK,EAAE,KAAK,CAAC,GAAG;iBACjB,CAAC,CAAC;aACJ;iBAAM,IAAI,UAAU,KAAK,KAAK,IAAI,KAAK,CAAC,GAAG,EAAE;gBAC5C,OAAO,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;aACtE;iBAAM,IAAI,UAAU,KAAK,KAAK,IAAI,KAAK,CAAC,GAAG,EAAE;gBAC5C,OAAO,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;aACzD;iBAAM,IAAI,UAAU,KAAK,WAAW,IAAI,KAAK,CAAC,SAAS,EAAE;gBACxD,OAAO,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;aACrE;iBAAM,IAAI,UAAU,KAAK,KAAK,IAAI,KAAK,CAAC,GAAG,EAAE;gBAC5C,OAAO,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;aACvE;iBAAM,IAAI,UAAU,KAAK,WAAW,IAAI,KAAK,CAAC,SAAS,EAAE;gBACxD,OAAO,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;aACjE;iBAAM,IAAI,UAAU,KAAK,KAAK,IAAI,KAAK,CAAC,GAAG,EAAE;gBAC5C,IAAI,CAAC,QAAQ,EAAE;oBACb,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;iBAC1C;gBACD,OAAO,GAAG,CAAC;oBACT,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;oBACtB,KAAK;oBACL,QAAQ;oBACR,KAAK,EAAE,KAAK,CAAC,GAAG;iBACjB,CAAC,CAAC;aACJ;iBAAM,IAAI,UAAU,KAAK,cAAc,IAAI,KAAK,CAAC,YAAY,EAAE;gBAC9D,IAAI,CAAC,QAAQ,EAAE;oBACb,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;iBACnD;gBACD,IAAI,CAAC,aAAa,EAAE;oBAClB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;iBACxD;gBACD,IAAI,CAAC,QAAQ,EAAE;oBACb,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;iBACnD;gBACD,OAAO,YAAY,CAAC;oBAClB,KAAK;oBACL,GAAG;oBACH,QAAQ;oBACR,IAAI;oBACJ,aAAa;oBACb,QAAQ;iBACT,CAAC,CAAC;aACJ;iBAAM,IAAI,UAAU,KAAK,UAAU,IAAI,KAAK,CAAC,QAAQ,EAAE;gBACtD,IAAI,CAAC,aAAa,EAAE;oBAClB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;iBACpD;gBACD,IAAI,CAAC,QAAQ,EAAE;oBACb,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;iBAC/C;gBACD,OAAO,QAAQ,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;aAChE;iBAAM,IAAI,UAAU,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE;gBAC9C,IAAI,CAAC,aAAa,EAAE;oBAClB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;iBAChD;gBACD,IAAI,CAAC,QAAQ,EAAE;oBACb,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;iBAC3C;gBACD,OAAO,IAAI,CAAC;oBACV,KAAK;oBACL,KAAK,EAAE,KAAK,CAAC,IAAI;oBACjB,IAAI;oBACJ,GAAG;oBACH,QAAQ;oBACR,aAAa;iBACd,CAAC,CAAC;aACJ;YAED,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAEhD,IAAI,KAAK,GAAU,EAAE,CAAC;QACtB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC5B,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE;gBACjC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;aACpC;iBAAM;gBACL,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;aAC9B;SACF;QAED,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;YAC5B,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;SACpC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACzB,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,EAAE;gBAAE,OAAO,CAAC,CAAC;iBAChC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,EAAE;gBAAE,OAAO,CAAC,CAAC,CAAC;YAC3C,OAAO,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;KACJ;IAAC,OAAO,GAAG,EAAE;QACZ,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnB,OAAO,EAAE,CAAC;KACX;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,OAAO,KAAK,CAAC,+CAA+C,EAAE;QAC5D,KAAK,EAAE,UAAU;KAClB,CAAC;SACC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACrB,KAAK,CAAC,GAAG,EAAE,CACV,KAAK,CAAC,gEAAgE,EAAE;QACtE,KAAK,EAAE,UAAU;KAClB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CACzB,CAAC;AACN,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,OAAO,KAAK,CAAC,0CAA0C,EAAE;QACvD,KAAK,EAAE,UAAU;KAClB,CAAC;SACC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACrB,KAAK,CAAC,GAAG,EAAE,CACV,KAAK,CAAC,2DAA2D,EAAE;QACjE,KAAK,EAAE,UAAU;KAClB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CACzB,CAAC;AACN,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,KAAqB;IAErB,MAAM,QAAQ,GACZ,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC;IACxF,OAAO,KAAK,CACV,mCAAmC,QAAQ,CAAC,OAAO,CAAC,2BAA2B,EAAE,EAAE,CAAC,EAAE,CACvF;SACE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;QACV,IAAI,CAAC,CAAC,EAAE,EAAE;YACR,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;SACjB;QACD,MAAM,KAAK,CAAC,WAAW,CAAC,CAAC;IAC3B,CAAC,CAAC;SACD,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC;SACnC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;QACX,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;AACP,CAAC;AAED,cAAc,eAAe,CAAC"}
|
package/esm/journeyTime.js
CHANGED
|
@@ -2,9 +2,10 @@ import { formatInTimeZone } from "date-fns-tz";
|
|
|
2
2
|
const __HK_BUS_ETA_JT_CACHE__ = {};
|
|
3
3
|
async function fetchEstJourneyTimeBasedOnHistoricalData({ route, startSeq, endSeq, }) {
|
|
4
4
|
const requests = [];
|
|
5
|
+
const stops = Object.values(route.stops)[0];
|
|
5
6
|
for (let i = startSeq; i < endSeq; ++i) {
|
|
6
|
-
const start =
|
|
7
|
-
const end =
|
|
7
|
+
const start = stops[i];
|
|
8
|
+
const end = stops[i + 1];
|
|
8
9
|
const day = parseInt(formatInTimeZone(new Date(), "Asia/Hong_Kong", "i"), 10) - 1;
|
|
9
10
|
const hour = formatInTimeZone(new Date(), "Asia/Hong_Kong", "HH");
|
|
10
11
|
requests.push(fetch(`https://raw.githubusercontent.com/HK-Bus-ETA/hk-bus-time-between-stops/refs/heads/pages/times_hourly/${day}/${hour}/${start.slice(0, 2)}.json`)
|
|
@@ -20,9 +21,10 @@ async function fetchEstJourneyTimeBasedOnHistoricalData({ route, startSeq, endSe
|
|
|
20
21
|
}
|
|
21
22
|
async function fetchEstJourneyTimeBasedOnHistoricalAvgData({ route, startSeq, endSeq, }) {
|
|
22
23
|
const requests = [];
|
|
24
|
+
const stops = Object.values(route.stops)[0];
|
|
23
25
|
for (let i = startSeq; i < endSeq; ++i) {
|
|
24
|
-
const start =
|
|
25
|
-
const end =
|
|
26
|
+
const start = stops[i];
|
|
27
|
+
const end = stops[i + 1];
|
|
26
28
|
requests.push(fetch(`https://raw.githubusercontent.com/HK-Bus-ETA/hk-bus-time-between-stops/refs/heads/pages/times/${start.slice(0, 2)}.json`)
|
|
27
29
|
.then((r) => r.json())
|
|
28
30
|
.then((r) => {
|
package/esm/journeyTime.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"journeyTime.js","sourceRoot":"","sources":["../src/journeyTime.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAU/C,MAAM,uBAAuB,GAAa,EAAE,CAAC;AAE7C,KAAK,UAAU,wCAAwC,CAAC,EACtD,KAAK,EACL,QAAQ,EACR,MAAM,GAKP;IACC,MAAM,QAAQ,GAAG,EAAE,CAAC;IACpB,KAAK,IAAI,CAAC,GAAG,QAAQ,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE;QACtC,MAAM,KAAK,GAAG,
|
|
1
|
+
{"version":3,"file":"journeyTime.js","sourceRoot":"","sources":["../src/journeyTime.ts"],"names":[],"mappings":"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"}
|
package/esm/lightRail.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { isSafari } from "./utils";
|
|
2
2
|
export default function fetchEtas({ stopId, route, dest, }) {
|
|
3
|
-
return fetch(`https://rt.data.gov.hk/v1/transport/mtr/lrt/getSchedule?station_id=${stopId.slice(2)}`, {
|
|
3
|
+
return fetch(`https://rt.data.gov.hk/v1/transport/mtr/lrt/getSchedule?station_id=${stopId.slice(2)}&with_special=1`, {
|
|
4
4
|
cache: isSafari ? "default" : "no-store",
|
|
5
5
|
})
|
|
6
6
|
.then((response) => response.json())
|
package/esm/lightRail.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lightRail.js","sourceRoot":"","sources":["../src/lightRail.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAQnC,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAChC,MAAM,EACN,KAAK,EACL,IAAI,GACW;IACf,OAAO,KAAK,CACV,sEAAsE,MAAM,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"lightRail.js","sourceRoot":"","sources":["../src/lightRail.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "hk-bus-eta",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.8.0",
|
|
4
4
|
"description": "Query the ETA (Estimated Time of Arrival) of HK Bus/Minibus/MTR/Lightrail",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "esm/index.js",
|
|
@@ -42,13 +42,13 @@
|
|
|
42
42
|
},
|
|
43
43
|
"homepage": "https://hk-bus-eta.hkbus.app/",
|
|
44
44
|
"devDependencies": {
|
|
45
|
-
"@types/jest": "^29.5.
|
|
46
|
-
"jest": "^29.
|
|
47
|
-
"prettier": "^3.
|
|
48
|
-
"rimraf": "^5.0.
|
|
49
|
-
"ts-jest": "^29.
|
|
50
|
-
"ts-node": "^10.9.
|
|
51
|
-
"typescript": "^5.
|
|
45
|
+
"@types/jest": "^29.5.14",
|
|
46
|
+
"jest": "^29.7.0",
|
|
47
|
+
"prettier": "^3.8.3",
|
|
48
|
+
"rimraf": "^5.0.10",
|
|
49
|
+
"ts-jest": "^29.4.9",
|
|
50
|
+
"ts-node": "^10.9.2",
|
|
51
|
+
"typescript": "^5.9.3"
|
|
52
52
|
},
|
|
53
53
|
"dependencies": {
|
|
54
54
|
"@date-fns/tz": "^1.4.1",
|
package/src/index.ts
CHANGED
|
@@ -44,50 +44,37 @@ export async function fetchEtas({
|
|
|
44
44
|
serviceDayMap,
|
|
45
45
|
}: fetchEtasProps): Promise<Eta[]> {
|
|
46
46
|
try {
|
|
47
|
-
|
|
48
|
-
for (const company_id of co) {
|
|
47
|
+
const tasks = co.map(async (company_id): Promise<Eta[]> => {
|
|
49
48
|
if (company_id === "kmb" && stops.kmb) {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
}),
|
|
60
|
-
);
|
|
49
|
+
return kmb({
|
|
50
|
+
route,
|
|
51
|
+
stops: stops.kmb,
|
|
52
|
+
stopId: stops.kmb[seq],
|
|
53
|
+
seq,
|
|
54
|
+
co,
|
|
55
|
+
serviceType,
|
|
56
|
+
bound: bound.kmb,
|
|
57
|
+
});
|
|
61
58
|
} else if (company_id === "ctb" && stops.ctb) {
|
|
62
|
-
|
|
63
|
-
await ctb({ stopId: stops.ctb[seq], route, bound: bound.ctb, seq }),
|
|
64
|
-
);
|
|
59
|
+
return ctb({ stopId: stops.ctb[seq], route, bound: bound.ctb, seq });
|
|
65
60
|
} else if (company_id === "nlb" && stops.nlb) {
|
|
66
|
-
|
|
61
|
+
return nlb({ stopId: stops.nlb[seq], nlbId, language });
|
|
67
62
|
} else if (company_id === "lrtfeeder" && stops.lrtfeeder) {
|
|
68
|
-
|
|
69
|
-
await lrtfeeder({ stopId: stops.lrtfeeder[seq], route, language }),
|
|
70
|
-
);
|
|
63
|
+
return lrtfeeder({ stopId: stops.lrtfeeder[seq], route, language });
|
|
71
64
|
} else if (company_id === "gmb" && stops.gmb) {
|
|
72
|
-
|
|
73
|
-
await gmb({ stopId: stops.gmb[seq], gtfsId, seq, bound: bound.gmb }),
|
|
74
|
-
);
|
|
65
|
+
return gmb({ stopId: stops.gmb[seq], gtfsId, seq, bound: bound.gmb });
|
|
75
66
|
} else if (company_id === "lightRail" && stops.lightRail) {
|
|
76
|
-
|
|
77
|
-
await lightrail({ stopId: stops.lightRail[seq], route, dest }),
|
|
78
|
-
);
|
|
67
|
+
return lightrail({ stopId: stops.lightRail[seq], route, dest });
|
|
79
68
|
} else if (company_id === "mtr" && stops.mtr) {
|
|
80
69
|
if (!stopList) {
|
|
81
70
|
throw new Error("mtr requires stopList");
|
|
82
71
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
}),
|
|
90
|
-
);
|
|
72
|
+
return mtr({
|
|
73
|
+
stopId: stops.mtr[seq],
|
|
74
|
+
route,
|
|
75
|
+
stopList,
|
|
76
|
+
bound: bound.mtr,
|
|
77
|
+
});
|
|
91
78
|
} else if (company_id === "fortuneferry" && stops.fortuneferry) {
|
|
92
79
|
if (!stopList) {
|
|
93
80
|
throw new Error("fortuneferry requires stopList");
|
|
@@ -98,16 +85,14 @@ export async function fetchEtas({
|
|
|
98
85
|
if (!holidays) {
|
|
99
86
|
throw new Error("fortuneferry requires holidays");
|
|
100
87
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
}),
|
|
110
|
-
);
|
|
88
|
+
return fortuneferry({
|
|
89
|
+
stops,
|
|
90
|
+
seq,
|
|
91
|
+
stopList,
|
|
92
|
+
freq,
|
|
93
|
+
serviceDayMap,
|
|
94
|
+
holidays,
|
|
95
|
+
});
|
|
111
96
|
} else if (company_id === "sunferry" && stops.sunferry) {
|
|
112
97
|
if (!serviceDayMap) {
|
|
113
98
|
throw new Error("sunferry requires serviceDayMap");
|
|
@@ -115,9 +100,7 @@ export async function fetchEtas({
|
|
|
115
100
|
if (!holidays) {
|
|
116
101
|
throw new Error("sunferry requires holidays");
|
|
117
102
|
}
|
|
118
|
-
|
|
119
|
-
await sunferry({ route, seq, holidays, serviceDayMap, freq }),
|
|
120
|
-
);
|
|
103
|
+
return sunferry({ route, seq, holidays, serviceDayMap, freq });
|
|
121
104
|
} else if (company_id === "hkkf" && stops.hkkf) {
|
|
122
105
|
if (!serviceDayMap) {
|
|
123
106
|
throw new Error("hkkf requires serviceDayMap");
|
|
@@ -125,16 +108,27 @@ export async function fetchEtas({
|
|
|
125
108
|
if (!holidays) {
|
|
126
109
|
throw new Error("hkkf requires holidays");
|
|
127
110
|
}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
111
|
+
return hkkf({
|
|
112
|
+
route,
|
|
113
|
+
bound: bound.hkkf,
|
|
114
|
+
freq,
|
|
115
|
+
seq,
|
|
116
|
+
holidays,
|
|
117
|
+
serviceDayMap,
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
return [];
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
const settled = await Promise.allSettled(tasks);
|
|
125
|
+
|
|
126
|
+
let _etas: Eta[] = [];
|
|
127
|
+
for (const result of settled) {
|
|
128
|
+
if (result.status === "fulfilled") {
|
|
129
|
+
_etas = _etas.concat(result.value);
|
|
130
|
+
} else {
|
|
131
|
+
console.error(result.reason);
|
|
138
132
|
}
|
|
139
133
|
}
|
|
140
134
|
|
package/src/journeyTime.ts
CHANGED
|
@@ -21,12 +21,15 @@ async function fetchEstJourneyTimeBasedOnHistoricalData({
|
|
|
21
21
|
endSeq: number;
|
|
22
22
|
}): Promise<number> {
|
|
23
23
|
const requests = [];
|
|
24
|
+
const stops = Object.values(route.stops)[0];
|
|
25
|
+
|
|
24
26
|
for (let i = startSeq; i < endSeq; ++i) {
|
|
25
|
-
const start =
|
|
26
|
-
const end =
|
|
27
|
+
const start = stops[i];
|
|
28
|
+
const end = stops[i + 1];
|
|
27
29
|
const day =
|
|
28
30
|
parseInt(formatInTimeZone(new Date(), "Asia/Hong_Kong", "i"), 10) - 1;
|
|
29
31
|
const hour = formatInTimeZone(new Date(), "Asia/Hong_Kong", "HH");
|
|
32
|
+
|
|
30
33
|
requests.push(
|
|
31
34
|
fetch(
|
|
32
35
|
`https://raw.githubusercontent.com/HK-Bus-ETA/hk-bus-time-between-stops/refs/heads/pages/times_hourly/${day}/${hour}/${start.slice(0, 2)}.json`,
|
|
@@ -40,6 +43,7 @@ async function fetchEstJourneyTimeBasedOnHistoricalData({
|
|
|
40
43
|
}),
|
|
41
44
|
);
|
|
42
45
|
}
|
|
46
|
+
|
|
43
47
|
return Promise.all(requests).then((seconds) =>
|
|
44
48
|
Math.ceil(seconds.reduce((acc, cur) => acc + cur, 0) / 60),
|
|
45
49
|
);
|
|
@@ -55,9 +59,12 @@ async function fetchEstJourneyTimeBasedOnHistoricalAvgData({
|
|
|
55
59
|
endSeq: number;
|
|
56
60
|
}): Promise<number> {
|
|
57
61
|
const requests = [];
|
|
62
|
+
const stops = Object.values(route.stops)[0];
|
|
63
|
+
|
|
58
64
|
for (let i = startSeq; i < endSeq; ++i) {
|
|
59
|
-
const start =
|
|
60
|
-
const end =
|
|
65
|
+
const start = stops[i];
|
|
66
|
+
const end = stops[i + 1];
|
|
67
|
+
|
|
61
68
|
requests.push(
|
|
62
69
|
fetch(
|
|
63
70
|
`https://raw.githubusercontent.com/HK-Bus-ETA/hk-bus-time-between-stops/refs/heads/pages/times/${start.slice(0, 2)}.json`,
|
|
@@ -71,6 +78,7 @@ async function fetchEstJourneyTimeBasedOnHistoricalAvgData({
|
|
|
71
78
|
}),
|
|
72
79
|
);
|
|
73
80
|
}
|
|
81
|
+
|
|
74
82
|
return Promise.all(requests).then((seconds) =>
|
|
75
83
|
Math.ceil(seconds.reduce((acc, cur) => acc + cur, 0) / 60),
|
|
76
84
|
);
|
package/src/lightRail.ts
CHANGED
|
@@ -13,9 +13,7 @@ export default function fetchEtas({
|
|
|
13
13
|
dest,
|
|
14
14
|
}: fetchEtasProps): Promise<Eta[]> {
|
|
15
15
|
return fetch(
|
|
16
|
-
`https://rt.data.gov.hk/v1/transport/mtr/lrt/getSchedule?station_id=${stopId.slice(
|
|
17
|
-
2,
|
|
18
|
-
)}`,
|
|
16
|
+
`https://rt.data.gov.hk/v1/transport/mtr/lrt/getSchedule?station_id=${stopId.slice(2,)}&with_special=1`,
|
|
19
17
|
{
|
|
20
18
|
cache: isSafari ? "default" : "no-store",
|
|
21
19
|
},
|