lscontests 1.7.2 → 1.7.3

Sign up to get free protection for your applications and to get access to all the features.
package/README.md CHANGED
@@ -14,7 +14,7 @@ A tool to get information about the contests on each OJ.
14
14
 
15
15
  ### CLI
16
16
 
17
- You can use cli to get a list of contests information easily.
17
+ You can use cli to get a list of information about upcoming contests easily.
18
18
 
19
19
  ```text
20
20
  lsct [options]
@@ -33,56 +33,71 @@ Options:
33
33
  It performs as follows:
34
34
 
35
35
  <details>
36
- <summary> > lsct -o cf lg </summary>
36
+ <summary> <code>> lsct -o at cf</code> </summary>
37
37
 
38
38
  ```text
39
- 在最近的 3 天内有 2 场比赛
40
-
39
+ 在最近的 3 天内有 3 场比赛
41
40
 
42
41
  比赛平台: Codeforces
42
+ 比赛名称: Educational Codeforces Round 128 (Rated for Div. 2)
43
43
  赛制: ICPC
44
44
  开始时间: 2022/5/13 22:35:00
45
45
  结束时间: 2022/5/14 00:35:00
46
46
  https://codeforces.com/contests/1680
47
47
 
48
-
49
- 比赛平台: Luogu
50
- 赛制: IOI
51
- 开始时间: 2022/5/14 14:00:00
52
- 结束时间: 2022/5/14 18:00:00
53
- https://www.luogu.com.cn/contest/68326
48
+ 比赛平台: Codeforces
49
+ 比赛名称: Codeforces Round #791 (Div. 2)
50
+ 赛制: Codeforces
51
+ 开始时间: 2022/5/14 17:35:00
52
+ 结束时间: 2022/5/14 19:35:00
53
+ https://codeforces.com/contests/1679
54
+
55
+ 比赛平台: AtCoder
56
+ 比赛名称: Ⓐ Panasonic Programming Contest 2022(AtCoder Beginner Contest 251)
57
+ 赛制: AtCoder
58
+ 开始时间: 2022/5/14 20:00:00
59
+ 结束时间: 2022/5/14 20:01:40
60
+ https://atcoder.jp/contests/abc251
54
61
  ```
55
62
 
56
63
  </details>
57
64
 
58
65
  <details>
59
- <summary> > lsct -o cf lg -L en </summary>
66
+ <summary> <code>> lsct -o lg -d 7 -L en</code> </summary>
60
67
 
61
68
  ```text
62
- 2 contests in the last 3 days
63
-
64
-
65
- OJ: Codeforces
66
- Rule: ICPC
67
- Start time: 2022/5/13 22:35:00
68
- End time: 2022/5/14 00:35:00
69
- https://codeforces.com/contests/1680
70
-
69
+ 2 contests in the last 7 days
71
70
 
72
71
  OJ: Luogu
72
+ Contest name: 【LGR-109】洛谷 5 月月赛 II & Windy Round 6
73
73
  Rule: IOI
74
74
  Start time: 2022/5/14 14:00:00
75
75
  End time: 2022/5/14 18:00:00
76
76
  https://www.luogu.com.cn/contest/68326
77
+
78
+ OJ: Luogu
79
+ Contest name: 「WHOI」Round 1
80
+ Rule: IOI
81
+ Start time: 2022/5/15 14:00:00
82
+ End time: 2022/5/15 18:00:00
83
+ https://www.luogu.com.cn/contest/67377
77
84
  ```
78
85
 
79
86
  </details>
80
87
 
81
88
  <details>
82
- <summary> > lsct -r -o cf lg </summary>
89
+ <summary> <code>> lsct -r -o cf nc --no-sort</code> </summary>
83
90
 
84
91
  ```bash
85
92
  [
93
+ {
94
+ ojName: 'Codeforces',
95
+ name: 'Codeforces Round #791 (Div. 2)',
96
+ rule: 'Codeforces',
97
+ startTime: 2022-05-14T09:35:00.000Z,
98
+ endTime: 2022-05-14T11:35:00.000Z,
99
+ url: 'https://codeforces.com/contests/1679'
100
+ },
86
101
  {
87
102
  ojName: 'Codeforces',
88
103
  name: 'Educational Codeforces Round 128 (Rated for Div. 2)',
@@ -92,12 +107,20 @@ https://www.luogu.com.cn/contest/68326
92
107
  url: 'https://codeforces.com/contests/1680'
93
108
  },
94
109
  {
95
- ojName: 'Luogu',
96
- name: '【LGR-109】洛谷 5 月月赛 II & Windy Round 6',
97
- rule: 'IOI',
98
- startTime: 2022-05-14T06:00:00.000Z,
110
+ ojName: 'NowCoder',
111
+ name: '牛客挑战赛60',
112
+ rule: 'ICPC',
113
+ startTime: 2022-05-13T11:00:00.000Z,
114
+ endTime: 2022-05-13T14:00:00.000Z,
115
+ url: 'https://ac.nowcoder.com/acm/contest/11200'
116
+ },
117
+ {
118
+ ojName: 'NowCoder',
119
+ name: '第十八届西南科技大学ACM程序设计竞赛(同步赛)',
120
+ rule: 'ICPC',
121
+ startTime: 2022-05-14T05:00:00.000Z,
99
122
  endTime: 2022-05-14T10:00:00.000Z,
100
- url: 'https://www.luogu.com.cn/contest/68326'
123
+ url: 'https://ac.nowcoder.com/acm/contest/33540'
101
124
  }
102
125
  ]
103
126
  ```
@@ -106,7 +129,7 @@ https://www.luogu.com.cn/contest/68326
106
129
 
107
130
  ### API
108
131
 
109
- If you want to call lscontests in your project to get a list of contests information, or if you need to add OJ support, then you can call the lscontests API like the following:
132
+ 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:
110
133
 
111
134
  #### Get contests information string
112
135
 
@@ -116,7 +139,7 @@ import { getContestInfo } from "lscontests";
116
139
  getContestInfo({ abbrList: ["cf", "lg"] }).then(console.log);
117
140
  ```
118
141
 
119
- The result of this code is the same as `lsct -o cf lg`.
142
+ This code gives the same result as `lsct -o cf lg`.
120
143
 
121
144
  #### Get contests information list
122
145
 
@@ -126,38 +149,69 @@ import { getContestList } from "lscontests";
126
149
  getContestList({ sort: false }).then(console.log);
127
150
  ```
128
151
 
129
- The result of this code is the same as `lsct -r --no-sort`.
152
+ This code gives the same result as `lsct -r --no-sort`.
130
153
 
131
154
  #### Add OJ support
132
155
 
133
156
  ```typescript
134
- import { addOJ, getContestList } from "lscontests";
157
+ import { addOJ, getContestInfo, getContestList } from "lscontests";
135
158
 
136
159
  addOJ("ts", {
137
160
  name: "testOJ", get: async () => [{
138
161
  ojName: "testOJ",
139
162
  name: "testContest",
140
163
  rule: "ICPC",
141
- startTime: new Date(Date.now() + 5 * 86400000),
142
- endTime: new Date(Date.now() + 6 * 86400000),
164
+ startTime: new Date(Date.now() + 1 * 86400000),
165
+ endTime: new Date(Date.now() + 2 * 86400000),
143
166
  url: "https://www.test.com"
144
167
  }]
145
168
  });
146
169
 
147
- getContestList({ abbrList: ["ts"], days: 7 }).then(console.log);
170
+ async function main() {
171
+ console.log(await getContestInfo({ abbrList: ["cf", "ts"], days: 1 }, "en"));
172
+ console.log();
173
+ console.log(await getContestList({ abbrList: ["cf", "ts"], days: 7 }));
174
+ }
175
+
176
+ main();
148
177
  ```
149
178
 
150
- The result of this code is as follows:
179
+ This code gives the following results:
180
+
181
+ ```text
182
+ 1 contests in the last 1 days
183
+
184
+ OJ: testOJ
185
+ Contest name: testContest
186
+ Rule: ICPC
187
+ Start time: 2022/5/12 22:54:43
188
+ End time: 2022/5/13 22:54:43
189
+ https://www.test.com
151
190
 
152
- ```bash
153
191
  [
154
192
  {
155
193
  ojName: 'testOJ',
156
194
  name: 'testContest',
157
195
  rule: 'ICPC',
158
- startTime: 2022-05-15T11:50:42.032Z,
159
- endTime: 2022-05-16T11:50:42.032Z,
196
+ startTime: 2022-05-12T14:54:46.240Z,
197
+ endTime: 2022-05-13T14:54:46.240Z,
160
198
  url: 'https://www.test.com'
199
+ },
200
+ {
201
+ ojName: 'Codeforces',
202
+ name: 'Educational Codeforces Round 128 (Rated for Div. 2)',
203
+ rule: 'ICPC',
204
+ startTime: 2022-05-13T14:35:00.000Z,
205
+ endTime: 2022-05-13T16:35:00.000Z,
206
+ url: 'https://codeforces.com/contests/1680'
207
+ },
208
+ {
209
+ ojName: 'Codeforces',
210
+ name: 'Codeforces Round #791 (Div. 2)',
211
+ rule: 'Codeforces',
212
+ startTime: 2022-05-14T09:35:00.000Z,
213
+ endTime: 2022-05-14T11:35:00.000Z,
214
+ url: 'https://codeforces.com/contests/1679'
161
215
  }
162
216
  ]
163
217
  ```
package/dist/index.js CHANGED
@@ -78,15 +78,17 @@ function getContestInfo(config, language = "zh-CN") {
78
78
  const info = [];
79
79
  const lang = yield Promise.resolve().then(() => __importStar(require(`./locale/${language}.json`)));
80
80
  info.push(format(lang.welcome, cfg.days.toString(), contests.length.toString()));
81
- for (const ct of contests) {
82
- info.push("\n");
83
- info.push(`${lang.ojName}: ${ct.ojName}`);
84
- info.push(`${lang.rule}: ${ct.rule}`);
85
- info.push(`${lang.startTime}: ${ct.startTime.toLocaleString()}`);
86
- info.push(`${lang.endTime}: ${ct.endTime.toLocaleString()}`);
87
- info.push(ct.url);
81
+ for (const contest of contests) {
82
+ const ct = [];
83
+ ct.push(`${lang.ojName}: ${contest.ojName}`);
84
+ ct.push(`${lang.name}: ${contest.name}`);
85
+ ct.push(`${lang.rule}: ${contest.rule}`);
86
+ ct.push(`${lang.startTime}: ${contest.startTime.toLocaleString()}`);
87
+ ct.push(`${lang.endTime}: ${contest.endTime.toLocaleString()}`);
88
+ ct.push(contest.url);
89
+ info.push(ct.join("\n"));
88
90
  }
89
- return info.join("\n");
91
+ return info.join("\n\n");
90
92
  });
91
93
  }
92
94
  exports.getContestInfo = getContestInfo;
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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lscontests",
3
- "version": "1.7.2",
3
+ "version": "1.7.3",
4
4
  "description": "A tool to get information about the contests on each OJ",
5
5
  "keywords": [
6
6
  "cli",