lscontests 1.10.0 → 1.10.3

Sign up to get free protection for your applications and to get access to all the features.
package/README.md CHANGED
@@ -10,6 +10,8 @@
10
10
 
11
11
  A tool to get information about the contests on each OJ.
12
12
 
13
+ [中文文档](./README-zh-CN.md)
14
+
13
15
  ## Installation
14
16
 
15
17
  ### Only use CLI
@@ -18,7 +20,7 @@ For npm: `npm install -g lscontests`
18
20
 
19
21
  For yarn: `yarn global add lscontests`
20
22
 
21
- ### Add to your package
23
+ ### Add *lscontests* to your project
22
24
 
23
25
  For npm: `npm install lscontests --save`
24
26
 
@@ -28,7 +30,7 @@ For yarn: `yarn add lscontests`
28
30
 
29
31
  ### CLI
30
32
 
31
- You can use cli to get a list of information about upcoming contests easily.
33
+ You can use cli to get a list of information about contests easily.
32
34
 
33
35
  <!-- block_help begin -->
34
36
  ```text
@@ -50,140 +52,13 @@ Options:
50
52
  It performs as follows:
51
53
 
52
54
  <!-- block_cli begin -->
53
- (*The following content was automatically generated in Sat, 14 May 2022 02:35:31 GMT*)
54
-
55
- <details>
56
- <summary> <code>> lsct </code> </summary>
57
-
58
- ```text
59
- 在 AtCoder,Codeforces,LeetCode,Luogu,NowCoder 上有 2 场正在进行的比赛
60
-
61
- 比赛平台: NowCoder
62
- 比赛名称:牛客竞赛博弈专题班 Sprague-Grundy 函数(SG 函数、图游戏、Nim 和)
63
- 赛制: ICPC
64
- 开始时间: 5/13/2022, 04:00:00
65
- 结束时间: 5/21/2022, 13:00:00
66
- https://ac.nowcoder.com/acm/contest/34655
67
-
68
- 比赛平台: NowCoder
69
- 比赛名称: 2022 图论班第一章图匹配例题与习题
70
- 赛制: ICPC
71
- 开始时间: 5/13/2022, 06:00:00
72
- 结束时间: 5/30/2022, 08:00:00
73
- https://ac.nowcoder.com/acm/contest/34649
74
-
75
- 接下来的 3 天内在 AtCoder,Codeforces,LeetCode,Luogu,NowCoder 上有 10 场比赛
76
-
77
- 比赛平台: NowCoder
78
- 比赛名称:第二届天元编程邀请赛(提高组)
79
- 赛制: IOI
80
- 开始时间: 5/14/2022, 04:30:00
81
- 结束时间: 5/14/2022, 09:00:00
82
- https://ac.nowcoder.com/acm/contest/33335
83
-
84
- 比赛平台: NowCoder
85
- 比赛名称:第二届天元编程邀请赛(普及组)
86
- 赛制: IOI
87
- 开始时间: 5/14/2022, 04:30:00
88
- 结束时间: 5/14/2022, 08:00:00
89
- https://ac.nowcoder.com/acm/contest/33341
90
-
91
- 比赛平台: NowCoder
92
- 比赛名称:第十八届西南科技大学 ACM 程序设计竞赛(同步赛)
93
- 赛制: ICPC
94
- 开始时间: 5/14/2022, 05:00:00
95
- 结束时间: 5/14/2022, 10:00:00
96
- https://ac.nowcoder.com/acm/contest/33540
97
-
98
- 比赛平台: Luogu
99
- 比赛名称: 【LGR-109】洛谷 5 月月赛 II & Windy Round 6
100
- 赛制: IOI
101
- 开始时间: 5/14/2022, 06:00:00
102
- 结束时间: 5/14/2022, 10:00:00
103
- https://www.luogu.com.cn/contest/68326
104
-
105
- 比赛平台: Codeforces
106
- 比赛名称: Codeforces Round #791 (Div. 2)
107
- 赛制: Codeforces
108
- 开始时间: 5/14/2022, 09:35:00
109
- 结束时间: 5/14/2022, 11:35:00
110
- https://codeforces.com/contests/1679
111
-
112
- 比赛平台: AtCoder
113
- 比赛名称: Ⓐ Panasonic Programming Contest 2022 (AtCoder Beginner Contest 251)
114
- 赛制: AtCoder
115
- 开始时间: 5/14/2022, 12:00:00
116
- 结束时间: 5/14/2022, 13:40:00
117
- https://atcoder.jp/contests/abc251
118
-
119
- 比赛平台: LeetCode
120
- 比赛名称: Biweekly Contest 78
121
- 赛制: AtCoder
122
- 开始时间: 5/14/2022, 14:30:00
123
- 结束时间: 5/14/2022, 16:00:00
124
- https://leetcode.com/contest/biweekly-contest-78
125
-
126
- 比赛平台: LeetCode
127
- 比赛名称: Weekly Contest 293
128
- 赛制: AtCoder
129
- 开始时间: 5/15/2022, 02:30:00
130
- 结束时间: 5/15/2022, 04:00:00
131
- https://leetcode.com/contest/weekly-contest-293
132
-
133
- 比赛平台: Luogu
134
- 比赛名称: 「WHOI」Round 1
135
- 赛制: IOI
136
- 开始时间: 5/15/2022, 06:00:00
137
- 结束时间: 5/15/2022, 10:00:00
138
- https://www.luogu.com.cn/contest/67377
139
-
140
- 比赛平台: AtCoder
141
- 比赛名称: Ⓐ AtCoder Regular Contest 140
142
- 赛制: AtCoder
143
- 开始时间: 5/15/2022, 12:00:00
144
- 结束时间: 5/15/2022, 14:00:00
145
- https://atcoder.jp/contests/arc140
146
- ```
147
-
148
- </details>
149
-
150
- <details>
151
- <summary> <code>> lsct -o at cf -d 7</code> </summary>
152
-
153
- ```text
154
- 在 AtCoder,Codeforces 上没有正在进行的比赛捏
155
-
156
- 接下来的 7 天内在 AtCoder,Codeforces 上有 3 场比赛
157
-
158
- 比赛平台: Codeforces
159
- 比赛名称: Codeforces Round #791 (Div. 2)
160
- 赛制: Codeforces
161
- 开始时间: 5/14/2022, 09:35:00
162
- 结束时间: 5/14/2022, 11:35:00
163
- https://codeforces.com/contests/1679
164
-
165
- 比赛平台: AtCoder
166
- 比赛名称: Ⓐ Panasonic Programming Contest 2022 (AtCoder Beginner Contest 251)
167
- 赛制: AtCoder
168
- 开始时间: 5/14/2022, 12:00:00
169
- 结束时间: 5/14/2022, 13:40:00
170
- https://atcoder.jp/contests/abc251
171
-
172
- 比赛平台: AtCoder
173
- 比赛名称: Ⓐ AtCoder Regular Contest 140
174
- 赛制: AtCoder
175
- 开始时间: 5/15/2022, 12:00:00
176
- 结束时间: 5/15/2022, 14:00:00
177
- https://atcoder.jp/contests/arc140
178
- ```
179
-
180
- </details>
55
+ (*The following content was automatically generated by [semantic-release](https://github.com/semantic-release/semantic-release) in Sat, 14 May 2022 16:37:24 GMT*)
181
56
 
182
57
  <details>
183
- <summary> <code>> lsct -o lg nc -d 7 -L en</code> </summary>
58
+ <summary> <code>> lsct -L en</code> </summary>
184
59
 
185
60
  ```text
186
- There are 2 contests is running on Luogu,NowCoder
61
+ There are 2 contests is running on NowCoder
187
62
 
188
63
  OJ: NowCoder
189
64
  Contest name: 牛客竞赛博弈专题班 Sprague-Grundy 函数(SG 函数、图游戏、Nim 和)
@@ -199,35 +74,14 @@ Start time: 5/13/2022, 06:00:00
199
74
  End time: 5/30/2022, 08:00:00
200
75
  https://ac.nowcoder.com/acm/contest/34649
201
76
 
202
- There are 5 contests on Luogu,NowCoder in the next 7 days
77
+ There are 3 contests on LeetCode,Luogu,AtCoder in the next 3 days
203
78
 
204
- OJ: NowCoder
205
- Contest name: 第二届天元编程邀请赛(提高组)
206
- Rule: IOI
207
- Start time: 5/14/2022, 04:30:00
208
- End time: 5/14/2022, 09:00:00
209
- https://ac.nowcoder.com/acm/contest/33335
210
-
211
- OJ: NowCoder
212
- Contest name: 第二届天元编程邀请赛(普及组)
213
- Rule: IOI
214
- Start time: 5/14/2022, 04:30:00
215
- End time: 5/14/2022, 08:00:00
216
- https://ac.nowcoder.com/acm/contest/33341
217
-
218
- OJ: NowCoder
219
- Contest name: 第十八届西南科技大学 ACM 程序设计竞赛(同步赛)
220
- Rule: ICPC
221
- Start time: 5/14/2022, 05:00:00
222
- End time: 5/14/2022, 10:00:00
223
- https://ac.nowcoder.com/acm/contest/33540
224
-
225
- OJ: Luogu
226
- Contest name: 【LGR-109】洛谷 5 月月赛 II & Windy Round 6
227
- Rule: IOI
228
- Start time: 5/14/2022, 06:00:00
229
- End time: 5/14/2022, 10:00:00
230
- https://www.luogu.com.cn/contest/68326
79
+ OJ: LeetCode
80
+ Contest name: Weekly Contest 293
81
+ Rule: AtCoder
82
+ Start time: 5/15/2022, 02:30:00
83
+ End time: 5/15/2022, 04:00:00
84
+ https://leetcode.com/contest/weekly-contest-293
231
85
 
232
86
  OJ: Luogu
233
87
  Contest name: 「WHOI」Round 1
@@ -235,6 +89,31 @@ Rule: IOI
235
89
  Start time: 5/15/2022, 06:00:00
236
90
  End time: 5/15/2022, 10:00:00
237
91
  https://www.luogu.com.cn/contest/67377
92
+
93
+ OJ: AtCoder
94
+ Contest name: Ⓐ AtCoder Regular Contest 140
95
+ Rule: AtCoder
96
+ Start time: 5/15/2022, 12:00:00
97
+ End time: 5/15/2022, 14:00:00
98
+ https://atcoder.jp/contests/arc140
99
+ ```
100
+
101
+ </details>
102
+
103
+ <details>
104
+ <summary> <code>> lsct -o at cf -d 7 -L en</code> </summary>
105
+
106
+ ```text
107
+ No running contests
108
+
109
+ There are 1 contests on AtCoder in the next 7 days
110
+
111
+ OJ: AtCoder
112
+ Contest name: Ⓐ AtCoder Regular Contest 140
113
+ Rule: AtCoder
114
+ Start time: 5/15/2022, 12:00:00
115
+ End time: 5/15/2022, 14:00:00
116
+ https://atcoder.jp/contests/arc140
238
117
  ```
239
118
 
240
119
  </details>
@@ -246,14 +125,6 @@ https://www.luogu.com.cn/contest/67377
246
125
  {
247
126
  "running": [],
248
127
  "upcoming": [
249
- {
250
- "ojName": "AtCoder",
251
- "name": "Ⓐ Panasonic Programming Contest 2022(AtCoder Beginner Contest 251)",
252
- "rule": "AtCoder",
253
- "startTime": "2022-05-14T12:00:00.000Z",
254
- "endTime": "2022-05-14T13:40:00.000Z",
255
- "url": "https://atcoder.jp/contests/abc251"
256
- },
257
128
  {
258
129
  "ojName": "AtCoder",
259
130
  "name": "Ⓐ AtCoder Regular Contest 140",
@@ -261,14 +132,6 @@ https://www.luogu.com.cn/contest/67377
261
132
  "startTime": "2022-05-15T12:00:00.000Z",
262
133
  "endTime": "2022-05-15T14:00:00.000Z",
263
134
  "url": "https://atcoder.jp/contests/arc140"
264
- },
265
- {
266
- "ojName": "Codeforces",
267
- "name": "Codeforces Round #791 (Div. 2)",
268
- "rule": "Codeforces",
269
- "startTime": "2022-05-14T09:35:00.000Z",
270
- "endTime": "2022-05-14T11:35:00.000Z",
271
- "url": "https://codeforces.com/contests/1679"
272
135
  }
273
136
  ]
274
137
  }
@@ -279,9 +142,11 @@ https://www.luogu.com.cn/contest/67377
279
142
 
280
143
  ### API
281
144
 
145
+ For more detailed API documentation, please visit <https://lsct.agoh.xyz>.
146
+
282
147
  If you want to get a list of contest information in your project by calling *lscontests*, or if you need to add support for other OJs, then you can call the *lscontests* API as follows:
283
148
 
284
- #### Get contests information string
149
+ #### Get text for contests information
285
150
 
286
151
  ```typescript
287
152
  import { getContestInfo } from "lscontests";
@@ -291,7 +156,7 @@ getContestsInfoText({ abbrList: ["cf", "lg"] }).then(console.log);
291
156
 
292
157
  This code gives the same result as `lsct -o cf lg`.
293
158
 
294
- #### Get contests information list
159
+ #### Get list for contests information
295
160
 
296
161
  ```typescript
297
162
  import { getContestList } from "lscontests";
@@ -301,7 +166,7 @@ getContests({ sort: false }).then(console.log);
301
166
 
302
167
  This code gives the same result as `lsct -r --no-sort`.
303
168
 
304
- #### Add OJ support
169
+ #### Add support for other OJ
305
170
 
306
171
  ```typescript
307
172
  import { addOJ, getContestsInfoText, getContests } from "lscontests";
package/dist/index.d.ts CHANGED
@@ -6,7 +6,7 @@ export declare type config = {
6
6
  };
7
7
  /**
8
8
  * Get the list of all contests matching the given config
9
- * @param config The config of contests that want to get. @see config
9
+ * @param config The config of contests that want to get
10
10
  * @returns A Promise that contains an array of all contests that match the given config
11
11
  */
12
12
  export declare function getContests(config?: config): Promise<{
@@ -15,7 +15,7 @@ export declare function getContests(config?: config): Promise<{
15
15
  }>;
16
16
  /**
17
17
  * Get the detailed text of all contests matching the given config
18
- * @param config The config of contests that want to get @see config
18
+ * @param config The config of contests that want to get
19
19
  * @param language Language of the output text
20
20
  * @returns A string containing detail text of contests that match the given config
21
21
  */
package/dist/index.js CHANGED
@@ -30,29 +30,25 @@ function resolveConfig(config) {
30
30
  }
31
31
  /**
32
32
  * Get the list of all contests matching the given config
33
- * @param config The config of contests that want to get. @see config
33
+ * @param config The config of contests that want to get
34
34
  * @returns A Promise that contains an array of all contests that match the given config
35
35
  */
36
36
  function getContests(config) {
37
37
  return __awaiter(this, void 0, void 0, function* () {
38
38
  const cfg = resolveConfig(config);
39
- function ls(fn) {
40
- return __awaiter(this, void 0, void 0, function* () {
41
- return (yield Promise.all(cfg.abbrList.map((abbr) => __awaiter(this, void 0, void 0, function* () {
42
- try {
43
- return (yield oj_1.alloj[abbr].get()).filter(fn);
44
- }
45
- catch (e) {
46
- console.error(`Failed to get contest information for ${oj_1.alloj[abbr].name}, details:`);
47
- console.error(e);
48
- return [];
49
- }
50
- })))).reduce((ls1, ls2) => ls1.concat(ls2));
51
- });
52
- }
39
+ const contests = (yield Promise.all(cfg.abbrList.map((abbr) => __awaiter(this, void 0, void 0, function* () {
40
+ try {
41
+ return yield oj_1.alloj[abbr].get();
42
+ }
43
+ catch (e) {
44
+ console.error(`Failed to get contest information for ${oj_1.alloj[abbr].name}, details:`);
45
+ console.error(e);
46
+ return [];
47
+ }
48
+ })))).reduce((ls1, ls2) => ls1.concat(ls2));
53
49
  const ret = {
54
- running: yield ls(ct => ct.startTime <= new Date() && ct.endTime > new Date()),
55
- upcoming: yield ls(ct => ct.startTime > new Date() && ct.startTime <= new Date(Date.now() + cfg.days * 86400000))
50
+ running: contests.filter(ct => ct.startTime <= new Date() && ct.endTime > new Date()),
51
+ upcoming: contests.filter(ct => ct.startTime > new Date() && ct.startTime <= new Date(Date.now() + cfg.days * 86400000))
56
52
  };
57
53
  if (cfg.sort)
58
54
  Object.values(ret).forEach(ct => ct.sort((a, b) => a.startTime.getTime() - b.startTime.getTime()));
@@ -62,7 +58,7 @@ function getContests(config) {
62
58
  exports.getContests = getContests;
63
59
  /**
64
60
  * Get the detailed text of all contests matching the given config
65
- * @param config The config of contests that want to get @see config
61
+ * @param config The config of contests that want to get
66
62
  * @param language Language of the output text
67
63
  * @returns A string containing detail text of contests that match the given config
68
64
  */
@@ -72,7 +68,6 @@ function getContestsInfoText(config, language = "zh-CN") {
72
68
  const lang = yield (0, locale_1.getLangDict)(language);
73
69
  const { running, upcoming } = yield getContests(cfg);
74
70
  const info = [];
75
- const oj = cfg.abbrList.map(abbr => oj_1.alloj[abbr].name).join(",");
76
71
  function msg(contests) {
77
72
  return contests.map(contest => {
78
73
  const ls = [];
@@ -88,22 +83,22 @@ function getContestsInfoText(config, language = "zh-CN") {
88
83
  if (running.length) {
89
84
  info.push(lodash_1.default.template(lang.runnning)({
90
85
  contestCount: running.length,
91
- oj
86
+ oj: lodash_1.default.uniq(running.map(contest => contest.ojName))
92
87
  }));
93
88
  info.push(...msg(running));
94
89
  }
95
90
  else
96
- info.push(lodash_1.default.template(lang.norunning)({ oj }));
91
+ info.push(lang.norunning);
97
92
  if (upcoming.length) {
98
93
  info.push(lodash_1.default.template(lang.upcoming)({
99
94
  contestCount: upcoming.length,
100
95
  days: cfg.days,
101
- oj
96
+ oj: lodash_1.default.uniq(upcoming.map(contest => contest.ojName))
102
97
  }));
103
98
  info.push(...msg(upcoming));
104
99
  }
105
100
  else
106
- info.push(lodash_1.default.template(lang.noupcoming)({ days: cfg.days, oj }));
101
+ info.push(lodash_1.default.template(lang.noupcoming)({ days: cfg.days }));
107
102
  return pangu_1.default.spacing(info.join("\n\n"));
108
103
  });
109
104
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -44,7 +44,7 @@ exports.at = {
44
44
  const response = yield axios_1.default.get("https://atcoder.jp/contests");
45
45
  const $ = cheerio.load(response.data);
46
46
  const contests = [];
47
- $("#contest-table-upcoming table > tbody > tr").each(function () {
47
+ $("#contest-table-upcoming,#contest-table-action table > tbody > tr").each(function () {
48
48
  const ct = {
49
49
  ojName: exports.at.name,
50
50
  name: "",
@@ -1 +1 @@
1
- {"version":3,"file":"atcoder.js","sourceRoot":"","sources":["../../../src/lib/oj/atcoder.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA0B;AAC1B,iDAAmC;AAItB,QAAA,EAAE,GAAO;IAClB,IAAI,EAAE,SAAS;IACf,GAAG,EAAE,GAAS,EAAE;QAEZ,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAChE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAc,EAAE,CAAC;QAC/B,CAAC,CAAC,4CAA4C,CAAC,CAAC,IAAI,CAAC;YAEjD,MAAM,EAAE,GAAY;gBAChB,MAAM,EAAE,UAAE,CAAC,IAAI;gBACf,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,SAAS;gBACf,SAAS,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC;gBACtB,OAAO,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC;gBACpB,GAAG,EAAE,EAAE;aACV,CAAC;YACF,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG;gBAE5B,IAAG,GAAG,IAAI,CAAC;oBAAE,EAAE,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;qBAChD,IAAG,GAAG,IAAI,CAAC,EAChB;oBACI,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;oBACzB,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;oBAC1D,EAAE,CAAC,GAAG,GAAG,qBAAqB,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;iBACnD;qBACI,IAAG,GAAG,IAAI,CAAC,EAChB;oBACI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACzC,EAAE,CAAC,OAAO,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;iBAChG;YACL,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC;IACpB,CAAC,CAAA;CACJ,CAAC"}
1
+ {"version":3,"file":"atcoder.js","sourceRoot":"","sources":["../../../src/lib/oj/atcoder.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA0B;AAC1B,iDAAmC;AAItB,QAAA,EAAE,GAAO;IAClB,IAAI,EAAE,SAAS;IACf,GAAG,EAAE,GAAS,EAAE;QAEZ,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAChE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAc,EAAE,CAAC;QAC/B,CAAC,CAAC,kEAAkE,CAAC,CAAC,IAAI,CAAC;YAEvE,MAAM,EAAE,GAAY;gBAChB,MAAM,EAAE,UAAE,CAAC,IAAI;gBACf,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,SAAS;gBACf,SAAS,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC;gBACtB,OAAO,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC;gBACpB,GAAG,EAAE,EAAE;aACV,CAAC;YACF,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG;gBAE5B,IAAG,GAAG,IAAI,CAAC;oBAAE,EAAE,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;qBAChD,IAAG,GAAG,IAAI,CAAC,EAChB;oBACI,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;oBACzB,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;oBAC1D,EAAE,CAAC,GAAG,GAAG,qBAAqB,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;iBACnD;qBACI,IAAG,GAAG,IAAI,CAAC,EAChB;oBACI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACzC,EAAE,CAAC,OAAO,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;iBAChG;YACL,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC;IACpB,CAAC,CAAA;CACJ,CAAC"}
@@ -1,11 +1,17 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.addOJ = exports.alloj = void 0;
7
+ const axios_1 = __importDefault(require("axios"));
8
+ const axios_retry_1 = __importDefault(require("axios-retry"));
4
9
  const atcoder_1 = require("./atcoder");
5
10
  const codeforces_1 = require("./codeforces");
6
11
  const leetcode_1 = require("./leetcode");
7
12
  const luogu_1 = require("./luogu");
8
13
  const nowcoder_1 = require("./nowcoder");
14
+ (0, axios_retry_1.default)(axios_1.default, { retries: 3, retryDelay: (retryCount) => retryCount * 1000 });
9
15
  exports.alloj = {
10
16
  at: atcoder_1.at,
11
17
  cf: codeforces_1.cf,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/oj/index.ts"],"names":[],"mappings":";;;AACA,uCAA+B;AAC/B,6CAAkC;AAClC,yCAAgC;AAChC,mCAA6B;AAC7B,yCAAgC;AAOnB,QAAA,KAAK,GAA4B;IAC1C,EAAE,EAAF,YAAE;IACF,EAAE,EAAF,eAAE;IACF,EAAE,EAAF,aAAE;IACF,EAAE,EAAF,UAAE;IACF,EAAE,EAAF,aAAE;CACL,CAAC;AAEF;;;;GAIG;AACH,SAAgB,KAAK,CAAC,IAAY,EAAE,EAAM;IAEtC,aAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AACrB,CAAC;AAHD,sBAGC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/oj/index.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,8DAAqC;AAErC,uCAA+B;AAC/B,6CAAkC;AAClC,yCAAgC;AAChC,mCAA6B;AAC7B,yCAAgC;AAEhC,IAAA,qBAAU,EAAC,eAAK,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,GAAG,IAAI,EAAE,CAAC,CAAC;AAOpE,QAAA,KAAK,GAA4B;IAC1C,EAAE,EAAF,YAAE;IACF,EAAE,EAAF,eAAE;IACF,EAAE,EAAF,aAAE;IACF,EAAE,EAAF,UAAE;IACF,EAAE,EAAF,aAAE;CACL,CAAC;AAEF;;;;GAIG;AACH,SAAgB,KAAK,CAAC,IAAY,EAAE,EAAM;IAEtC,aAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AACrB,CAAC;AAHD,sBAGC"}
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "runnning": "There are ${contestCount} contests is running on ${oj}",
3
- "norunning": "No upcomming contests on ${oj}",
3
+ "norunning": "No running contests",
4
4
  "upcoming": "There are ${contestCount} contests on ${oj} in the next ${days} days",
5
- "noupcoming": "No contests for the next ${days} days on ${oj}",
5
+ "noupcoming": "No contests for the next ${days} days",
6
6
  "ojName": "OJ",
7
7
  "name": "Contest name",
8
8
  "rule": "Rule",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "runnning": "在 ${oj} 上有 ${contestCount} 场正在进行的比赛",
3
- "norunning": "在 ${oj} 上没有正在进行的比赛捏",
3
+ "norunning": "没有正在进行的比赛捏",
4
4
  "upcoming": "接下来的 ${days} 天内在 ${oj} 上有 ${contestCount} 场比赛",
5
- "noupcoming": "接下来的 ${days} 天内在 ${oj} 上没有比赛捏",
5
+ "noupcoming": "接下来的 ${days} 天内没有比赛捏",
6
6
  "ojName": "比赛平台",
7
7
  "name": "比赛名称",
8
8
  "rule": "赛制",
@@ -1,8 +1,8 @@
1
1
  {
2
- "runnning": "搁 ${oj} 上有 ${contestCount} 场比赛正干着呢",
3
- "norunning": "这前搁 ${oj} 上没比赛打",
2
+ "runnning": "搁 ${oj} 上有 ${contestCount} 场比赛正偷摸干着呢",
3
+ "norunning": "这前属实是没比赛打",
4
4
  "upcoming": "之后 ${days} 天搁 ${oj} 上拢共 ${contestCount} 场比赛",
5
- "noupcoming": "没成想往后 ${days} 天搁 ${oj} 没比赛打啊",
5
+ "noupcoming": "没成想往后 ${days} 天没比赛打啊",
6
6
  "ojName": "搁哪",
7
7
  "name": "叫啥",
8
8
  "rule": "咋个整法",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "runnning": "在 ${oj} 上有 ${contestCount} 場正在進行的比賽",
3
- "norunning": "在 ${oj} 上沒有正在進行的比賽",
3
+ "norunning": "沒有正在進行的比賽",
4
4
  "upcoming": "接下来的 ${days} 天內在 ${oj} 上有 ${contestCount} 場比賽",
5
- "noupcoming": "接下來的 ${days} 天內在 ${oj} 上沒有比賽",
5
+ "noupcoming": "接下來的 ${days} 天內沒有比賽",
6
6
  "ojName": "比賽平台",
7
7
  "name": "比賽名稱",
8
8
  "rule": "賽制",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lscontests",
3
- "version": "1.10.0",
3
+ "version": "1.10.3",
4
4
  "description": "A tool to get information about the contests on each OJ",
5
5
  "keywords": [
6
6
  "cli",
@@ -26,13 +26,14 @@
26
26
  "scripts": {
27
27
  "build": "rimraf ./dist/* && tsc -p src",
28
28
  "clean": "rimraf ./dist",
29
- "docs": "typedoc --out docs ./src/index.ts",
29
+ "docs": "typedoc --footerTypedocVersion --footerDate --footerTime",
30
30
  "lint": "eslint && markdownlint README.md",
31
31
  "prestart": "yarn build",
32
32
  "start": "node ./dist/cli.js"
33
33
  },
34
34
  "dependencies": {
35
35
  "axios": "^0.27.2",
36
+ "axios-retry": "^3.2.5",
36
37
  "cheerio": "^1.0.0-rc.10",
37
38
  "commander": "^9.2.0",
38
39
  "lodash": "^4.17.21",
@@ -49,6 +50,7 @@
49
50
  "markdownlint-cli": "^0.31.1",
50
51
  "rimraf": "^3.0.2",
51
52
  "typedoc": "^0.22.15",
53
+ "typedoc-plugin-extras": "^2.2.3",
52
54
  "typescript": "^4.6.4"
53
55
  },
54
56
  "config": {