lscontests 1.8.12 → 1.9.1

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
@@ -40,8 +40,8 @@ Options:
40
40
  -l, --list list all supported OJ and it's abbreviation
41
41
  -o, --oj <ojs...> OJs to display (choices: "at", "cf", "lg", "nc")
42
42
  -r, --raw print raw contest list
43
- -L, --language <lang> set output language (choices: "en", "zh-CN", "zh-TW",
44
- default: "zh-CN")
43
+ -L, --language <lang> set output language (choices: "en", "zh-CN", "zh-NE",
44
+ "zh-TW", default: "zh-CN")
45
45
  --no-sort do not sort by contests start time, but by OJ order
46
46
  -h, --help display help for command
47
47
  ```
@@ -50,13 +50,13 @@ Options:
50
50
  It performs as follows:
51
51
 
52
52
  <!-- block_cli begin -->
53
- (*The following content was automatically generated in Fri, 13 May 2022 12:49:18 GMT*)
53
+ (*The following content was automatically generated in Fri, 13 May 2022 15:42:43 GMT*)
54
54
 
55
55
  <details>
56
56
  <summary> <code>> lsct </code> </summary>
57
57
 
58
58
  ```text
59
- 最近的 3 天内在 AtCoder,Codeforces,Luogu,NowCoder 上有 10 场比赛
59
+ AtCoder,Codeforces,Luogu,NowCoder 上有 3 场正在进行的比赛
60
60
 
61
61
  比赛平台: NowCoder
62
62
  比赛名称:牛客竞赛博弈专题班 Sprague-Grundy 函数(SG 函数、图游戏、Nim 和)
@@ -72,12 +72,14 @@ https://ac.nowcoder.com/acm/contest/34655
72
72
  结束时间: 5/30/2022, 08:00:00
73
73
  https://ac.nowcoder.com/acm/contest/34649
74
74
 
75
- 比赛平台: NowCoder
76
- 比赛名称:牛客挑战赛 60
75
+ 比赛平台: Codeforces
76
+ 比赛名称: Educational Codeforces Round 128 (Rated for Div. 2)
77
77
  赛制: ICPC
78
- 开始时间: 5/13/2022, 11:00:00
79
- 结束时间: 5/13/2022, 14:00:00
80
- https://ac.nowcoder.com/acm/contest/11200
78
+ 开始时间: 5/13/2022, 14:35:00
79
+ 结束时间: 5/13/2022, 16:35:00
80
+ https://codeforces.com/contests/1680
81
+
82
+ 接下来的 3 天内在 AtCoder,Codeforces,Luogu,NowCoder 上有 8 场比赛
81
83
 
82
84
  比赛平台: NowCoder
83
85
  比赛名称:第二届天元编程邀请赛(提高组)
@@ -107,11 +109,18 @@ https://ac.nowcoder.com/acm/contest/33540
107
109
  结束时间: 5/14/2022, 10:00:00
108
110
  https://www.luogu.com.cn/contest/68326
109
111
 
112
+ 比赛平台: Codeforces
113
+ 比赛名称: Codeforces Round #791 (Div. 2)
114
+ 赛制: Codeforces
115
+ 开始时间: 5/14/2022, 09:35:00
116
+ 结束时间: 5/14/2022, 11:35:00
117
+ https://codeforces.com/contests/1679
118
+
110
119
  比赛平台: AtCoder
111
120
  比赛名称: Ⓐ Panasonic Programming Contest 2022 (AtCoder Beginner Contest 251)
112
121
  赛制: AtCoder
113
122
  开始时间: 5/14/2022, 12:00:00
114
- 结束时间: 5/14/2022, 12:01:40
123
+ 结束时间: 5/14/2022, 13:40:00
115
124
  https://atcoder.jp/contests/abc251
116
125
 
117
126
  比赛平台: Luogu
@@ -125,7 +134,7 @@ https://www.luogu.com.cn/contest/67377
125
134
  比赛名称: Ⓐ AtCoder Regular Contest 140
126
135
  赛制: AtCoder
127
136
  开始时间: 5/15/2022, 12:00:00
128
- 结束时间: 5/15/2022, 12:02:00
137
+ 结束时间: 5/15/2022, 14:00:00
129
138
  https://atcoder.jp/contests/arc140
130
139
  ```
131
140
 
@@ -135,20 +144,36 @@ https://atcoder.jp/contests/arc140
135
144
  <summary> <code>> lsct -o at cf -d 7</code> </summary>
136
145
 
137
146
  ```text
138
- 最近的 7 天内在 AtCoder,Codeforces 上有 2 场比赛
147
+ AtCoder,Codeforces 上有 1 场正在进行的比赛
148
+
149
+ 比赛平台: Codeforces
150
+ 比赛名称: Educational Codeforces Round 128 (Rated for Div. 2)
151
+ 赛制: ICPC
152
+ 开始时间: 5/13/2022, 14:35:00
153
+ 结束时间: 5/13/2022, 16:35:00
154
+ https://codeforces.com/contests/1680
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
139
164
 
140
165
  比赛平台: AtCoder
141
166
  比赛名称: Ⓐ Panasonic Programming Contest 2022 (AtCoder Beginner Contest 251)
142
167
  赛制: AtCoder
143
168
  开始时间: 5/14/2022, 12:00:00
144
- 结束时间: 5/14/2022, 12:01:40
169
+ 结束时间: 5/14/2022, 13:40:00
145
170
  https://atcoder.jp/contests/abc251
146
171
 
147
172
  比赛平台: AtCoder
148
173
  比赛名称: Ⓐ AtCoder Regular Contest 140
149
174
  赛制: AtCoder
150
175
  开始时间: 5/15/2022, 12:00:00
151
- 结束时间: 5/15/2022, 12:02:00
176
+ 结束时间: 5/15/2022, 14:00:00
152
177
  https://atcoder.jp/contests/arc140
153
178
  ```
154
179
 
@@ -158,7 +183,7 @@ https://atcoder.jp/contests/arc140
158
183
  <summary> <code>> lsct -o lg nc -d 7 -L en</code> </summary>
159
184
 
160
185
  ```text
161
- 8 contests on Luogu,NowCoder in the last 7 days
186
+ There are 2 contests is running on Luogu,NowCoder
162
187
 
163
188
  OJ: NowCoder
164
189
  Contest name: 牛客竞赛博弈专题班 Sprague-Grundy 函数(SG 函数、图游戏、Nim 和)
@@ -174,12 +199,7 @@ Start time: 5/13/2022, 06:00:00
174
199
  End time: 5/30/2022, 08:00:00
175
200
  https://ac.nowcoder.com/acm/contest/34649
176
201
 
177
- OJ: NowCoder
178
- Contest name: 牛客挑战赛 60
179
- Rule: ICPC
180
- Start time: 5/13/2022, 11:00:00
181
- End time: 5/13/2022, 14:00:00
182
- https://ac.nowcoder.com/acm/contest/11200
202
+ There are 5 contests on Luogu,NowCoder in the next 7 days
183
203
 
184
204
  OJ: NowCoder
185
205
  Contest name: 第二届天元编程邀请赛(提高组)
@@ -223,24 +243,44 @@ https://www.luogu.com.cn/contest/67377
223
243
  <summary> <code>> lsct -o at cf -d 7 -r --no-sort</code> </summary>
224
244
 
225
245
  ```json
226
- [
227
- {
228
- "ojName": "AtCoder",
229
- "name": "Ⓐ Panasonic Programming Contest 2022(AtCoder Beginner Contest 251)",
230
- "rule": "AtCoder",
231
- "startTime": "2022-05-14T12:00:00.000Z",
232
- "endTime": "2022-05-14T12:01:40.000Z",
233
- "url": "https://atcoder.jp/contests/abc251"
234
- },
235
- {
236
- "ojName": "AtCoder",
237
- "name": "Ⓐ AtCoder Regular Contest 140",
238
- "rule": "AtCoder",
239
- "startTime": "2022-05-15T12:00:00.000Z",
240
- "endTime": "2022-05-15T12:02:00.000Z",
241
- "url": "https://atcoder.jp/contests/arc140"
242
- }
243
- ]
246
+ {
247
+ "running": [
248
+ {
249
+ "ojName": "Codeforces",
250
+ "name": "Educational Codeforces Round 128 (Rated for Div. 2)",
251
+ "rule": "ICPC",
252
+ "startTime": "2022-05-13T14:35:00.000Z",
253
+ "endTime": "2022-05-13T16:35:00.000Z",
254
+ "url": "https://codeforces.com/contests/1680"
255
+ }
256
+ ],
257
+ "upcoming": [
258
+ {
259
+ "ojName": "AtCoder",
260
+ "name": "Ⓐ Panasonic Programming Contest 2022(AtCoder Beginner Contest 251)",
261
+ "rule": "AtCoder",
262
+ "startTime": "2022-05-14T12:00:00.000Z",
263
+ "endTime": "2022-05-14T13:40:00.000Z",
264
+ "url": "https://atcoder.jp/contests/abc251"
265
+ },
266
+ {
267
+ "ojName": "AtCoder",
268
+ "name": "Ⓐ AtCoder Regular Contest 140",
269
+ "rule": "AtCoder",
270
+ "startTime": "2022-05-15T12:00:00.000Z",
271
+ "endTime": "2022-05-15T14:00:00.000Z",
272
+ "url": "https://atcoder.jp/contests/arc140"
273
+ },
274
+ {
275
+ "ojName": "Codeforces",
276
+ "name": "Codeforces Round #791 (Div. 2)",
277
+ "rule": "Codeforces",
278
+ "startTime": "2022-05-14T09:35:00.000Z",
279
+ "endTime": "2022-05-14T11:35:00.000Z",
280
+ "url": "https://codeforces.com/contests/1679"
281
+ }
282
+ ]
283
+ }
244
284
  ```
245
285
 
246
286
  </details>
@@ -255,7 +295,7 @@ If you want to get a list of contest information in your project by calling *lsc
255
295
  ```typescript
256
296
  import { getContestInfo } from "lscontests";
257
297
 
258
- getContestInfo({ abbrList: ["cf", "lg"] }).then(console.log);
298
+ getContestsInfoText({ abbrList: ["cf", "lg"] }).then(console.log);
259
299
  ```
260
300
 
261
301
  This code gives the same result as `lsct -o cf lg`.
@@ -265,7 +305,7 @@ This code gives the same result as `lsct -o cf lg`.
265
305
  ```typescript
266
306
  import { getContestList } from "lscontests";
267
307
 
268
- getContestList({ sort: false }).then(console.log);
308
+ getContests({ sort: false }).then(console.log);
269
309
  ```
270
310
 
271
311
  This code gives the same result as `lsct -r --no-sort`.
@@ -273,23 +313,23 @@ This code gives the same result as `lsct -r --no-sort`.
273
313
  #### Add OJ support
274
314
 
275
315
  ```typescript
276
- import { addOJ, getContestInfo, getContestList } from "lscontests";
316
+ import { addOJ, getContestsInfoText, getContests } from "lscontests";
277
317
 
278
318
  addOJ("ts", {
279
319
  name: "testOJ", get: async () => [{
280
320
  ojName: "testOJ",
281
321
  name: "testContest",
282
322
  rule: "ICPC",
283
- startTime: new Date(Date.now() + 1 * 86400000),
284
- endTime: new Date(Date.now() + 2 * 86400000),
323
+ startTime: new Date(Date.now() - 1),
324
+ endTime: new Date(Date.now() + 3600000),
285
325
  url: "https://www.test.com"
286
326
  }]
287
327
  });
288
328
 
289
329
  async function main() {
290
- console.log(await getContestInfo({ abbrList: ["cf", "ts"], days: 1 }, "en"));
330
+ console.log(await getContestsInfoText({ abbrList: ["cf", "ts"], days: 1 }, "en"));
291
331
  console.log();
292
- console.log(await getContestList({ abbrList: ["cf", "ts"], days: 7 }));
332
+ console.log(await getContests({ abbrList: ["at", "ts"], days: 7 }));
293
333
  }
294
334
 
295
335
  main();
@@ -298,41 +338,61 @@ main();
298
338
  This code gives the following results:
299
339
 
300
340
  ```text
301
- 1 contests on Codeforces,testOJ in the last 1 days
341
+ There are 2 contests is running on Codeforces,testOJ
342
+
343
+ OJ: Codeforces
344
+ Contest name: Educational Codeforces Round 128 (Rated for Div. 2)
345
+ Rule: ICPC
346
+ Start time: 2022/5/13 22:35:00
347
+ End time: 2022/5/14 00:35:00
348
+ https://codeforces.com/contests/1680
302
349
 
303
350
  OJ: testOJ
304
351
  Contest name: testContest
305
352
  Rule: ICPC
306
- Start time: 2022/5/13 19:34:10
307
- End time: 2022/5/14 19:34:10
353
+ Start time: 2022/5/13 23:23:31
354
+ End time: 2022/5/14 00:23:31
308
355
  https://www.test.com
309
356
 
310
- [
311
- {
312
- ojName: 'testOJ',
313
- name: 'testContest',
314
- rule: 'ICPC',
315
- startTime: 2022-05-13T11:34:13.464Z,
316
- endTime: 2022-05-14T11:34:13.464Z,
317
- url: 'https://www.test.com'
318
- },
319
- {
320
- ojName: 'Codeforces',
321
- name: 'Educational Codeforces Round 128 (Rated for Div. 2)',
322
- rule: 'ICPC',
323
- startTime: 2022-05-13T14:35:00.000Z,
324
- endTime: 2022-05-13T16:35:00.000Z,
325
- url: 'https://codeforces.com/contests/1680'
326
- },
327
- {
328
- ojName: 'Codeforces',
329
- name: 'Codeforces Round #791 (Div. 2)',
330
- rule: 'Codeforces',
331
- startTime: 2022-05-14T09:35:00.000Z,
332
- endTime: 2022-05-14T11:35:00.000Z,
333
- url: 'https://codeforces.com/contests/1679'
334
- }
335
- ]
357
+ There are 1 contests on Codeforces,testOJ in the next 1 days
358
+
359
+ OJ: Codeforces
360
+ Contest name: Codeforces Round #791 (Div. 2)
361
+ Rule: Codeforces
362
+ Start time: 2022/5/14 17:35:00
363
+ End time: 2022/5/14 19:35:00
364
+ https://codeforces.com/contests/1679
365
+
366
+ {
367
+ running: [
368
+ {
369
+ ojName: 'testOJ',
370
+ name: 'testContest',
371
+ rule: 'ICPC',
372
+ startTime: 2022-05-13T15:23:37.245Z,
373
+ endTime: 2022-05-13T16:23:37.246Z,
374
+ url: 'https://www.test.com'
375
+ }
376
+ ],
377
+ upcoming: [
378
+ {
379
+ ojName: 'AtCoder',
380
+ name: 'Ⓐ Panasonic Programming Contest 2022(AtCoder Beginner Contest 251)',
381
+ rule: 'AtCoder',
382
+ startTime: 2022-05-14T12:00:00.000Z,
383
+ endTime: 2022-05-14T13:40:00.000Z,
384
+ url: 'https://atcoder.jp/contests/abc251'
385
+ },
386
+ {
387
+ ojName: 'AtCoder',
388
+ name: 'Ⓐ AtCoder Regular Contest 140',
389
+ rule: 'AtCoder',
390
+ startTime: 2022-05-15T12:00:00.000Z,
391
+ endTime: 2022-05-15T14:00:00.000Z,
392
+ url: 'https://atcoder.jp/contests/arc140'
393
+ }
394
+ ]
395
+ }
336
396
  ```
337
397
 
338
398
  #### Use link CLI
package/dist/cli.js CHANGED
@@ -64,9 +64,9 @@ function cli(arg, name) {
64
64
  sort: opts.sort
65
65
  };
66
66
  if (opts.raw)
67
- return JSON.stringify(yield (0, _1.getContestList)(config), null, 2);
67
+ return JSON.stringify(yield (0, _1.getContests)(config), null, 2);
68
68
  else
69
- return yield (0, _1.getContestInfo)(config, opts.language);
69
+ return yield (0, _1.getContestsInfoText)(config, opts.language);
70
70
  }
71
71
  });
72
72
  }
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,kDAA+C;AAC/C,yCAA4C;AAC5C,iCAAiC;AACjC,wBAA2D;AAC3D,qCAAoC;AACpC,oDAAuB;AAEvB,SAAS,OAAO;IAEZ,OAAO,IAAI,mBAAO,EAAE;SACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SACzB,OAAO,CAAC,sBAAO,CAAC;SAChB,MAAM,CAAC,mBAAmB,EAAE,2BAA2B,EAAE,GAAG,CAAC;SAC7D,MAAM,CAAC,YAAY,EAAE,6CAA6C,CAAC;SACnE,SAAS,CAAC,IAAI,kBAAM,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,UAAK,CAAC,CAAC,CAAC;SACxF,SAAS,CAAC,IAAI,kBAAM,CAAC,WAAW,EAAE,wBAAwB,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;SAClF,SAAS,CAAC,IAAI,kBAAM,CAAC,uBAAuB,EAAE,qBAAqB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,iBAAQ,CAAC,CAAC;SACxG,MAAM,CAAC,WAAW,EAAE,qDAAqD,CAAC,CAAC;AACpF,CAAC;AAED,SAAsB,GAAG,CAAC,GAAY,EAAE,IAAa;;QAEjD,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;QACtB,IAAG,GAAG,KAAK,SAAS;YAAE,GAAG,CAAC,KAAK,EAAE,CAAC;aAElC;YACI,IAAI,GAAG,GAAG,EAAE,CAAC;YACb,IACA;gBACI,IAAG,IAAI;oBAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACxB,GAAG;qBACE,eAAe,CAAC;oBACb,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG;oBAC1B,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG;oBAC1B,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG;iBAChC,CAAC;qBACD,YAAY,EAAE;qBACd,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;aAChD;YACD,OAAM,CAAC,EAAE;gBAAE,OAAO,GAAG,CAAC;aAAE;SAC3B;QAED,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QACxB,IAAG,IAAI,CAAC,IAAI;YAAE,OAAO,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAC,CAAC,SAAS,CAAC,UAAK,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;aAEtG;YACI,MAAM,MAAM,GAAW;gBACnB,QAAQ,EAAE,gBAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzB,IAAI,EAAE,IAAI,CAAC,IAAc;gBACzB,IAAI,EAAE,IAAI,CAAC,IAAI;aAClB,CAAC;YACF,IAAG,IAAI,CAAC,GAAG;gBAAE,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,IAAA,iBAAc,EAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;;gBACrE,OAAO,MAAM,IAAA,iBAAc,EAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC3D;IACL,CAAC;CAAA;AAlCD,kBAkCC;AAED,IAAG,OAAO,CAAC,IAAI,KAAK,MAAM;IAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,kDAA+C;AAC/C,yCAA4C;AAC5C,iCAAiC;AACjC,wBAA6D;AAC7D,qCAAoC;AACpC,oDAAuB;AAEvB,SAAS,OAAO;IAEZ,OAAO,IAAI,mBAAO,EAAE;SACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SACzB,OAAO,CAAC,sBAAO,CAAC;SAChB,MAAM,CAAC,mBAAmB,EAAE,2BAA2B,EAAE,GAAG,CAAC;SAC7D,MAAM,CAAC,YAAY,EAAE,6CAA6C,CAAC;SACnE,SAAS,CAAC,IAAI,kBAAM,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,UAAK,CAAC,CAAC,CAAC;SACxF,SAAS,CAAC,IAAI,kBAAM,CAAC,WAAW,EAAE,wBAAwB,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;SAClF,SAAS,CAAC,IAAI,kBAAM,CAAC,uBAAuB,EAAE,qBAAqB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,iBAAQ,CAAC,CAAC;SACxG,MAAM,CAAC,WAAW,EAAE,qDAAqD,CAAC,CAAC;AACpF,CAAC;AAED,SAAsB,GAAG,CAAC,GAAY,EAAE,IAAa;;QAEjD,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;QACtB,IAAG,GAAG,KAAK,SAAS;YAAE,GAAG,CAAC,KAAK,EAAE,CAAC;aAElC;YACI,IAAI,GAAG,GAAG,EAAE,CAAC;YACb,IACA;gBACI,IAAG,IAAI;oBAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACxB,GAAG;qBACE,eAAe,CAAC;oBACb,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG;oBAC1B,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG;oBAC1B,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG;iBAChC,CAAC;qBACD,YAAY,EAAE;qBACd,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;aAChD;YACD,OAAM,CAAC,EAAE;gBAAE,OAAO,GAAG,CAAC;aAAE;SAC3B;QAED,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QACxB,IAAG,IAAI,CAAC,IAAI;YAAE,OAAO,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAC,CAAC,SAAS,CAAC,UAAK,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;aAEtG;YACI,MAAM,MAAM,GAAW;gBACnB,QAAQ,EAAE,gBAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzB,IAAI,EAAE,IAAI,CAAC,IAAc;gBACzB,IAAI,EAAE,IAAI,CAAC,IAAI;aAClB,CAAC;YACF,IAAG,IAAI,CAAC,GAAG;gBAAE,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,IAAA,cAAW,EAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;;gBAClE,OAAO,MAAM,IAAA,sBAAmB,EAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;SAChE;IACL,CAAC;CAAA;AAlCD,kBAkCC;AAED,IAAG,OAAO,CAAC,IAAI,KAAK,MAAM;IAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,9 +1,13 @@
1
+ import { contest } from "./lib/contest";
1
2
  export declare type config = {
2
3
  abbrList?: string[];
3
4
  days?: number;
4
5
  sort?: boolean;
5
6
  };
6
- export declare function getContestList(config?: config): Promise<import("./lib/contest").contest[]>;
7
- export declare function getContestInfo(config?: config, language?: string): Promise<string>;
7
+ export declare function getContests(config?: config): Promise<{
8
+ running: contest[];
9
+ upcoming: contest[];
10
+ }>;
11
+ export declare function getContestsInfoText(config?: config, language?: string): Promise<string>;
8
12
  export { cli } from "./cli";
9
13
  export { addOJ } from "./lib/oj";
package/dist/index.js CHANGED
@@ -12,7 +12,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
12
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.addOJ = exports.cli = exports.getContestInfo = exports.getContestList = void 0;
15
+ exports.addOJ = exports.cli = exports.getContestsInfoText = exports.getContests = void 0;
16
16
  const oj_1 = require("./lib/oj");
17
17
  const locale_1 = require("./locale");
18
18
  const lodash_1 = __importDefault(require("lodash"));
@@ -28,51 +28,75 @@ function resolveConfig(config) {
28
28
  cfg.abbrList = defaultConfig.abbrList;
29
29
  return cfg;
30
30
  }
31
- function getContestList(config) {
31
+ function getContests(config) {
32
32
  return __awaiter(this, void 0, void 0, function* () {
33
33
  const cfg = resolveConfig(config);
34
- const contests = (yield Promise.all(cfg.abbrList.map((abbr) => __awaiter(this, void 0, void 0, function* () {
35
- try {
36
- const cts = yield oj_1.alloj[abbr].get();
37
- return cts.filter((c) => c.startTime <= new Date(Date.now() + cfg.days * 86400000));
38
- }
39
- catch (e) {
40
- console.error(`Failed to get match information for ${oj_1.alloj[abbr].name}, details:`);
41
- console.error(e);
42
- return [];
43
- }
44
- })))).reduce((ls1, ls2) => ls1.concat(ls2));
34
+ function ls(fn) {
35
+ return __awaiter(this, void 0, void 0, function* () {
36
+ return (yield Promise.all(cfg.abbrList.map((abbr) => __awaiter(this, void 0, void 0, function* () {
37
+ try {
38
+ return (yield oj_1.alloj[abbr].get()).filter(fn);
39
+ }
40
+ catch (e) {
41
+ console.error(`Failed to get match information for ${oj_1.alloj[abbr].name}, details:`);
42
+ console.error(e);
43
+ return [];
44
+ }
45
+ })))).reduce((ls1, ls2) => ls1.concat(ls2));
46
+ });
47
+ }
48
+ const ret = {
49
+ running: yield ls(ct => ct.startTime <= new Date() && ct.endTime > new Date()),
50
+ upcoming: yield ls(ct => ct.startTime > new Date() && ct.startTime <= new Date(Date.now() + cfg.days * 86400000))
51
+ };
45
52
  if (cfg.sort)
46
- contests.sort((a, b) => a.startTime.getTime() - b.startTime.getTime());
47
- return contests;
53
+ Object.values(ret).forEach(ct => ct.sort((a, b) => a.startTime.getTime() - b.startTime.getTime()));
54
+ return ret;
48
55
  });
49
56
  }
50
- exports.getContestList = getContestList;
51
- function getContestInfo(config, language = "zh-CN") {
57
+ exports.getContests = getContests;
58
+ function getContestsInfoText(config, language = "zh-CN") {
52
59
  return __awaiter(this, void 0, void 0, function* () {
53
60
  const cfg = resolveConfig(config);
54
61
  const lang = yield (0, locale_1.getLangDict)(language);
55
- const contests = yield getContestList(cfg);
62
+ const { running, upcoming } = yield getContests(cfg);
56
63
  const info = [];
57
- info.push(lodash_1.default.template(lang.welcome)({
58
- contestCount: contests.length,
59
- days: cfg.days,
60
- oj: cfg.abbrList.map(abbr => oj_1.alloj[abbr].name).join(",")
61
- }));
62
- for (const contest of contests) {
63
- const msg = [];
64
- msg.push(`${lang.ojName}: ${contest.ojName}`);
65
- msg.push(`${lang.name}: ${contest.name}`);
66
- msg.push(`${lang.rule}: ${contest.rule}`);
67
- msg.push(`${lang.startTime}: ${contest.startTime.toLocaleString(undefined, { hourCycle: "h23" })}`);
68
- msg.push(`${lang.endTime}: ${contest.endTime.toLocaleString(undefined, { hourCycle: "h23" })}`);
69
- msg.push(contest.url);
70
- info.push(msg.join("\n"));
64
+ const oj = cfg.abbrList.map(abbr => oj_1.alloj[abbr].name).join(",");
65
+ function msg(contests) {
66
+ return contests.map(contest => {
67
+ const ls = [];
68
+ ls.push(`${lang.ojName}: ${contest.ojName}`);
69
+ ls.push(`${lang.name}: ${contest.name}`);
70
+ ls.push(`${lang.rule}: ${contest.rule}`);
71
+ ls.push(`${lang.startTime}: ${contest.startTime.toLocaleString(undefined, { hourCycle: "h23" })}`);
72
+ ls.push(`${lang.endTime}: ${contest.endTime.toLocaleString(undefined, { hourCycle: "h23" })}`);
73
+ ls.push(contest.url);
74
+ return ls.join("\n");
75
+ });
76
+ }
77
+ if (running.length) {
78
+ info.push(lodash_1.default.template(lang.runnning)({
79
+ contestCount: running.length,
80
+ oj
81
+ }));
82
+ info.push(...msg(running));
83
+ }
84
+ else
85
+ info.push(lodash_1.default.template(lang.norunning)({ oj }));
86
+ if (upcoming.length) {
87
+ info.push(lodash_1.default.template(lang.upcoming)({
88
+ contestCount: upcoming.length,
89
+ days: cfg.days,
90
+ oj
91
+ }));
92
+ info.push(...msg(upcoming));
71
93
  }
94
+ else
95
+ info.push(lodash_1.default.template(lang.noupcoming)({ days: cfg.days, oj }));
72
96
  return pangu_1.default.spacing(info.join("\n\n"));
73
97
  });
74
98
  }
75
- exports.getContestInfo = getContestInfo;
99
+ exports.getContestsInfoText = getContestsInfoText;
76
100
  var cli_1 = require("./cli");
77
101
  Object.defineProperty(exports, "cli", { enumerable: true, get: function () { return cli_1.cli; } });
78
102
  var oj_2 = require("./lib/oj");
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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"}
@@ -62,8 +62,8 @@ exports.at = {
62
62
  ct.url = `https://atcoder.jp${ele.attr().href}`;
63
63
  }
64
64
  else if (idx == 2) {
65
- const [h, s] = $(this).text().split(":");
66
- ct.endTime = new Date(ct.startTime.getTime() + (parseInt(h) * 60 + parseInt(s)) * 1000);
65
+ const [h, m] = $(this).text().split(":");
66
+ ct.endTime = new Date(ct.startTime.getTime() + (parseInt(h) * 60 + parseInt(m)) * 60 * 1000);
67
67
  }
68
68
  });
69
69
  contests.push(ct);
@@ -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,IAAI,CAAC,CAAC;iBAC3F;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,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"}
@@ -60,7 +60,7 @@ exports.cf = {
60
60
  endTime: new Date((res.startTimeSeconds + res.durationSeconds) * 1000),
61
61
  url: `https://codeforces.com/contests/${res.id}`
62
62
  };
63
- }).filter(contest => contest.startTime >= new Date());
63
+ }).filter(contest => contest.endTime >= new Date());
64
64
  })
65
65
  };
66
66
  //# sourceMappingURL=codeforces.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"codeforces.js","sourceRoot":"","sources":["../../../src/lib/oj/codeforces.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA0B;AAC1B,iDAAmC;AAenC,MAAM,UAAU,GAAyB;IACrC,EAAE,EAAE,YAAY;IAChB,IAAI,EAAE,MAAM;CACf,CAAC;AAEW,QAAA,EAAE,GAAO;IAClB,IAAI,EAAE,YAAY;IAClB,GAAG,EAAE,GAAS,EAAE;QAEZ,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;QAC5E,IAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,YAAY,MAAM,CAAC,EACrC;YACI,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;SAC7B;QACD,MAAM,OAAO,GAAa,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;QAC/C,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAW,EAAE;YAEhC,OAAO;gBACH,MAAM,EAAE,UAAE,CAAC,IAAI;gBACf,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;gBAC1B,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,gBAAgB,GAAG,IAAI,CAAC;gBAChD,OAAO,EAAE,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,gBAAgB,GAAG,GAAG,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC;gBACtE,GAAG,EAAE,mCAAmC,GAAG,CAAC,EAAE,EAAE;aACnD,CAAC;QACN,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;IAC1D,CAAC,CAAA;CACJ,CAAC"}
1
+ {"version":3,"file":"codeforces.js","sourceRoot":"","sources":["../../../src/lib/oj/codeforces.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA0B;AAC1B,iDAAmC;AAenC,MAAM,UAAU,GAAyB;IACrC,EAAE,EAAE,YAAY;IAChB,IAAI,EAAE,MAAM;CACf,CAAC;AAEW,QAAA,EAAE,GAAO;IAClB,IAAI,EAAE,YAAY;IAClB,GAAG,EAAE,GAAS,EAAE;QAEZ,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;QAC5E,IAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,YAAY,MAAM,CAAC,EACrC;YACI,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;SAC7B;QACD,MAAM,OAAO,GAAa,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;QAC/C,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAW,EAAE;YAEhC,OAAO;gBACH,MAAM,EAAE,UAAE,CAAC,IAAI;gBACf,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;gBAC1B,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,gBAAgB,GAAG,IAAI,CAAC;gBAChD,OAAO,EAAE,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,gBAAgB,GAAG,GAAG,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC;gBACtE,GAAG,EAAE,mCAAmC,GAAG,CAAC,EAAE,EAAE;aACnD,CAAC;QACN,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC,CAAA;CACJ,CAAC"}
@@ -38,7 +38,7 @@ exports.lg = {
38
38
  endTime: new Date(res.endTime * 1000),
39
39
  url: `https://www.luogu.com.cn/contest/${res.id}`
40
40
  };
41
- }).filter(contest => contest.startTime >= new Date());
41
+ }).filter(contest => contest.endTime >= new Date());
42
42
  })
43
43
  };
44
44
  //# sourceMappingURL=luogu.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"luogu.js","sourceRoot":"","sources":["../../../src/lib/oj/luogu.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,kDAA0B;AAiB1B,MAAM,UAAU,GAAyB;IACrC,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,MAAM;IACT,CAAC,EAAE,OAAO;IACV,CAAC,EAAE,KAAK;IACR,CAAC,EAAE,YAAY;CAClB,CAAC;AAEF,MAAM,OAAO,GAAG;IACZ,YAAY,EAAE,qHAAqH;IACnI,cAAc,EAAE,cAAc;CACjC,CAAC;AAEW,QAAA,EAAE,GAAO;IAClB,IAAI,EAAE,OAAO;IACb,GAAG,EAAE,GAAS,EAAE;QAEZ,MAAM,OAAO,GAAa,CAAC,MAAM,eAAK,CAAC,GAAG,CAAC,uCAAuC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC;QACnI,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAW,EAAE;YAEhC,OAAO;gBACH,MAAM,EAAE,UAAE,CAAC,IAAI;gBACf,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAC9B,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC;gBACzC,OAAO,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC;gBACrC,GAAG,EAAE,oCAAoC,GAAG,CAAC,EAAE,EAAE;aACpD,CAAC;QACN,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;IAC1D,CAAC,CAAA;CACJ,CAAC"}
1
+ {"version":3,"file":"luogu.js","sourceRoot":"","sources":["../../../src/lib/oj/luogu.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,kDAA0B;AAiB1B,MAAM,UAAU,GAAyB;IACrC,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,MAAM;IACT,CAAC,EAAE,OAAO;IACV,CAAC,EAAE,KAAK;IACR,CAAC,EAAE,YAAY;CAClB,CAAC;AAEF,MAAM,OAAO,GAAG;IACZ,YAAY,EAAE,qHAAqH;IACnI,cAAc,EAAE,cAAc;CACjC,CAAC;AAEW,QAAA,EAAE,GAAO;IAClB,IAAI,EAAE,OAAO;IACb,GAAG,EAAE,GAAS,EAAE;QAEZ,MAAM,OAAO,GAAa,CAAC,MAAM,eAAK,CAAC,GAAG,CAAC,uCAAuC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC;QACnI,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAW,EAAE;YAEhC,OAAO;gBACH,MAAM,EAAE,UAAE,CAAC,IAAI;gBACf,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAC9B,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC;gBACzC,OAAO,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC;gBACrC,GAAG,EAAE,oCAAoC,GAAG,CAAC,EAAE,EAAE;aACpD,CAAC;QACN,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC,CAAA;CACJ,CAAC"}
@@ -1,5 +1,8 @@
1
1
  {
2
- "welcome": "${contestCount} contests on ${oj} in the last ${days} days",
2
+ "runnning": "There are ${contestCount} contests is running on ${oj}",
3
+ "norunning": "No upcomming contests on ${oj}",
4
+ "upcoming": "There are ${contestCount} contests on ${oj} in the next ${days} days",
5
+ "noupcoming": "No contests for the next ${days} days on ${oj}",
3
6
  "ojName": "OJ",
4
7
  "name": "Contest name",
5
8
  "rule": "Rule",
@@ -1,6 +1,9 @@
1
1
  export declare const langList: string[];
2
2
  export declare type langDict = {
3
- welcome: string;
3
+ runnning: string;
4
+ norunning: string;
5
+ upcoming: string;
6
+ noupcoming: string;
4
7
  ojName: string;
5
8
  name: string;
6
9
  rule: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/locale/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2BAAiC;AAEpB,QAAA,QAAQ,GAAG,IAAA,gBAAW,EAAC,GAAG,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAWlJ,SAAsB,WAAW,CAAC,QAAgB;;QAE9C,IAAG,CAAC,gBAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,QAAQ,+BAA+B,gBAAQ,EAAE,CAAC,CAAC;QACxH,yDAAc,KAAK,QAAQ,OAAO,IAAE;IACxC,CAAC;CAAA;AAJD,kCAIC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/locale/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2BAAiC;AAEpB,QAAA,QAAQ,GAAG,IAAA,gBAAW,EAAC,GAAG,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAclJ,SAAsB,WAAW,CAAC,QAAgB;;QAE9C,IAAG,CAAC,gBAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,QAAQ,+BAA+B,gBAAQ,EAAE,CAAC,CAAC;QACxH,yDAAc,KAAK,QAAQ,OAAO,IAAE;IACxC,CAAC;CAAA;AAJD,kCAIC"}
@@ -1,5 +1,8 @@
1
1
  {
2
- "welcome": "最近的 ${days} 天内在 ${oj} 上有 ${contestCount} 场比赛",
2
+ "runnning": " ${oj} 上有 ${contestCount} 场正在进行的比赛",
3
+ "norunning": "在 ${oj} 上没有正在进行的比赛捏",
4
+ "upcoming": "接下来的 ${days} 天内在 ${oj} 上有 ${contestCount} 场比赛",
5
+ "noupcoming": "接下来的 ${days} 天内在 ${oj} 上没有比赛捏",
3
6
  "ojName": "比赛平台",
4
7
  "name": "比赛名称",
5
8
  "rule": "赛制",
@@ -0,0 +1,11 @@
1
+ {
2
+ "runnning": "搁 ${oj} 上有 ${contestCount} 场比赛正干着呢",
3
+ "norunning": "搁 ${oj} 上没有正打着的比赛",
4
+ "upcoming": "之后 ${days} 天搁在 ${oj} 上统共是有 ${contestCount} 场比赛",
5
+ "noupcoming": "往后 ${days} 天搁 ${oj} 没比赛啊",
6
+ "ojName": "搁哪",
7
+ "name": "叫啥",
8
+ "rule": "啥形式",
9
+ "startTime": "啥时候开整",
10
+ "endTime": "啥时候完事"
11
+ }
@@ -1,5 +1,8 @@
1
1
  {
2
- "welcome": "最近的 ${days} 天內在 ${oj} 上有 ${contestCount} 場比賽",
2
+ "runnning": " ${oj} 上有 ${contestCount} 場正在進行的比賽",
3
+ "norunning": "在 ${oj} 上沒有正在進行的比賽",
4
+ "upcoming": "接下来的 ${days} 天內在 ${oj} 上有 ${contestCount} 場比賽",
5
+ "noupcoming": "接下來的 ${days} 天內在 ${oj} 上沒有比賽",
3
6
  "ojName": "比賽平台",
4
7
  "name": "比賽名稱",
5
8
  "rule": "賽制",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lscontests",
3
- "version": "1.8.12",
3
+ "version": "1.9.1",
4
4
  "description": "A tool to get information about the contests on each OJ",
5
5
  "keywords": [
6
6
  "cli",