lscontests 1.8.13 → 1.9.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 +103 -87
- package/dist/cli.js +2 -2
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +6 -2
- package/dist/index.js +57 -33
- package/dist/index.js.map +1 -1
- package/dist/lib/oj/codeforces.js +1 -1
- package/dist/lib/oj/codeforces.js.map +1 -1
- package/dist/lib/oj/luogu.js +1 -1
- package/dist/lib/oj/luogu.js.map +1 -1
- package/dist/locale/en.json +4 -1
- package/dist/locale/index.d.ts +4 -1
- package/dist/locale/index.js.map +1 -1
- package/dist/locale/zh-CN.json +4 -1
- package/dist/locale/zh-TW.json +4 -1
- package/package.json +1 -1
package/README.md
CHANGED
@@ -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
|
53
|
+
(*The following content was automatically generated in Fri, 13 May 2022 15:28:45 GMT*)
|
54
54
|
|
55
55
|
<details>
|
56
56
|
<summary> <code>> lsct </code> </summary>
|
57
57
|
|
58
58
|
```text
|
59
|
-
|
59
|
+
在 AtCoder,Codeforces,Luogu,NowCoder 上有 3 场正在进行的比赛
|
60
60
|
|
61
61
|
比赛平台: NowCoder
|
62
62
|
比赛名称:牛客竞赛博弈专题班 Sprague-Grundy 函数(SG 函数、图游戏、Nim 和)
|
@@ -72,13 +72,6 @@ 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
|
77
|
-
赛制: ICPC
|
78
|
-
开始时间: 5/13/2022, 11:00:00
|
79
|
-
结束时间: 5/13/2022, 14:00:00
|
80
|
-
https://ac.nowcoder.com/acm/contest/11200
|
81
|
-
|
82
75
|
比赛平台: Codeforces
|
83
76
|
比赛名称: Educational Codeforces Round 128 (Rated for Div. 2)
|
84
77
|
赛制: ICPC
|
@@ -86,6 +79,8 @@ https://ac.nowcoder.com/acm/contest/11200
|
|
86
79
|
结束时间: 5/13/2022, 16:35:00
|
87
80
|
https://codeforces.com/contests/1680
|
88
81
|
|
82
|
+
接下来的 3 天内在 AtCoder,Codeforces,Luogu,NowCoder 上有 8 场比赛
|
83
|
+
|
89
84
|
比赛平台: NowCoder
|
90
85
|
比赛名称:第二届天元编程邀请赛(提高组)
|
91
86
|
赛制: IOI
|
@@ -149,7 +144,7 @@ https://atcoder.jp/contests/arc140
|
|
149
144
|
<summary> <code>> lsct -o at cf -d 7</code> </summary>
|
150
145
|
|
151
146
|
```text
|
152
|
-
|
147
|
+
在 AtCoder,Codeforces 上有 1 场正在进行的比赛
|
153
148
|
|
154
149
|
比赛平台: Codeforces
|
155
150
|
比赛名称: Educational Codeforces Round 128 (Rated for Div. 2)
|
@@ -158,6 +153,8 @@ https://atcoder.jp/contests/arc140
|
|
158
153
|
结束时间: 5/13/2022, 16:35:00
|
159
154
|
https://codeforces.com/contests/1680
|
160
155
|
|
156
|
+
接下来的 7 天内在 AtCoder,Codeforces 上有 3 场比赛
|
157
|
+
|
161
158
|
比赛平台: Codeforces
|
162
159
|
比赛名称: Codeforces Round #791 (Div. 2)
|
163
160
|
赛制: Codeforces
|
@@ -186,7 +183,7 @@ https://atcoder.jp/contests/arc140
|
|
186
183
|
<summary> <code>> lsct -o lg nc -d 7 -L en</code> </summary>
|
187
184
|
|
188
185
|
```text
|
189
|
-
|
186
|
+
There are 2 contests is running on Luogu,NowCoder
|
190
187
|
|
191
188
|
OJ: NowCoder
|
192
189
|
Contest name: 牛客竞赛博弈专题班 Sprague-Grundy 函数(SG 函数、图游戏、Nim 和)
|
@@ -202,12 +199,7 @@ Start time: 5/13/2022, 06:00:00
|
|
202
199
|
End time: 5/30/2022, 08:00:00
|
203
200
|
https://ac.nowcoder.com/acm/contest/34649
|
204
201
|
|
205
|
-
|
206
|
-
Contest name: 牛客挑战赛 60
|
207
|
-
Rule: ICPC
|
208
|
-
Start time: 5/13/2022, 11:00:00
|
209
|
-
End time: 5/13/2022, 14:00:00
|
210
|
-
https://ac.nowcoder.com/acm/contest/11200
|
202
|
+
There are 5 contests on Luogu,NowCoder in the next 7 days
|
211
203
|
|
212
204
|
OJ: NowCoder
|
213
205
|
Contest name: 第二届天元编程邀请赛(提高组)
|
@@ -251,40 +243,44 @@ https://www.luogu.com.cn/contest/67377
|
|
251
243
|
<summary> <code>> lsct -o at cf -d 7 -r --no-sort</code> </summary>
|
252
244
|
|
253
245
|
```json
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
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
|
+
}
|
288
284
|
```
|
289
285
|
|
290
286
|
</details>
|
@@ -299,7 +295,7 @@ If you want to get a list of contest information in your project by calling *lsc
|
|
299
295
|
```typescript
|
300
296
|
import { getContestInfo } from "lscontests";
|
301
297
|
|
302
|
-
|
298
|
+
getContestsInfoText({ abbrList: ["cf", "lg"] }).then(console.log);
|
303
299
|
```
|
304
300
|
|
305
301
|
This code gives the same result as `lsct -o cf lg`.
|
@@ -309,7 +305,7 @@ This code gives the same result as `lsct -o cf lg`.
|
|
309
305
|
```typescript
|
310
306
|
import { getContestList } from "lscontests";
|
311
307
|
|
312
|
-
|
308
|
+
getContests({ sort: false }).then(console.log);
|
313
309
|
```
|
314
310
|
|
315
311
|
This code gives the same result as `lsct -r --no-sort`.
|
@@ -317,23 +313,23 @@ This code gives the same result as `lsct -r --no-sort`.
|
|
317
313
|
#### Add OJ support
|
318
314
|
|
319
315
|
```typescript
|
320
|
-
import { addOJ,
|
316
|
+
import { addOJ, getContestsInfoText, getContests } from "lscontests";
|
321
317
|
|
322
318
|
addOJ("ts", {
|
323
319
|
name: "testOJ", get: async () => [{
|
324
320
|
ojName: "testOJ",
|
325
321
|
name: "testContest",
|
326
322
|
rule: "ICPC",
|
327
|
-
startTime: new Date(Date.now()
|
328
|
-
endTime: new Date(Date.now() +
|
323
|
+
startTime: new Date(Date.now() - 1),
|
324
|
+
endTime: new Date(Date.now() + 3600000),
|
329
325
|
url: "https://www.test.com"
|
330
326
|
}]
|
331
327
|
});
|
332
328
|
|
333
329
|
async function main() {
|
334
|
-
console.log(await
|
330
|
+
console.log(await getContestsInfoText({ abbrList: ["cf", "ts"], days: 1 }, "en"));
|
335
331
|
console.log();
|
336
|
-
console.log(await
|
332
|
+
console.log(await getContests({ abbrList: ["at", "ts"], days: 7 }));
|
337
333
|
}
|
338
334
|
|
339
335
|
main();
|
@@ -342,41 +338,61 @@ main();
|
|
342
338
|
This code gives the following results:
|
343
339
|
|
344
340
|
```text
|
345
|
-
|
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
|
346
349
|
|
347
350
|
OJ: testOJ
|
348
351
|
Contest name: testContest
|
349
352
|
Rule: ICPC
|
350
|
-
Start time: 2022/5/13
|
351
|
-
End time: 2022/5/14
|
353
|
+
Start time: 2022/5/13 23:23:31
|
354
|
+
End time: 2022/5/14 00:23:31
|
352
355
|
https://www.test.com
|
353
356
|
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
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
|
+
}
|
380
396
|
```
|
381
397
|
|
382
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.
|
67
|
+
return JSON.stringify(yield (0, _1.getContests)(config), null, 2);
|
68
68
|
else
|
69
|
-
return yield (0, _1.
|
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,
|
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
|
7
|
-
|
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.
|
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
|
31
|
+
function getContests(config) {
|
32
32
|
return __awaiter(this, void 0, void 0, function* () {
|
33
33
|
const cfg = resolveConfig(config);
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
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
|
-
|
47
|
-
return
|
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.
|
51
|
-
function
|
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
|
62
|
+
const { running, upcoming } = yield getContests(cfg);
|
56
63
|
const info = [];
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
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.
|
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":";;;;;;;;;;;;;;;AAAA,iCAAiC;AACjC,qCAAuC;
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,iCAAiC;AACjC,qCAAuC;AAEvC,oDAAuB;AACvB,kDAA0B;AAQ1B,MAAM,aAAa,GAAG;IAClB,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,UAAK,CAAC;IAC5B,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,IAAI;CACb,CAAC;AAEF,SAAS,aAAa,CAAC,MAAe;IAElC,MAAM,GAAG,mCAAQ,aAAa,GAAK,MAAM,CAAE,CAAC;IAC5C,IAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC;QAAE,GAAG,CAAC,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC;IACnE,OAAO,GAAG,CAAC;AACf,CAAC;AAED,SAAsB,WAAW,CAAC,MAAe;;QAE7C,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QAClC,SAAe,EAAE,CAAC,EAA2B;;gBAEzC,OAAO,CAAC,MAAM,OAAO,CAAC,GAAG,CACrB,GAAG,CAAC,QAAQ,CAAC,GAAG,CACZ,CAAM,IAAI,EAAC,EAAE;oBAET,IAAI;wBAAE,OAAO,CAAC,MAAM,UAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;qBAAE;oBACpD,OAAM,CAAC,EACP;wBACI,OAAO,CAAC,KAAK,CAAC,uCAAuC,UAAK,CAAC,IAAI,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC;wBACnF,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wBACjB,OAAO,EAAE,CAAC;qBACb;gBACL,CAAC,CAAA,CACJ,CACJ,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC7C,CAAC;SAAA;QACD,MAAM,GAAG,GAAG;YACR,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;YAC9E,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,CAAC,SAAS,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAC;SACpH,CAAC;QACF,IAAG,GAAG,CAAC,IAAI;YAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAChH,OAAO,GAAG,CAAC;IACf,CAAC;CAAA;AA1BD,kCA0BC;AAED,SAAsB,mBAAmB,CAAC,MAAe,EAAE,QAAQ,GAAG,OAAO;;QAEzE,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG,MAAM,IAAA,oBAAW,EAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;QACrD,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,MAAM,EAAE,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,UAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEhE,SAAS,GAAG,CAAC,QAAmB;YAE5B,OAAO,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;gBAE1B,MAAM,EAAE,GAAa,EAAE,CAAC;gBACxB,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC7C,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;gBACzC,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;gBACzC,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;gBACnG,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC/F,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACrB,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC,CAAC,CAAC;QACP,CAAC;QAED,IAAG,OAAO,CAAC,MAAM,EACjB;YACI,IAAI,CAAC,IAAI,CAAC,gBAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAChC,YAAY,EAAE,OAAO,CAAC,MAAM;gBAC5B,EAAE;aACL,CAAC,CAAC,CAAC;YACJ,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;SAC9B;;YACI,IAAI,CAAC,IAAI,CAAC,gBAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACnD,IAAG,QAAQ,CAAC,MAAM,EAClB;YACI,IAAI,CAAC,IAAI,CAAC,gBAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAChC,YAAY,EAAE,QAAQ,CAAC,MAAM;gBAC7B,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,EAAE;aACL,CAAC,CAAC,CAAC;YACJ,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;SAC/B;;YACI,IAAI,CAAC,IAAI,CAAC,gBAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAEpE,OAAO,eAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5C,CAAC;CAAA;AA5CD,kDA4CC;AAED,6BAA4B;AAAnB,0FAAA,GAAG,OAAA;AACZ,+BAAiC;AAAxB,2FAAA,KAAK,OAAA"}
|
@@ -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.
|
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,
|
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"}
|
package/dist/lib/oj/luogu.js
CHANGED
@@ -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.
|
41
|
+
}).filter(contest => contest.endTime >= new Date());
|
42
42
|
})
|
43
43
|
};
|
44
44
|
//# sourceMappingURL=luogu.js.map
|
package/dist/lib/oj/luogu.js.map
CHANGED
@@ -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,
|
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"}
|
package/dist/locale/en.json
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
{
|
2
|
-
"
|
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",
|
package/dist/locale/index.d.ts
CHANGED
package/dist/locale/index.js.map
CHANGED
@@ -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;
|
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"}
|
package/dist/locale/zh-CN.json
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
{
|
2
|
-
"
|
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/dist/locale/zh-TW.json
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
{
|
2
|
-
"
|
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": "賽制",
|