hk-bus-eta 3.8.0 → 3.8.2

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 CHANGED
@@ -6,7 +6,7 @@ A Python version package is available [here](https://pypi.org/project/hk-bus-eta
6
6
 
7
7
  ## Demo
8
8
 
9
- Live demo is available [here](https://hk-bus-eta.chunlaw.io/).
9
+ Live demo is available [here](https://hk-bus-eta.hkbus.app/).
10
10
 
11
11
  ## Install
12
12
 
package/dist/lightRail.js CHANGED
@@ -23,16 +23,16 @@ function fetchEtas({ stopId, route, dest, }) {
23
23
  },
24
24
  ];
25
25
  }
26
- // How should `end_service_status` for only some platforms be handled? Would a light rail line stop at different platforms?
27
26
  return platform_list.reduce((acc, { route_list, platform_id }) => {
28
27
  return [
29
28
  ...acc,
30
- // route_list is null when there are no ETAs available
31
29
  ...(route_list !== null && route_list !== void 0 ? route_list : [])
32
- .filter(({ route_no, dest_ch, dest_en, stop }) => route === route_no &&
30
+ .filter(({ route_no, additionalInfo1, dest_ch, dest_en, stop, }) =>
31
+ // match route number OR additionalInfo1 to the requested route
32
+ (route === route_no || route === additionalInfo1) &&
33
33
  (dest_ch === dest.zh || dest_en.includes("Circular")) &&
34
34
  stop === 0)
35
- .map(({ time_en, train_length }) => {
35
+ .map(({ time_en, train_length, routeRemarkEng2, routeRemarkChi2, }) => {
36
36
  let waitTime = 0;
37
37
  switch (time_en.toLowerCase()) {
38
38
  case "arriving":
@@ -45,16 +45,25 @@ function fetchEtas({ stopId, route, dest, }) {
45
45
  break;
46
46
  }
47
47
  const etaDate = new Date(Date.now() + waitTime * 60 * 1000 + 8 * 3600000);
48
+ const platformText = `${platform_id}號月台 - ${Array(train_length)
49
+ .fill("▭")
50
+ .join("")}`;
51
+ const platformTextEn = `Platform ${platform_id} - ${Array(train_length)
52
+ .fill("▭")
53
+ .join("")}`;
54
+ // Append routeRemarkEng2 / routeRemarkChi2 if present
55
+ const remarkZh = routeRemarkChi2
56
+ ? `${platformText} - ${routeRemarkChi2}`
57
+ : platformText;
58
+ const remarkEn = routeRemarkEng2
59
+ ? `${platformTextEn} - ${routeRemarkEng2}`
60
+ : platformTextEn;
48
61
  return {
49
62
  eta: `${etaDate.getUTCFullYear()}-${`0${etaDate.getUTCMonth() + 1}`.slice(-2)}-${`0${etaDate.getUTCDate()}`.slice(-2)}` +
50
63
  `T${`0${etaDate.getUTCHours()}`.slice(-2)}:${`0${etaDate.getMinutes()}`.slice(-2)}:${`0${etaDate.getSeconds()}`.slice(-2)}+08:00`,
51
64
  remark: {
52
- zh: `${platform_id}號月台 - ${Array(train_length)
53
- .fill("▭")
54
- .join("")}`,
55
- en: `Platform ${platform_id} - ${Array(train_length)
56
- .fill("▭")
57
- .join("")}`,
65
+ zh: remarkZh,
66
+ en: remarkEn,
58
67
  },
59
68
  dest: {
60
69
  zh: "",
@@ -62,7 +71,7 @@ function fetchEtas({ stopId, route, dest, }) {
62
71
  },
63
72
  co: "lightRail",
64
73
  };
65
- }, []),
74
+ }),
66
75
  ];
67
76
  }, []);
68
77
  })
@@ -1 +1 @@
1
- {"version":3,"file":"lightRail.js","sourceRoot":"","sources":["../src/lightRail.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lightRail.js","sourceRoot":"","sources":["../src/lightRail.ts"],"names":[],"mappings":"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"}
package/dist/lrtfeeder.js CHANGED
@@ -35,7 +35,7 @@ function fetchEtas({ stopId, route, language, }) {
35
35
  }
36
36
  return busStop
37
37
  .filter(({ busStopId }) => busStopId === stopId)
38
- .reduce((ret, { bus: buses }) => [
38
+ .reduce((ret, { bus: buses, busStopRemark }) => [
39
39
  ...ret,
40
40
  ...buses.reduce((etas, bus) => {
41
41
  // hackily use +8 hours and use UTC hour to resolve timezone issue
@@ -51,8 +51,8 @@ function fetchEtas({ stopId, route, language, }) {
51
51
  eta: `${etaDate.getUTCFullYear()}-${`0${etaDate.getUTCMonth() + 1}`.slice(-2)}-${`0${etaDate.getUTCDate()}`.slice(-2)}` +
52
52
  `T${`0${etaDate.getUTCHours()}`.slice(-2)}:${`0${etaDate.getMinutes()}`.slice(-2)}:${`0${etaDate.getSeconds()}`.slice(-2)}+08:00`,
53
53
  remark: {
54
- zh: bus.busRemark || (bus.isScheduled === "1" ? "預定班次" : ""),
55
- en: bus.busRemark || (bus.isScheduled === "1" ? "Scheduled" : ""),
54
+ zh: busStopRemark || bus.busRemark || (bus.isScheduled === "1" ? "預定班次" : ""),
55
+ en: busStopRemark || bus.busRemark || (bus.isScheduled === "1" ? "Scheduled" : ""),
56
56
  },
57
57
  dest: {
58
58
  zh: "",
@@ -1 +1 @@
1
- {"version":3,"file":"lrtfeeder.js","sourceRoot":"","sources":["../src/lrtfeeder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lrtfeeder.js","sourceRoot":"","sources":["../src/lrtfeeder.ts"],"names":[],"mappings":";;AACA,mCAAmC;AAQnC,SAAwB,SAAS,CAAC,EAChC,MAAM,EACN,KAAK,EACL,QAAQ,GACO;IACf,OAAO,KAAK,CAAC,yDAAyD,EAAE;QACtE,MAAM,EAAE,MAAM;QACd,KAAK,EAAE,gBAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU;QACxC,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,QAAQ,EAAE,QAAQ;YAClB,SAAS,EAAE,KAAK;SACjB,CAAC;KACH,CAAC;SACC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;SACnC,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,sBAAsB,EAAE,EAAE,EAAE;QAC5C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YACxB,IACE,sBAAsB;gBACtB,OAAO,sBAAsB,KAAK,QAAQ,EAC1C;gBACA,OAAO;oBACL;wBACE,GAAG,EAAE,EAAE;wBACP,MAAM,EAAE;4BACN,CAAC,QAAQ,CAAC,EAAE,sBAAsB;yBACnC;wBACD,IAAI,EAAE;4BACJ,EAAE,EAAE,EAAE;4BACN,EAAE,EAAE,EAAE;yBACP;wBACD,EAAE,EAAE,WAAW;qBAChB;iBACF,CAAC;aACH;SACF;QAED,OAAO,OAAO;aACX,MAAM,CAAC,CAAC,EAAE,SAAS,EAAO,EAAE,EAAE,CAAC,SAAS,KAAK,MAAM,CAAC;aACpD,MAAM,CACL,CAAC,GAAQ,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,EAAO,EAAE,EAAE,CAAC;YAChD,GAAG,GAAG;YACN,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAW,EAAE,GAAQ,EAAE,EAAE;gBACxC,kEAAkE;gBAClE,MAAM,OAAO,GAAG,IAAI,IAAI,CACtB,IAAI,CAAC,GAAG,EAAE;oBACR,QAAQ,CACN,GAAG,CAAC,mBAAmB,KAAK,QAAQ;wBAClC,CAAC,CAAC,GAAG,CAAC,qBAAqB;wBAC3B,CAAC,CAAC,GAAG,CAAC,mBAAmB,EAC3B,EAAE,CACH;wBACC,IAAI;oBACN,CAAC,GAAG,OAAO,CACd,CAAC;gBAEF,OAAO;oBACL,GAAG,IAAI;oBACP;wBACE,GAAG,EACD,GAAG,OAAO,CAAC,cAAc,EAAE,IAAI,IAC7B,OAAO,CAAC,WAAW,EAAE,GAAG,CAC1B,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;4BACtD,IAAI,IAAI,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,KAAK,CACnC,CAAC,CAAC,CACH,IAAI,IAAI,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,KAAK,CACnC,CAAC,CAAC,CACH,IAAI,IAAI,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ;wBACnD,MAAM,EAAE;4BACN,EAAE,EAAE,aAAa,IAAI,GAAG,CAAC,SAAS,IAAI,CAAC,GAAG,CAAC,WAAW,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;4BAC7E,EAAE,EAAE,aAAa,IAAI,GAAG,CAAC,SAAS,IAAI,CAAC,GAAG,CAAC,WAAW,KAAK,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;yBACnF;wBACD,IAAI,EAAE;4BACJ,EAAE,EAAE,EAAE;4BACN,EAAE,EAAE,EAAE;yBACP;wBACD,EAAE,EAAE,WAAW;qBAChB;iBACF,CAAC;YACJ,CAAC,EAAE,EAAE,CAAC;SACP,EACD,EAAE,CACH,CAAC;IACN,CAAC,CAAC,CAAC;AACP,CAAC;AAtFD,4BAsFC"}
package/esm/lightRail.js CHANGED
@@ -21,16 +21,16 @@ export default function fetchEtas({ stopId, route, dest, }) {
21
21
  },
22
22
  ];
23
23
  }
24
- // How should `end_service_status` for only some platforms be handled? Would a light rail line stop at different platforms?
25
24
  return platform_list.reduce((acc, { route_list, platform_id }) => {
26
25
  return [
27
26
  ...acc,
28
- // route_list is null when there are no ETAs available
29
27
  ...(route_list !== null && route_list !== void 0 ? route_list : [])
30
- .filter(({ route_no, dest_ch, dest_en, stop }) => route === route_no &&
28
+ .filter(({ route_no, additionalInfo1, dest_ch, dest_en, stop, }) =>
29
+ // match route number OR additionalInfo1 to the requested route
30
+ (route === route_no || route === additionalInfo1) &&
31
31
  (dest_ch === dest.zh || dest_en.includes("Circular")) &&
32
32
  stop === 0)
33
- .map(({ time_en, train_length }) => {
33
+ .map(({ time_en, train_length, routeRemarkEng2, routeRemarkChi2, }) => {
34
34
  let waitTime = 0;
35
35
  switch (time_en.toLowerCase()) {
36
36
  case "arriving":
@@ -43,16 +43,25 @@ export default function fetchEtas({ stopId, route, dest, }) {
43
43
  break;
44
44
  }
45
45
  const etaDate = new Date(Date.now() + waitTime * 60 * 1000 + 8 * 3600000);
46
+ const platformText = `${platform_id}號月台 - ${Array(train_length)
47
+ .fill("▭")
48
+ .join("")}`;
49
+ const platformTextEn = `Platform ${platform_id} - ${Array(train_length)
50
+ .fill("▭")
51
+ .join("")}`;
52
+ // Append routeRemarkEng2 / routeRemarkChi2 if present
53
+ const remarkZh = routeRemarkChi2
54
+ ? `${platformText} - ${routeRemarkChi2}`
55
+ : platformText;
56
+ const remarkEn = routeRemarkEng2
57
+ ? `${platformTextEn} - ${routeRemarkEng2}`
58
+ : platformTextEn;
46
59
  return {
47
60
  eta: `${etaDate.getUTCFullYear()}-${`0${etaDate.getUTCMonth() + 1}`.slice(-2)}-${`0${etaDate.getUTCDate()}`.slice(-2)}` +
48
61
  `T${`0${etaDate.getUTCHours()}`.slice(-2)}:${`0${etaDate.getMinutes()}`.slice(-2)}:${`0${etaDate.getSeconds()}`.slice(-2)}+08:00`,
49
62
  remark: {
50
- zh: `${platform_id}號月台 - ${Array(train_length)
51
- .fill("▭")
52
- .join("")}`,
53
- en: `Platform ${platform_id} - ${Array(train_length)
54
- .fill("▭")
55
- .join("")}`,
63
+ zh: remarkZh,
64
+ en: remarkEn,
56
65
  },
57
66
  dest: {
58
67
  zh: "",
@@ -60,7 +69,7 @@ export default function fetchEtas({ stopId, route, dest, }) {
60
69
  },
61
70
  co: "lightRail",
62
71
  };
63
- }, []),
72
+ }),
64
73
  ];
65
74
  }, []);
66
75
  })
@@ -1 +1 @@
1
- {"version":3,"file":"lightRail.js","sourceRoot":"","sources":["../src/lightRail.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lightRail.js","sourceRoot":"","sources":["../src/lightRail.ts"],"names":[],"mappings":"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"}
package/esm/lrtfeeder.js CHANGED
@@ -33,7 +33,7 @@ export default function fetchEtas({ stopId, route, language, }) {
33
33
  }
34
34
  return busStop
35
35
  .filter(({ busStopId }) => busStopId === stopId)
36
- .reduce((ret, { bus: buses }) => [
36
+ .reduce((ret, { bus: buses, busStopRemark }) => [
37
37
  ...ret,
38
38
  ...buses.reduce((etas, bus) => {
39
39
  // hackily use +8 hours and use UTC hour to resolve timezone issue
@@ -49,8 +49,8 @@ export default function fetchEtas({ stopId, route, language, }) {
49
49
  eta: `${etaDate.getUTCFullYear()}-${`0${etaDate.getUTCMonth() + 1}`.slice(-2)}-${`0${etaDate.getUTCDate()}`.slice(-2)}` +
50
50
  `T${`0${etaDate.getUTCHours()}`.slice(-2)}:${`0${etaDate.getMinutes()}`.slice(-2)}:${`0${etaDate.getSeconds()}`.slice(-2)}+08:00`,
51
51
  remark: {
52
- zh: bus.busRemark || (bus.isScheduled === "1" ? "預定班次" : ""),
53
- en: bus.busRemark || (bus.isScheduled === "1" ? "Scheduled" : ""),
52
+ zh: busStopRemark || bus.busRemark || (bus.isScheduled === "1" ? "預定班次" : ""),
53
+ en: busStopRemark || bus.busRemark || (bus.isScheduled === "1" ? "Scheduled" : ""),
54
54
  },
55
55
  dest: {
56
56
  zh: "",
@@ -1 +1 @@
1
- {"version":3,"file":"lrtfeeder.js","sourceRoot":"","sources":["../src/lrtfeeder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lrtfeeder.js","sourceRoot":"","sources":["../src/lrtfeeder.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.8.0",
3
+ "version": "3.8.2",
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",
package/src/lightRail.ts CHANGED
@@ -13,7 +13,9 @@ 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(2,)}&with_special=1`,
16
+ `https://rt.data.gov.hk/v1/transport/mtr/lrt/getSchedule?station_id=${stopId.slice(
17
+ 2,
18
+ )}&with_special=1`,
17
19
  {
18
20
  cache: isSafari ? "default" : "no-store",
19
21
  },
@@ -38,62 +40,92 @@ export default function fetchEtas({
38
40
  },
39
41
  ];
40
42
  }
41
- // How should `end_service_status` for only some platforms be handled? Would a light rail line stop at different platforms?
43
+
42
44
  return platform_list.reduce(
43
45
  (acc: Eta[], { route_list, platform_id }: any) => {
44
46
  return [
45
47
  ...acc,
46
- // route_list is null when there are no ETAs available
47
48
  ...(route_list ?? [])
48
49
  .filter(
49
- ({ route_no, dest_ch, dest_en, stop }: any) =>
50
- route === route_no &&
50
+ ({
51
+ route_no,
52
+ additionalInfo1,
53
+ dest_ch,
54
+ dest_en,
55
+ stop,
56
+ }: any) =>
57
+ // match route number OR additionalInfo1 to the requested route
58
+ (route === route_no || route === additionalInfo1) &&
51
59
  (dest_ch === dest.zh || dest_en.includes("Circular")) &&
52
60
  stop === 0,
53
61
  )
54
- .map(({ time_en, train_length }: any) => {
55
- let waitTime = 0;
56
- switch (time_en.toLowerCase()) {
57
- case "arriving":
58
- case "departing":
59
- case "-":
60
- waitTime = 0;
61
- break;
62
- default:
63
- waitTime = parseInt(time_en, 10);
64
- break;
65
- }
66
- const etaDate = new Date(
67
- Date.now() + waitTime * 60 * 1000 + 8 * 3600000,
68
- );
69
- return {
70
- eta:
71
- `${etaDate.getUTCFullYear()}-${`0${
72
- etaDate.getUTCMonth() + 1
73
- }`.slice(-2)}-${`0${etaDate.getUTCDate()}`.slice(-2)}` +
74
- `T${`0${etaDate.getUTCHours()}`.slice(
75
- -2,
76
- )}:${`0${etaDate.getMinutes()}`.slice(
77
- -2,
78
- )}:${`0${etaDate.getSeconds()}`.slice(-2)}+08:00`,
79
- remark: {
80
- zh: `${platform_id}號月台 - ${Array(train_length)
81
- .fill("▭")
82
- .join("")}`,
83
- en: `Platform ${platform_id} - ${Array(train_length)
84
- .fill("▭")
85
- .join("")}`,
86
- },
87
- dest: {
88
- zh: "",
89
- en: "",
90
- },
91
- co: "lightRail",
92
- };
93
- }, []),
62
+ .map(
63
+ ({
64
+ time_en,
65
+ train_length,
66
+ routeRemarkEng2,
67
+ routeRemarkChi2,
68
+ }: any) => {
69
+ let waitTime = 0;
70
+ switch (time_en.toLowerCase()) {
71
+ case "arriving":
72
+ case "departing":
73
+ case "-":
74
+ waitTime = 0;
75
+ break;
76
+ default:
77
+ waitTime = parseInt(time_en, 10);
78
+ break;
79
+ }
80
+ const etaDate = new Date(
81
+ Date.now() + waitTime * 60 * 1000 + 8 * 3600000,
82
+ );
83
+
84
+ const platformText = `${platform_id}號月台 - ${Array(
85
+ train_length,
86
+ )
87
+ .fill("▭")
88
+ .join("")}`;
89
+
90
+ const platformTextEn = `Platform ${platform_id} - ${Array(
91
+ train_length,
92
+ )
93
+ .fill("")
94
+ .join("")}`;
95
+
96
+ // Append routeRemarkEng2 / routeRemarkChi2 if present
97
+ const remarkZh = routeRemarkChi2
98
+ ? `${platformText} - ${routeRemarkChi2}`
99
+ : platformText;
100
+ const remarkEn = routeRemarkEng2
101
+ ? `${platformTextEn} - ${routeRemarkEng2}`
102
+ : platformTextEn;
103
+
104
+ return {
105
+ eta:
106
+ `${etaDate.getUTCFullYear()}-${`0${
107
+ etaDate.getUTCMonth() + 1
108
+ }`.slice(-2)}-${`0${etaDate.getUTCDate()}`.slice(-2)}` +
109
+ `T${`0${etaDate.getUTCHours()}`.slice(
110
+ -2,
111
+ )}:${`0${etaDate.getMinutes()}`.slice(
112
+ -2,
113
+ )}:${`0${etaDate.getSeconds()}`.slice(-2)}+08:00`,
114
+ remark: {
115
+ zh: remarkZh,
116
+ en: remarkEn,
117
+ },
118
+ dest: {
119
+ zh: "",
120
+ en: "",
121
+ },
122
+ co: "lightRail",
123
+ };
124
+ },
125
+ ),
94
126
  ];
95
127
  },
96
- []
128
+ [],
97
129
  );
98
130
  })
99
131
  .catch((e) => {
package/src/lrtfeeder.ts CHANGED
@@ -49,7 +49,7 @@ export default function fetchEtas({
49
49
  return busStop
50
50
  .filter(({ busStopId }: any) => busStopId === stopId)
51
51
  .reduce(
52
- (ret: any, { bus: buses }: any) => [
52
+ (ret: any, { bus: buses, busStopRemark }: any) => [
53
53
  ...ret,
54
54
  ...buses.reduce((etas: Eta[], bus: any) => {
55
55
  // hackily use +8 hours and use UTC hour to resolve timezone issue
@@ -78,8 +78,8 @@ export default function fetchEtas({
78
78
  -2,
79
79
  )}:${`0${etaDate.getSeconds()}`.slice(-2)}+08:00`,
80
80
  remark: {
81
- zh: bus.busRemark || (bus.isScheduled === "1" ? "預定班次" : ""),
82
- en: bus.busRemark || (bus.isScheduled === "1" ? "Scheduled" : ""),
81
+ zh: busStopRemark || bus.busRemark || (bus.isScheduled === "1" ? "預定班次" : ""),
82
+ en: busStopRemark || bus.busRemark || (bus.isScheduled === "1" ? "Scheduled" : ""),
83
83
  },
84
84
  dest: {
85
85
  zh: "",