lscontests 1.9.1 → 1.10.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 +45 -173
- package/dist/cli.d.ts +6 -0
- package/dist/cli.js +6 -0
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +11 -0
- package/dist/index.js +12 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/oj/atcoder.js +1 -1
- package/dist/lib/oj/atcoder.js.map +1 -1
- package/dist/lib/oj/index.d.ts +5 -0
- package/dist/lib/oj/index.js +7 -0
- package/dist/lib/oj/index.js.map +1 -1
- package/dist/lib/oj/leetcode.d.ts +2 -0
- package/dist/lib/oj/leetcode.js +66 -0
- package/dist/lib/oj/leetcode.js.map +1 -0
- package/dist/locale/zh-NE.json +6 -6
- package/package.json +3 -2
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
|
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
|
33
|
+
You can use cli to get a list of information about contests easily.
|
32
34
|
|
33
35
|
<!-- block_help begin -->
|
34
36
|
```text
|
@@ -38,7 +40,7 @@ Options:
|
|
38
40
|
-V, --version output the version number
|
39
41
|
-d, --days, <day> number of days to display (default: "3")
|
40
42
|
-l, --list list all supported OJ and it's abbreviation
|
41
|
-
-o, --oj <ojs...> OJs to display (choices: "at", "cf", "lg", "nc")
|
43
|
+
-o, --oj <ojs...> OJs to display (choices: "at", "cf", "lc", "lg", "nc")
|
42
44
|
-r, --raw print raw contest list
|
43
45
|
-L, --language <lang> set output language (choices: "en", "zh-CN", "zh-NE",
|
44
46
|
"zh-TW", default: "zh-CN")
|
@@ -50,71 +52,13 @@ Options:
|
|
50
52
|
It performs as follows:
|
51
53
|
|
52
54
|
<!-- block_cli begin -->
|
53
|
-
(*The following content was automatically generated in
|
55
|
+
(*The following content was automatically generated by [semantic-release](https://github.com/semantic-release/semantic-release) in Sat, 14 May 2022 13:07:09 GMT*)
|
54
56
|
|
55
57
|
<details>
|
56
58
|
<summary> <code>> lsct </code> </summary>
|
57
59
|
|
58
60
|
```text
|
59
|
-
在 AtCoder,Codeforces,Luogu,NowCoder 上有
|
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
|
-
比赛平台: Codeforces
|
76
|
-
比赛名称: Educational Codeforces Round 128 (Rated for Div. 2)
|
77
|
-
赛制: ICPC
|
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 场比赛
|
83
|
-
|
84
|
-
比赛平台: NowCoder
|
85
|
-
比赛名称:第二届天元编程邀请赛(提高组)
|
86
|
-
赛制: IOI
|
87
|
-
开始时间: 5/14/2022, 04:30:00
|
88
|
-
结束时间: 5/14/2022, 09:00:00
|
89
|
-
https://ac.nowcoder.com/acm/contest/33335
|
90
|
-
|
91
|
-
比赛平台: NowCoder
|
92
|
-
比赛名称:第二届天元编程邀请赛(普及组)
|
93
|
-
赛制: IOI
|
94
|
-
开始时间: 5/14/2022, 04:30:00
|
95
|
-
结束时间: 5/14/2022, 08:00:00
|
96
|
-
https://ac.nowcoder.com/acm/contest/33341
|
97
|
-
|
98
|
-
比赛平台: NowCoder
|
99
|
-
比赛名称:第十八届西南科技大学 ACM 程序设计竞赛(同步赛)
|
100
|
-
赛制: ICPC
|
101
|
-
开始时间: 5/14/2022, 05:00:00
|
102
|
-
结束时间: 5/14/2022, 10:00:00
|
103
|
-
https://ac.nowcoder.com/acm/contest/33540
|
104
|
-
|
105
|
-
比赛平台: Luogu
|
106
|
-
比赛名称: 【LGR-109】洛谷 5 月月赛 II & Windy Round 6
|
107
|
-
赛制: IOI
|
108
|
-
开始时间: 5/14/2022, 06:00:00
|
109
|
-
结束时间: 5/14/2022, 10:00:00
|
110
|
-
https://www.luogu.com.cn/contest/68326
|
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
|
61
|
+
在 AtCoder,Codeforces,LeetCode,Luogu,NowCoder 上有 1 场正在进行的比赛
|
118
62
|
|
119
63
|
比赛平台: AtCoder
|
120
64
|
比赛名称: Ⓐ Panasonic Programming Contest 2022 (AtCoder Beginner Contest 251)
|
@@ -123,6 +67,22 @@ https://codeforces.com/contests/1679
|
|
123
67
|
结束时间: 5/14/2022, 13:40:00
|
124
68
|
https://atcoder.jp/contests/abc251
|
125
69
|
|
70
|
+
接下来的 3 天内在 AtCoder,Codeforces,LeetCode,Luogu,NowCoder 上有 4 场比赛
|
71
|
+
|
72
|
+
比赛平台: LeetCode
|
73
|
+
比赛名称: Biweekly Contest 78
|
74
|
+
赛制: AtCoder
|
75
|
+
开始时间: 5/14/2022, 14:30:00
|
76
|
+
结束时间: 5/14/2022, 16:00:00
|
77
|
+
https://leetcode.com/contest/biweekly-contest-78
|
78
|
+
|
79
|
+
比赛平台: LeetCode
|
80
|
+
比赛名称: Weekly Contest 293
|
81
|
+
赛制: AtCoder
|
82
|
+
开始时间: 5/15/2022, 02:30:00
|
83
|
+
结束时间: 5/15/2022, 04:00:00
|
84
|
+
https://leetcode.com/contest/weekly-contest-293
|
85
|
+
|
126
86
|
比赛平台: Luogu
|
127
87
|
比赛名称: 「WHOI」Round 1
|
128
88
|
赛制: IOI
|
@@ -141,100 +101,26 @@ https://atcoder.jp/contests/arc140
|
|
141
101
|
</details>
|
142
102
|
|
143
103
|
<details>
|
144
|
-
<summary> <code>> lsct -o at cf -d 7</code> </summary>
|
104
|
+
<summary> <code>> lsct -o at cf -d 7 -L en</code> </summary>
|
145
105
|
|
146
106
|
```text
|
147
|
-
|
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
|
107
|
+
There are 1 contests is running on AtCoder,Codeforces
|
164
108
|
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
109
|
+
OJ: AtCoder
|
110
|
+
Contest name: Ⓐ Panasonic Programming Contest 2022(AtCoder Beginner Contest 251)
|
111
|
+
Rule: AtCoder
|
112
|
+
Start time: 5/14/2022, 12:00:00
|
113
|
+
End time: 5/14/2022, 13:40:00
|
170
114
|
https://atcoder.jp/contests/abc251
|
171
115
|
|
172
|
-
|
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>
|
116
|
+
There are 1 contests on AtCoder,Codeforces in the next 7 days
|
181
117
|
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
OJ: NowCoder
|
189
|
-
Contest name: 牛客竞赛博弈专题班 Sprague-Grundy 函数(SG 函数、图游戏、Nim 和)
|
190
|
-
Rule: ICPC
|
191
|
-
Start time: 5/13/2022, 04:00:00
|
192
|
-
End time: 5/21/2022, 13:00:00
|
193
|
-
https://ac.nowcoder.com/acm/contest/34655
|
194
|
-
|
195
|
-
OJ: NowCoder
|
196
|
-
Contest name: 2022 图论班第一章图匹配例题与习题
|
197
|
-
Rule: ICPC
|
198
|
-
Start time: 5/13/2022, 06:00:00
|
199
|
-
End time: 5/30/2022, 08:00:00
|
200
|
-
https://ac.nowcoder.com/acm/contest/34649
|
201
|
-
|
202
|
-
There are 5 contests on Luogu,NowCoder in the next 7 days
|
203
|
-
|
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
|
231
|
-
|
232
|
-
OJ: Luogu
|
233
|
-
Contest name: 「WHOI」Round 1
|
234
|
-
Rule: IOI
|
235
|
-
Start time: 5/15/2022, 06:00:00
|
236
|
-
End time: 5/15/2022, 10:00:00
|
237
|
-
https://www.luogu.com.cn/contest/67377
|
118
|
+
OJ: AtCoder
|
119
|
+
Contest name: Ⓐ AtCoder Regular Contest 140
|
120
|
+
Rule: AtCoder
|
121
|
+
Start time: 5/15/2022, 12:00:00
|
122
|
+
End time: 5/15/2022, 14:00:00
|
123
|
+
https://atcoder.jp/contests/arc140
|
238
124
|
```
|
239
125
|
|
240
126
|
</details>
|
@@ -245,16 +131,6 @@ https://www.luogu.com.cn/contest/67377
|
|
245
131
|
```json
|
246
132
|
{
|
247
133
|
"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
134
|
{
|
259
135
|
"ojName": "AtCoder",
|
260
136
|
"name": "Ⓐ Panasonic Programming Contest 2022(AtCoder Beginner Contest 251)",
|
@@ -262,7 +138,9 @@ https://www.luogu.com.cn/contest/67377
|
|
262
138
|
"startTime": "2022-05-14T12:00:00.000Z",
|
263
139
|
"endTime": "2022-05-14T13:40:00.000Z",
|
264
140
|
"url": "https://atcoder.jp/contests/abc251"
|
265
|
-
}
|
141
|
+
}
|
142
|
+
],
|
143
|
+
"upcoming": [
|
266
144
|
{
|
267
145
|
"ojName": "AtCoder",
|
268
146
|
"name": "Ⓐ AtCoder Regular Contest 140",
|
@@ -270,14 +148,6 @@ https://www.luogu.com.cn/contest/67377
|
|
270
148
|
"startTime": "2022-05-15T12:00:00.000Z",
|
271
149
|
"endTime": "2022-05-15T14:00:00.000Z",
|
272
150
|
"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
151
|
}
|
282
152
|
]
|
283
153
|
}
|
@@ -288,9 +158,11 @@ https://www.luogu.com.cn/contest/67377
|
|
288
158
|
|
289
159
|
### API
|
290
160
|
|
161
|
+
For more detailed API documentation, please visit <https://lsct.agoh.xyz>.
|
162
|
+
|
291
163
|
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:
|
292
164
|
|
293
|
-
#### Get contests information
|
165
|
+
#### Get text for contests information
|
294
166
|
|
295
167
|
```typescript
|
296
168
|
import { getContestInfo } from "lscontests";
|
@@ -300,7 +172,7 @@ getContestsInfoText({ abbrList: ["cf", "lg"] }).then(console.log);
|
|
300
172
|
|
301
173
|
This code gives the same result as `lsct -o cf lg`.
|
302
174
|
|
303
|
-
#### Get contests information
|
175
|
+
#### Get list for contests information
|
304
176
|
|
305
177
|
```typescript
|
306
178
|
import { getContestList } from "lscontests";
|
@@ -310,7 +182,7 @@ getContests({ sort: false }).then(console.log);
|
|
310
182
|
|
311
183
|
This code gives the same result as `lsct -r --no-sort`.
|
312
184
|
|
313
|
-
#### Add OJ
|
185
|
+
#### Add support for other OJ
|
314
186
|
|
315
187
|
```typescript
|
316
188
|
import { addOJ, getContestsInfoText, getContests } from "lscontests";
|
package/dist/cli.d.ts
CHANGED
package/dist/cli.js
CHANGED
@@ -31,6 +31,12 @@ function initCmd() {
|
|
31
31
|
.addOption(new commander_1.Option("-L, --language <lang>", "set output language").default("zh-CN").choices(locale_1.langList))
|
32
32
|
.option("--no-sort", "do not sort by contests start time, but by OJ order");
|
33
33
|
}
|
34
|
+
/**
|
35
|
+
* CLI entrypoint
|
36
|
+
* @param arg Arguments
|
37
|
+
* @param name Program name
|
38
|
+
* @returns CLI output content
|
39
|
+
*/
|
34
40
|
function cli(arg, name) {
|
35
41
|
return __awaiter(this, void 0, void 0, function* () {
|
36
42
|
const cmd = initCmd();
|
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,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;
|
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;AAGD;;;;;GAKG;AACH,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
@@ -4,10 +4,21 @@ export declare type config = {
|
|
4
4
|
days?: number;
|
5
5
|
sort?: boolean;
|
6
6
|
};
|
7
|
+
/**
|
8
|
+
* Get the list of all contests matching the given config
|
9
|
+
* @param config The config of contests that want to get
|
10
|
+
* @returns A Promise that contains an array of all contests that match the given config
|
11
|
+
*/
|
7
12
|
export declare function getContests(config?: config): Promise<{
|
8
13
|
running: contest[];
|
9
14
|
upcoming: contest[];
|
10
15
|
}>;
|
16
|
+
/**
|
17
|
+
* Get the detailed text of all contests matching the given config
|
18
|
+
* @param config The config of contests that want to get
|
19
|
+
* @param language Language of the output text
|
20
|
+
* @returns A string containing detail text of contests that match the given config
|
21
|
+
*/
|
11
22
|
export declare function getContestsInfoText(config?: config, language?: string): Promise<string>;
|
12
23
|
export { cli } from "./cli";
|
13
24
|
export { addOJ } from "./lib/oj";
|
package/dist/index.js
CHANGED
@@ -28,6 +28,11 @@ function resolveConfig(config) {
|
|
28
28
|
cfg.abbrList = defaultConfig.abbrList;
|
29
29
|
return cfg;
|
30
30
|
}
|
31
|
+
/**
|
32
|
+
* Get the list of all contests matching the given config
|
33
|
+
* @param config The config of contests that want to get
|
34
|
+
* @returns A Promise that contains an array of all contests that match the given config
|
35
|
+
*/
|
31
36
|
function getContests(config) {
|
32
37
|
return __awaiter(this, void 0, void 0, function* () {
|
33
38
|
const cfg = resolveConfig(config);
|
@@ -38,7 +43,7 @@ function getContests(config) {
|
|
38
43
|
return (yield oj_1.alloj[abbr].get()).filter(fn);
|
39
44
|
}
|
40
45
|
catch (e) {
|
41
|
-
console.error(`Failed to get
|
46
|
+
console.error(`Failed to get contest information for ${oj_1.alloj[abbr].name}, details:`);
|
42
47
|
console.error(e);
|
43
48
|
return [];
|
44
49
|
}
|
@@ -55,6 +60,12 @@ function getContests(config) {
|
|
55
60
|
});
|
56
61
|
}
|
57
62
|
exports.getContests = getContests;
|
63
|
+
/**
|
64
|
+
* Get the detailed text of all contests matching the given config
|
65
|
+
* @param config The config of contests that want to get
|
66
|
+
* @param language Language of the output text
|
67
|
+
* @returns A string containing detail text of contests that match the given config
|
68
|
+
*/
|
58
69
|
function getContestsInfoText(config, language = "zh-CN") {
|
59
70
|
return __awaiter(this, void 0, void 0, function* () {
|
60
71
|
const cfg = resolveConfig(config);
|
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;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,
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/oj/atcoder.js
CHANGED
@@ -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,
|
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"}
|
package/dist/lib/oj/index.d.ts
CHANGED
@@ -6,4 +6,9 @@ export declare type oj = {
|
|
6
6
|
export declare const alloj: {
|
7
7
|
[abbr: string]: oj;
|
8
8
|
};
|
9
|
+
/**
|
10
|
+
* Add an OJ to get information about the contests held on it
|
11
|
+
* @param abbr Abbreviation of the OJ to be added
|
12
|
+
* @param oj OJ to be added
|
13
|
+
*/
|
9
14
|
export declare function addOJ(abbr: string, oj: oj): void;
|
package/dist/lib/oj/index.js
CHANGED
@@ -3,14 +3,21 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.addOJ = exports.alloj = void 0;
|
4
4
|
const atcoder_1 = require("./atcoder");
|
5
5
|
const codeforces_1 = require("./codeforces");
|
6
|
+
const leetcode_1 = require("./leetcode");
|
6
7
|
const luogu_1 = require("./luogu");
|
7
8
|
const nowcoder_1 = require("./nowcoder");
|
8
9
|
exports.alloj = {
|
9
10
|
at: atcoder_1.at,
|
10
11
|
cf: codeforces_1.cf,
|
12
|
+
lc: leetcode_1.lc,
|
11
13
|
lg: luogu_1.lg,
|
12
14
|
nc: nowcoder_1.nc,
|
13
15
|
};
|
16
|
+
/**
|
17
|
+
* Add an OJ to get information about the contests held on it
|
18
|
+
* @param abbr Abbreviation of the OJ to be added
|
19
|
+
* @param oj OJ to be added
|
20
|
+
*/
|
14
21
|
function addOJ(abbr, oj) {
|
15
22
|
exports.alloj[abbr] = oj;
|
16
23
|
}
|
package/dist/lib/oj/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/oj/index.ts"],"names":[],"mappings":";;;AACA,uCAA+B;AAC/B,6CAAkC;AAClC,mCAA6B;AAC7B,yCAAgC;AAOnB,QAAA,KAAK,GAA4B;IAC1C,EAAE,EAAF,YAAE;IACF,EAAE,EAAF,eAAE;IACF,EAAE,EAAF,UAAE;IACF,EAAE,EAAF,aAAE;CACL,CAAC;AAEF,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":";;;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"}
|
@@ -0,0 +1,66 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
+
if (k2 === undefined) k2 = k;
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
7
|
+
}
|
8
|
+
Object.defineProperty(o, k2, desc);
|
9
|
+
}) : (function(o, m, k, k2) {
|
10
|
+
if (k2 === undefined) k2 = k;
|
11
|
+
o[k2] = m[k];
|
12
|
+
}));
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
15
|
+
}) : function(o, v) {
|
16
|
+
o["default"] = v;
|
17
|
+
});
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
19
|
+
if (mod && mod.__esModule) return mod;
|
20
|
+
var result = {};
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
22
|
+
__setModuleDefault(result, mod);
|
23
|
+
return result;
|
24
|
+
};
|
25
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
32
|
+
});
|
33
|
+
};
|
34
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
35
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
36
|
+
};
|
37
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
38
|
+
exports.lc = void 0;
|
39
|
+
const axios_1 = __importDefault(require("axios"));
|
40
|
+
const cheerio = __importStar(require("cheerio"));
|
41
|
+
const headers = {
|
42
|
+
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36",
|
43
|
+
};
|
44
|
+
exports.lc = {
|
45
|
+
name: "LeetCode",
|
46
|
+
get: () => __awaiter(void 0, void 0, void 0, function* () {
|
47
|
+
var _a;
|
48
|
+
const response = yield axios_1.default.get("https://leetcode.com/contest", { headers });
|
49
|
+
const $ = cheerio.load(response.data);
|
50
|
+
const resList = JSON.parse((_a = $("#__NEXT_DATA__").html()) !== null && _a !== void 0 ? _a : "")
|
51
|
+
.props.pageProps.dehydratedState.queries
|
52
|
+
.find((v) => v.queryKey[0] == "topTwoContests")
|
53
|
+
.state.data.topTwoContests;
|
54
|
+
return resList.map((res) => {
|
55
|
+
return {
|
56
|
+
ojName: exports.lc.name,
|
57
|
+
name: res.title,
|
58
|
+
rule: "AtCoder",
|
59
|
+
startTime: new Date(res.startTime * 1000),
|
60
|
+
endTime: new Date((res.startTime + res.duration) * 1000),
|
61
|
+
url: `https://leetcode.com/contest/${res.titleSlug}`
|
62
|
+
};
|
63
|
+
});
|
64
|
+
})
|
65
|
+
};
|
66
|
+
//# sourceMappingURL=leetcode.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"leetcode.js","sourceRoot":"","sources":["../../../src/lib/oj/leetcode.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA0B;AAC1B,iDAAmC;AAYnC,MAAM,OAAO,GAAG;IACZ,YAAY,EAAE,qHAAqH;CACtI,CAAC;AAEW,QAAA,EAAE,GAAO;IAClB,IAAI,EAAE,UAAU;IAChB,GAAG,EAAE,GAAS,EAAE;;QAEZ,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,GAAG,CAAC,8BAA8B,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9E,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,OAAO,GAAa,IAAI,CAAC,KAAK,CAAC,MAAA,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,EAAE,mCAAI,EAAE,CAAC;aACjE,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,OAAO;aACvC,IAAI,CAAC,CAAC,CAA2B,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,gBAAgB,CAAC;aACxE,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC;QAC/B,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAW,EAAE;YAEhC,OAAO;gBACH,MAAM,EAAE,UAAE,CAAC,IAAI;gBACf,IAAI,EAAE,GAAG,CAAC,KAAK;gBACf,IAAI,EAAE,SAAS;gBACf,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC;gBACzC,OAAO,EAAE,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;gBACxD,GAAG,EAAE,gCAAgC,GAAG,CAAC,SAAS,EAAE;aACvD,CAAC;QACN,CAAC,CAAC,CAAC;IACP,CAAC,CAAA;CACJ,CAAC"}
|
package/dist/locale/zh-NE.json
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
{
|
2
2
|
"runnning": "搁 ${oj} 上有 ${contestCount} 场比赛正干着呢",
|
3
|
-
"norunning": "
|
4
|
-
"upcoming": "之后 ${days}
|
5
|
-
"noupcoming": "
|
3
|
+
"norunning": "这前搁 ${oj} 上没比赛打",
|
4
|
+
"upcoming": "之后 ${days} 天搁 ${oj} 上拢共 ${contestCount} 场比赛",
|
5
|
+
"noupcoming": "没成想往后 ${days} 天搁 ${oj} 没比赛打啊",
|
6
6
|
"ojName": "搁哪",
|
7
7
|
"name": "叫啥",
|
8
|
-
"rule": "
|
9
|
-
"startTime": "
|
10
|
-
"endTime": "
|
8
|
+
"rule": "咋个整法",
|
9
|
+
"startTime": "啥前开始",
|
10
|
+
"endTime": "多前完事"
|
11
11
|
}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "lscontests",
|
3
|
-
"version": "1.
|
3
|
+
"version": "1.10.1",
|
4
4
|
"description": "A tool to get information about the contests on each OJ",
|
5
5
|
"keywords": [
|
6
6
|
"cli",
|
@@ -26,7 +26,7 @@
|
|
26
26
|
"scripts": {
|
27
27
|
"build": "rimraf ./dist/* && tsc -p src",
|
28
28
|
"clean": "rimraf ./dist",
|
29
|
-
"docs": "typedoc --
|
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"
|
@@ -49,6 +49,7 @@
|
|
49
49
|
"markdownlint-cli": "^0.31.1",
|
50
50
|
"rimraf": "^3.0.2",
|
51
51
|
"typedoc": "^0.22.15",
|
52
|
+
"typedoc-plugin-extras": "^2.2.3",
|
52
53
|
"typescript": "^4.6.4"
|
53
54
|
},
|
54
55
|
"config": {
|