hk-bus-eta 2.1.1 → 2.1.3
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 +2 -0
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/esm/index.js +3 -3
- package/esm/index.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +4 -3
- package/src/kmb.ts +11 -1
package/README.md
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
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
|
+
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
|
+
|
|
5
7
|
## Demo
|
|
6
8
|
|
|
7
9
|
Live demo is available [here](https://hk-bus-eta.chunlaw.io/).
|
package/dist/index.js
CHANGED
|
@@ -30,11 +30,11 @@ function fetchEtas({ route, stops, bound, dest, seq, serviceType, co, nlbId, gtf
|
|
|
30
30
|
route,
|
|
31
31
|
stopId: stops.kmb[seq],
|
|
32
32
|
seq, co,
|
|
33
|
-
serviceType, bound: bound
|
|
33
|
+
serviceType, bound: bound.kmb,
|
|
34
34
|
}));
|
|
35
35
|
}
|
|
36
36
|
else if (company_id === 'ctb' && stops.ctb) {
|
|
37
|
-
_etas = _etas.concat(yield (0, ctb_1.default)({ stopId: stops.ctb[seq], route, bound: bound
|
|
37
|
+
_etas = _etas.concat(yield (0, ctb_1.default)({ stopId: stops.ctb[seq], route, bound: bound.ctb, seq }));
|
|
38
38
|
}
|
|
39
39
|
else if (company_id === 'nlb' && stops.nlb) {
|
|
40
40
|
_etas = _etas.concat(yield (0, nlb_1.default)({ stopId: stops.nlb[seq], nlbId }));
|
|
@@ -43,7 +43,7 @@ function fetchEtas({ route, stops, bound, dest, seq, serviceType, co, nlbId, gtf
|
|
|
43
43
|
_etas = _etas.concat(yield (0, lrtfeeder_1.default)({ stopId: stops.lrtfeeder[seq], route, language }));
|
|
44
44
|
}
|
|
45
45
|
else if (company_id === 'gmb' && stops.gmb) {
|
|
46
|
-
_etas = _etas.concat(yield (0, gmb_1.default)({ stopId: stops.gmb[seq], gtfsId, seq, bound: bound
|
|
46
|
+
_etas = _etas.concat(yield (0, gmb_1.default)({ stopId: stops.gmb[seq], gtfsId, seq, bound: bound.gmb }));
|
|
47
47
|
}
|
|
48
48
|
else if (company_id === 'lightRail' && stops.lightRail) {
|
|
49
49
|
_etas = _etas.concat(yield (0, lightRail_1.default)({ stopId: stops.lightRail[seq], route, dest }));
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,gDAAuB;AACvB,gDAAuB;AACvB,gDAAuB;AACvB,4DAAmC;AACnC,gDAAuB;AACvB,4DAAmC;AACnC,gDAAuB;AAQvB,SAAsB,SAAS,CAAG,EAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAkB;;QAC3H,IAAI;YACF,IAAI,KAAK,GAAU,EAAE,CAAA;YACrB,KAAM,MAAM,UAAU,IAAI,EAAE,EAAG;gBAC7B,IAAI,UAAU,KAAK,KAAK,IAAI,KAAK,CAAC,GAAG,EAAE;oBACrC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAE,MAAM,IAAA,aAAG,EAAC;wBAC9B,KAAK;wBACL,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;wBACtB,GAAG,EAAE,EAAE;wBACP,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/esm/index.js
CHANGED
|
@@ -14,11 +14,11 @@ export async function fetchEtas({ route, stops, bound, dest, seq, serviceType, c
|
|
|
14
14
|
route,
|
|
15
15
|
stopId: stops.kmb[seq],
|
|
16
16
|
seq, co,
|
|
17
|
-
serviceType, bound: bound
|
|
17
|
+
serviceType, bound: bound.kmb,
|
|
18
18
|
}));
|
|
19
19
|
}
|
|
20
20
|
else if (company_id === 'ctb' && stops.ctb) {
|
|
21
|
-
_etas = _etas.concat(await ctb({ stopId: stops.ctb[seq], route, bound: bound
|
|
21
|
+
_etas = _etas.concat(await ctb({ stopId: stops.ctb[seq], route, bound: bound.ctb, seq }));
|
|
22
22
|
}
|
|
23
23
|
else if (company_id === 'nlb' && stops.nlb) {
|
|
24
24
|
_etas = _etas.concat(await nlb({ stopId: stops.nlb[seq], nlbId }));
|
|
@@ -27,7 +27,7 @@ export async function fetchEtas({ route, stops, bound, dest, seq, serviceType, c
|
|
|
27
27
|
_etas = _etas.concat(await lrtfeeder({ stopId: stops.lrtfeeder[seq], route, language }));
|
|
28
28
|
}
|
|
29
29
|
else if (company_id === 'gmb' && stops.gmb) {
|
|
30
|
-
_etas = _etas.concat(await gmb({ stopId: stops.gmb[seq], gtfsId, seq, bound: bound
|
|
30
|
+
_etas = _etas.concat(await gmb({ stopId: stops.gmb[seq], gtfsId, seq, bound: bound.gmb }));
|
|
31
31
|
}
|
|
32
32
|
else if (company_id === 'lightRail' && stops.lightRail) {
|
|
33
33
|
_etas = _etas.concat(await lightrail({ stopId: stops.lightRail[seq], route, dest }));
|
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,CAAA;AACvB,OAAO,GAAG,MAAM,OAAO,CAAA;AACvB,OAAO,GAAG,MAAM,OAAO,CAAA;AACvB,OAAO,SAAS,MAAM,aAAa,CAAA;AACnC,OAAO,GAAG,MAAM,OAAO,CAAA;AACvB,OAAO,SAAS,MAAM,aAAa,CAAA;AACnC,OAAO,GAAG,MAAM,OAAO,CAAA;AAQvB,MAAM,CAAC,KAAK,UAAU,SAAS,CAAG,EAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAkB;IAC3H,IAAI;QACF,IAAI,KAAK,GAAU,EAAE,CAAA;QACrB,KAAM,MAAM,UAAU,IAAI,EAAE,EAAG;YAC7B,IAAI,UAAU,KAAK,KAAK,IAAI,KAAK,CAAC,GAAG,EAAE;gBACrC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAE,MAAM,GAAG,CAAC;oBAC9B,KAAK;oBACL,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;oBACtB,GAAG,EAAE,EAAE;oBACP,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -19,18 +19,19 @@ export async function fetchEtas ( {route, stops, bound, dest, seq, serviceType,
|
|
|
19
19
|
if (company_id === 'kmb' && stops.kmb ){
|
|
20
20
|
_etas = _etas.concat( await kmb({
|
|
21
21
|
route,
|
|
22
|
+
stops: stops.kmb,
|
|
22
23
|
stopId: stops.kmb[seq],
|
|
23
24
|
seq, co,
|
|
24
|
-
serviceType, bound: bound
|
|
25
|
+
serviceType, bound: bound.kmb,
|
|
25
26
|
}))
|
|
26
27
|
} else if ( company_id === 'ctb' && stops.ctb ) {
|
|
27
|
-
_etas = _etas.concat( await ctb({stopId: stops.ctb[seq], route, bound: bound
|
|
28
|
+
_etas = _etas.concat( await ctb({stopId: stops.ctb[seq], route, bound: bound.ctb, seq }))
|
|
28
29
|
} else if ( company_id === 'nlb' && stops.nlb ) {
|
|
29
30
|
_etas = _etas.concat( await nlb({stopId: stops.nlb[seq], nlbId}) )
|
|
30
31
|
} else if ( company_id === 'lrtfeeder' && stops.lrtfeeder ) {
|
|
31
32
|
_etas = _etas.concat( await lrtfeeder({stopId: stops.lrtfeeder[seq], route, language}))
|
|
32
33
|
} else if ( company_id === 'gmb' && stops.gmb ) {
|
|
33
|
-
_etas = _etas.concat( await gmb({stopId: stops.gmb[seq], gtfsId, seq, bound: bound
|
|
34
|
+
_etas = _etas.concat( await gmb({stopId: stops.gmb[seq], gtfsId, seq, bound: bound.gmb }) )
|
|
34
35
|
} else if ( company_id === 'lightRail' && stops.lightRail ) {
|
|
35
36
|
_etas = _etas.concat( await lightrail({ stopId: stops.lightRail[seq], route, dest }) )
|
|
36
37
|
} else if ( company_id === 'mtr' && stops.mtr ) {
|
package/src/kmb.ts
CHANGED
|
@@ -6,12 +6,13 @@ interface fetchEtasProps {
|
|
|
6
6
|
co: RouteListEntry['co'],
|
|
7
7
|
serviceType: RouteListEntry['serviceType'],
|
|
8
8
|
bound: RouteListEntry['bound']['kmb'],
|
|
9
|
+
stops: RouteListEntry['stops']['kmb'],
|
|
9
10
|
stopId: string,
|
|
10
11
|
seq: number,
|
|
11
12
|
}
|
|
12
13
|
|
|
13
14
|
// parameter seq is 0-indexed here
|
|
14
|
-
export default function fetchEtas ({stopId, route, seq, serviceType, co, bound}: fetchEtasProps): Promise<Eta[]> {
|
|
15
|
+
export default function fetchEtas ({stopId, route, seq, serviceType, stops, co, bound}: fetchEtasProps): Promise<Eta[]> {
|
|
15
16
|
return (
|
|
16
17
|
fetch(`https://data.etabus.gov.hk/v1/transport/kmb/eta/${stopId}/${route}/${serviceType}`,{
|
|
17
18
|
cache: isSafari ? 'default' : 'no-store'
|
|
@@ -27,6 +28,15 @@ export default function fetchEtas ({stopId, route, seq, serviceType, co, bound}:
|
|
|
27
28
|
// if KMB is the only service provider and the service type is matched,
|
|
28
29
|
// then sequence number should be exact matched, noted that eta.seq is 1-indexed
|
|
29
30
|
.filter((eta: any) => co.length > 1 || serviceType !== eta.service_type || eta.seq === seq + 1)
|
|
31
|
+
.filter((eta: any) => {
|
|
32
|
+
if ( stops[stops.length - 1] === stops[0] ) {
|
|
33
|
+
// handle circular route
|
|
34
|
+
if ( stopId === stops[0] ) {
|
|
35
|
+
return eta.seq === seq + 1
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return true
|
|
39
|
+
})
|
|
30
40
|
.map((e: any) => ({
|
|
31
41
|
eta: e.eta,
|
|
32
42
|
remark: {
|