lscontests 2.4.0 → 2.5.2
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 +77 -108
- package/dist/cli.js +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/lib/oj/codeforces.js +48 -1
- package/dist/lib/oj/codeforces.js.map +1 -1
- package/dist/server.js +20 -7
- package/dist/server.js.map +1 -1
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -38,7 +38,7 @@ Usage: lsct [options]
|
|
|
38
38
|
|
|
39
39
|
Options:
|
|
40
40
|
-V, --version output the version number
|
|
41
|
-
-d, --days, <day> number of days to display, set to
|
|
41
|
+
-d, --days, <day> number of days to display, set to -1 to get all
|
|
42
42
|
contests infomation (default: "3")
|
|
43
43
|
-l, --list list all supported OJ and it's abbreviation
|
|
44
44
|
-s, --silent do not print log
|
|
@@ -56,29 +56,43 @@ Options:
|
|
|
56
56
|
It performs as follows:
|
|
57
57
|
|
|
58
58
|
<!-- block_cli begin -->
|
|
59
|
-
(*The following content was automatically generated using [semantic-release](https://github.com/semantic-release/semantic-release) on
|
|
59
|
+
(*The following content was automatically generated using [semantic-release](https://github.com/semantic-release/semantic-release) on Thu, 30 Jun 2022 09:00:29 GMT*)
|
|
60
60
|
|
|
61
61
|
<details>
|
|
62
62
|
<summary> <code>> lsct -L en</code> </summary>
|
|
63
63
|
|
|
64
64
|
```text
|
|
65
|
-
There are
|
|
65
|
+
There are no running contests on AtCoder,Codeforces,LeetCode,Luogu,NowCoder
|
|
66
|
+
|
|
67
|
+
There are 4 contests on NowCoder,AtCoder,LeetCode in the next 3 days
|
|
66
68
|
|
|
67
69
|
OJ: NowCoder
|
|
68
|
-
Contest name:
|
|
70
|
+
Contest name: 第 20 届上海大学程序设计联赛夏季赛(校外同步赛)
|
|
69
71
|
Rule: ICPC
|
|
70
|
-
Start time:
|
|
71
|
-
End time:
|
|
72
|
-
https://ac.nowcoder.com/acm/contest/
|
|
72
|
+
Start time: 7/2/2022, 05:00:00
|
|
73
|
+
End time: 7/2/2022, 08:30:00
|
|
74
|
+
https://ac.nowcoder.com/acm/contest/36652
|
|
73
75
|
|
|
74
|
-
|
|
76
|
+
OJ: AtCoder
|
|
77
|
+
Contest name: Ⓐ AtCoder Beginner Contest 258
|
|
78
|
+
Rule: AtCoder
|
|
79
|
+
Start time: 7/2/2022, 12:00:00
|
|
80
|
+
End time: 7/2/2022, 13:40:00
|
|
81
|
+
https://atcoder.jp/contests/abc258
|
|
75
82
|
|
|
76
|
-
OJ:
|
|
77
|
-
Contest name:
|
|
78
|
-
Rule:
|
|
79
|
-
Start time:
|
|
80
|
-
End time:
|
|
81
|
-
https://
|
|
83
|
+
OJ: LeetCode
|
|
84
|
+
Contest name: Weekly Contest 300
|
|
85
|
+
Rule: AtCoder
|
|
86
|
+
Start time: 7/3/2022, 02:30:00
|
|
87
|
+
End time: 7/3/2022, 04:00:00
|
|
88
|
+
https://leetcode.com/contest/weekly-contest-300
|
|
89
|
+
|
|
90
|
+
OJ: AtCoder
|
|
91
|
+
Contest name: Ⓗ AtCoder Heuristic Contest 012
|
|
92
|
+
Rule: AtCoder
|
|
93
|
+
Start time: 7/3/2022, 06:00:00
|
|
94
|
+
End time: 7/3/2022, 10:00:00
|
|
95
|
+
https://atcoder.jp/contests/ahc012
|
|
82
96
|
```
|
|
83
97
|
|
|
84
98
|
</details>
|
|
@@ -89,49 +103,28 @@ https://codeforces.com/contests/1692
|
|
|
89
103
|
```text
|
|
90
104
|
There are no running contests on AtCoder,Codeforces
|
|
91
105
|
|
|
92
|
-
There are
|
|
106
|
+
There are 3 contests on AtCoder,Codeforces in the next 7 days
|
|
93
107
|
|
|
94
|
-
OJ:
|
|
95
|
-
Contest name:
|
|
96
|
-
Rule:
|
|
97
|
-
Start time:
|
|
98
|
-
End time:
|
|
99
|
-
https://
|
|
100
|
-
|
|
101
|
-
OJ: Codeforces
|
|
102
|
-
Contest name: Codeforces Round #800 (Div. 1)
|
|
103
|
-
Rule: Codeforces
|
|
104
|
-
Start time: 6/16/2022, 14:35:00
|
|
105
|
-
End time: 6/16/2022, 16:35:00
|
|
106
|
-
https://codeforces.com/contests/1693
|
|
107
|
-
|
|
108
|
-
OJ: Codeforces
|
|
109
|
-
Contest name: Codeforces Round #800 (Div. 2)
|
|
110
|
-
Rule: Codeforces
|
|
111
|
-
Start time: 6/16/2022, 14:35:00
|
|
112
|
-
End time: 6/16/2022, 16:35:00
|
|
113
|
-
https://codeforces.com/contests/1694
|
|
108
|
+
OJ: AtCoder
|
|
109
|
+
Contest name: Ⓐ AtCoder Beginner Contest 258
|
|
110
|
+
Rule: AtCoder
|
|
111
|
+
Start time: 7/2/2022, 12:00:00
|
|
112
|
+
End time: 7/2/2022, 13:40:00
|
|
113
|
+
https://atcoder.jp/contests/abc258
|
|
114
114
|
|
|
115
115
|
OJ: AtCoder
|
|
116
|
-
Contest name:
|
|
116
|
+
Contest name: Ⓗ AtCoder Heuristic Contest 012
|
|
117
117
|
Rule: AtCoder
|
|
118
|
-
Start time:
|
|
119
|
-
End time:
|
|
120
|
-
https://atcoder.jp/contests/
|
|
118
|
+
Start time: 7/3/2022, 06:00:00
|
|
119
|
+
End time: 7/3/2022, 10:00:00
|
|
120
|
+
https://atcoder.jp/contests/ahc012
|
|
121
121
|
|
|
122
122
|
OJ: Codeforces
|
|
123
|
-
Contest name: Codeforces Round #
|
|
123
|
+
Contest name: Codeforces Round #804 (Div. 2)
|
|
124
124
|
Rule: Codeforces
|
|
125
|
-
Start time:
|
|
126
|
-
End time:
|
|
127
|
-
https://codeforces.com/contests/
|
|
128
|
-
|
|
129
|
-
OJ: AtCoder
|
|
130
|
-
Contest name: Ⓐ AtCoder Regular Contest 142
|
|
131
|
-
Rule: AtCoder
|
|
132
|
-
Start time: 6/19/2022, 12:00:00
|
|
133
|
-
End time: 6/19/2022, 14:00:00
|
|
134
|
-
https://atcoder.jp/contests/arc142
|
|
125
|
+
Start time: 7/4/2022, 14:35:00
|
|
126
|
+
End time: 7/4/2022, 16:35:00
|
|
127
|
+
https://codeforces.com/contests/1699
|
|
135
128
|
```
|
|
136
129
|
|
|
137
130
|
</details>
|
|
@@ -145,91 +138,67 @@ https://atcoder.jp/contests/arc142
|
|
|
145
138
|
"upcoming": [
|
|
146
139
|
{
|
|
147
140
|
"ojName": "AtCoder",
|
|
148
|
-
"name": "Ⓐ
|
|
141
|
+
"name": "Ⓐ AtCoder Beginner Contest 258",
|
|
149
142
|
"rule": "AtCoder",
|
|
150
|
-
"startTime": "2022-
|
|
151
|
-
"endTime": "2022-
|
|
152
|
-
"url": "https://atcoder.jp/contests/
|
|
143
|
+
"startTime": "2022-07-02T12:00:00.000Z",
|
|
144
|
+
"endTime": "2022-07-02T13:40:00.000Z",
|
|
145
|
+
"url": "https://atcoder.jp/contests/abc258"
|
|
153
146
|
},
|
|
154
147
|
{
|
|
155
148
|
"ojName": "AtCoder",
|
|
156
|
-
"name": "
|
|
149
|
+
"name": "Ⓗ AtCoder Heuristic Contest 012",
|
|
157
150
|
"rule": "AtCoder",
|
|
158
|
-
"startTime": "2022-
|
|
159
|
-
"endTime": "2022-
|
|
160
|
-
"url": "https://atcoder.jp/contests/
|
|
151
|
+
"startTime": "2022-07-03T06:00:00.000Z",
|
|
152
|
+
"endTime": "2022-07-03T10:00:00.000Z",
|
|
153
|
+
"url": "https://atcoder.jp/contests/ahc012"
|
|
161
154
|
},
|
|
162
155
|
{
|
|
163
156
|
"ojName": "AtCoder",
|
|
164
|
-
"name": "Ⓐ
|
|
157
|
+
"name": "Ⓐ AtCoder Beginner Contest 259",
|
|
165
158
|
"rule": "AtCoder",
|
|
166
|
-
"startTime": "2022-
|
|
167
|
-
"endTime": "2022-
|
|
168
|
-
"url": "https://atcoder.jp/contests/
|
|
159
|
+
"startTime": "2022-07-09T12:00:00.000Z",
|
|
160
|
+
"endTime": "2022-07-09T13:40:00.000Z",
|
|
161
|
+
"url": "https://atcoder.jp/contests/abc259"
|
|
169
162
|
},
|
|
170
163
|
{
|
|
171
164
|
"ojName": "AtCoder",
|
|
172
|
-
"name": "Ⓐ AtCoder Regular Contest
|
|
165
|
+
"name": "Ⓐ AtCoder Regular Contest 144",
|
|
173
166
|
"rule": "AtCoder",
|
|
174
|
-
"startTime": "2022-
|
|
175
|
-
"endTime": "2022-
|
|
176
|
-
"url": "https://atcoder.jp/contests/
|
|
167
|
+
"startTime": "2022-07-16T12:00:00.000Z",
|
|
168
|
+
"endTime": "2022-07-16T14:00:00.000Z",
|
|
169
|
+
"url": "https://atcoder.jp/contests/arc144"
|
|
177
170
|
},
|
|
178
171
|
{
|
|
179
172
|
"ojName": "AtCoder",
|
|
180
|
-
"name": "Ⓐ AtCoder Beginner Contest
|
|
173
|
+
"name": "Ⓐ AtCoder Beginner Contest 260",
|
|
181
174
|
"rule": "AtCoder",
|
|
182
|
-
"startTime": "2022-07-
|
|
183
|
-
"endTime": "2022-07-
|
|
184
|
-
"url": "https://atcoder.jp/contests/
|
|
175
|
+
"startTime": "2022-07-17T12:00:00.000Z",
|
|
176
|
+
"endTime": "2022-07-17T13:40:00.000Z",
|
|
177
|
+
"url": "https://atcoder.jp/contests/abc260"
|
|
185
178
|
},
|
|
186
179
|
{
|
|
187
180
|
"ojName": "AtCoder",
|
|
188
|
-
"name": "
|
|
181
|
+
"name": "Ⓐ AtCoder Regular Contest 145",
|
|
189
182
|
"rule": "AtCoder",
|
|
190
|
-
"startTime": "2022-07-
|
|
191
|
-
"endTime": "2022-07-
|
|
192
|
-
"url": "https://atcoder.jp/contests/
|
|
193
|
-
},
|
|
194
|
-
{
|
|
195
|
-
"ojName": "Codeforces",
|
|
196
|
-
"name": "Codeforces Round #799 (Div. 4)",
|
|
197
|
-
"rule": "ICPC",
|
|
198
|
-
"startTime": "2022-06-14T14:35:00.000Z",
|
|
199
|
-
"endTime": "2022-06-14T16:50:00.000Z",
|
|
200
|
-
"url": "https://codeforces.com/contests/1692"
|
|
183
|
+
"startTime": "2022-07-30T12:00:00.000Z",
|
|
184
|
+
"endTime": "2022-07-30T14:00:00.000Z",
|
|
185
|
+
"url": "https://atcoder.jp/contests/arc145"
|
|
201
186
|
},
|
|
202
187
|
{
|
|
203
|
-
"ojName": "
|
|
204
|
-
"name": "
|
|
205
|
-
"rule": "
|
|
206
|
-
"startTime": "2022-
|
|
207
|
-
"endTime": "2022-
|
|
208
|
-
"url": "https://
|
|
209
|
-
},
|
|
210
|
-
{
|
|
211
|
-
"ojName": "Codeforces",
|
|
212
|
-
"name": "Codeforces Round #800 (Div. 2)",
|
|
213
|
-
"rule": "Codeforces",
|
|
214
|
-
"startTime": "2022-06-16T14:35:00.000Z",
|
|
215
|
-
"endTime": "2022-06-16T16:35:00.000Z",
|
|
216
|
-
"url": "https://codeforces.com/contests/1694"
|
|
217
|
-
},
|
|
218
|
-
{
|
|
219
|
-
"ojName": "Codeforces",
|
|
220
|
-
"name": "Codeforces Round #TBA (Div. 2)",
|
|
221
|
-
"rule": "Codeforces",
|
|
222
|
-
"startTime": "2022-06-18T14:35:00.000Z",
|
|
223
|
-
"endTime": "2022-06-18T16:35:00.000Z",
|
|
224
|
-
"url": "https://codeforces.com/contests/1695"
|
|
188
|
+
"ojName": "AtCoder",
|
|
189
|
+
"name": "Ⓐ AtCoder Grand Contest 058",
|
|
190
|
+
"rule": "AtCoder",
|
|
191
|
+
"startTime": "2022-08-14T12:00:00.000Z",
|
|
192
|
+
"endTime": "2022-08-14T15:00:00.000Z",
|
|
193
|
+
"url": "https://atcoder.jp/contests/agc058"
|
|
225
194
|
},
|
|
226
195
|
{
|
|
227
196
|
"ojName": "Codeforces",
|
|
228
|
-
"name": "Codeforces
|
|
197
|
+
"name": "Codeforces Round #804 (Div. 2)",
|
|
229
198
|
"rule": "Codeforces",
|
|
230
|
-
"startTime": "2022-
|
|
231
|
-
"endTime": "2022-
|
|
232
|
-
"url": "https://codeforces.com/contests/
|
|
199
|
+
"startTime": "2022-07-04T14:35:00.000Z",
|
|
200
|
+
"endTime": "2022-07-04T16:35:00.000Z",
|
|
201
|
+
"url": "https://codeforces.com/contests/1699"
|
|
233
202
|
}
|
|
234
203
|
]
|
|
235
204
|
}
|
package/dist/cli.js
CHANGED
|
@@ -24,7 +24,7 @@ const locale_1 = require("./locale");
|
|
|
24
24
|
function initCmd() {
|
|
25
25
|
return new commander_1.default.Command()
|
|
26
26
|
.version(package_json_1.version)
|
|
27
|
-
.option("-d, --days, <day>", "number of days to display, set to
|
|
27
|
+
.option("-d, --days, <day>", "number of days to display, set to -1 to get all contests infomation", "3")
|
|
28
28
|
.option("-l, --list", "list all supported OJ and it's abbreviation")
|
|
29
29
|
.option("-s, --silent", "do not print log")
|
|
30
30
|
.addOption(new commander_1.default.Option("-o, --oj <ojs...>", "OJs to display").choices(Object.keys(oj_1.alloj)))
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,0DAAkC;AAClC,oDAAuB;AACvB,sDAA8B;AAC9B,yCAA2B;AAC3B,kDAA+C;AAC/C,iCAAiC;AACjC,qCAAoC;AAEpC,SAAS,OAAO;IAEZ,OAAO,IAAI,mBAAS,CAAC,OAAO,EAAE;SACzB,OAAO,CAAC,sBAAO,CAAC;SAChB,MAAM,CAAC,mBAAmB,EAAE,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,52 @@ const ruleRecord = {
|
|
|
19
19
|
CF: "Codeforces",
|
|
20
20
|
ICPC: "ICPC"
|
|
21
21
|
};
|
|
22
|
+
function mergeDuplicate(data) {
|
|
23
|
+
const testRe = /Codeforces Round #(\d{2,4}) \(Div. (\d)\)/;
|
|
24
|
+
const tmpMap = new Map();
|
|
25
|
+
const rets = [];
|
|
26
|
+
data.forEach((item) => {
|
|
27
|
+
if (testRe.test(item.name)) {
|
|
28
|
+
const reRet = item.name.match(testRe);
|
|
29
|
+
if (reRet !== null) {
|
|
30
|
+
const round = parseInt(reRet[1]);
|
|
31
|
+
const div = parseInt(reRet[2]);
|
|
32
|
+
const i = tmpMap.get(round);
|
|
33
|
+
if (i !== undefined) {
|
|
34
|
+
i.push([div, item]);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
tmpMap.set(round, [[div, item]]);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
throw new Error("MergeDuplicate: regex failed");
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
rets.push(item);
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
tmpMap.forEach((v, k) => {
|
|
49
|
+
if (v.length === 1) {
|
|
50
|
+
rets.push(v[0][1]);
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
const divs = v.map(([div]) => div).sort().join("/");
|
|
54
|
+
const urls = v.map(([, item]) => item.url).join("\n");
|
|
55
|
+
const item = {
|
|
56
|
+
name: `Codeforces Round #${k} (Div. ${divs})`,
|
|
57
|
+
ojName: exports.cf.name,
|
|
58
|
+
rule: ruleRecord.CF,
|
|
59
|
+
startTime: v[0][1].startTime,
|
|
60
|
+
endTime: v[0][1].endTime,
|
|
61
|
+
url: urls
|
|
62
|
+
};
|
|
63
|
+
rets.push(item);
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
return rets;
|
|
67
|
+
}
|
|
22
68
|
exports.cf = {
|
|
23
69
|
name: "Codeforces",
|
|
24
70
|
get() {
|
|
@@ -29,7 +75,7 @@ exports.cf = {
|
|
|
29
75
|
throw new Error($.text());
|
|
30
76
|
}
|
|
31
77
|
const resList = response.data.result;
|
|
32
|
-
|
|
78
|
+
const ret = resList.map((res) => {
|
|
33
79
|
return {
|
|
34
80
|
ojName: exports.cf.name,
|
|
35
81
|
name: res.name,
|
|
@@ -39,6 +85,7 @@ exports.cf = {
|
|
|
39
85
|
url: `https://codeforces.com/contests/${res.id}`
|
|
40
86
|
};
|
|
41
87
|
}).filter(contest => contest.endTime >= new Date());
|
|
88
|
+
return mergeDuplicate(ret);
|
|
42
89
|
});
|
|
43
90
|
}
|
|
44
91
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codeforces.js","sourceRoot":"","sources":["../../../src/lib/oj/codeforces.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,kDAA0B;AAC1B,qCAA+B;AAe/B,MAAM,UAAU,GAAyB;IACrC,EAAE,EAAE,YAAY;IAChB,IAAI,EAAE,MAAM;CACf,CAAC;
|
|
1
|
+
{"version":3,"file":"codeforces.js","sourceRoot":"","sources":["../../../src/lib/oj/codeforces.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,kDAA0B;AAC1B,qCAA+B;AAe/B,MAAM,UAAU,GAAyB;IACrC,EAAE,EAAE,YAAY;IAChB,IAAI,EAAE,MAAM;CACf,CAAC;AAEF,SAAS,cAAc,CAAC,IAAe;IAEnC,MAAM,MAAM,GAAG,2CAA2C,CAAC;IAC3D,MAAM,MAAM,GAAqC,IAAI,GAAG,EAAE,CAAC;IAC3D,MAAM,IAAI,GAAc,EAAE,CAAC;IAC3B,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAElB,IAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EACzB;YACI,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACtC,IAAG,KAAK,KAAK,IAAI,EACjB;gBACI,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAE/B,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAC5B,IAAG,CAAC,KAAK,SAAS,EAClB;oBACI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;iBACvB;qBAED;oBACI,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;iBACpC;aACJ;iBAED;gBACI,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;aACnD;SACJ;aAED;YACI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACnB;IACL,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAEpB,IAAG,CAAC,CAAC,MAAM,KAAK,CAAC,EACjB;YACI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACtB;aAED;YACI,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACpD,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtD,MAAM,IAAI,GAAY;gBAClB,IAAI,EAAE,qBAAqB,CAAC,UAAU,IAAI,GAAG;gBAC7C,MAAM,EAAE,UAAE,CAAC,IAAI;gBACf,IAAI,EAAE,UAAU,CAAC,EAAE;gBACnB,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;gBAC5B,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO;gBACxB,GAAG,EAAE,IAAI;aACZ,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACnB;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC;AAChB,CAAC;AAEY,QAAA,EAAE,GAAO;IAClB,IAAI,EAAE,YAAY;IACZ,GAAG;;YAEL,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;YAC5E,IAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,YAAY,MAAM,CAAC,EACrC;gBACI,MAAM,CAAC,GAAG,IAAA,cAAI,EAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAC9B,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;aAC7B;YACD,MAAM,OAAO,GAAa,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;YAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAW,EAAE;gBAErC,OAAO;oBACH,MAAM,EAAE,UAAE,CAAC,IAAI;oBACf,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;oBAC1B,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,gBAAgB,GAAG,IAAI,CAAC;oBAChD,OAAO,EAAE,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,gBAAgB,GAAG,GAAG,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC;oBACtE,GAAG,EAAE,mCAAmC,GAAG,CAAC,EAAE,EAAE;iBACnD,CAAC;YACN,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;YACpD,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC;QAC/B,CAAC;KAAA;CACJ,CAAC"}
|
package/dist/server.js
CHANGED
|
@@ -24,6 +24,7 @@ const commander_1 = require("commander");
|
|
|
24
24
|
const package_json_1 = require("../package.json");
|
|
25
25
|
const lodash_1 = __importDefault(require("lodash"));
|
|
26
26
|
const fs_1 = require("fs");
|
|
27
|
+
const await_lock_1 = __importDefault(require("await-lock"));
|
|
27
28
|
const app = (0, express_1.default)();
|
|
28
29
|
function assertType(obj) {
|
|
29
30
|
}
|
|
@@ -77,6 +78,7 @@ const contestsCache = {
|
|
|
77
78
|
contests: [],
|
|
78
79
|
lastUpdate: 0
|
|
79
80
|
};
|
|
81
|
+
const lock = new await_lock_1.default();
|
|
80
82
|
function icsPostProcess(value) {
|
|
81
83
|
return value
|
|
82
84
|
.replace("X-PUBLISHED-TTL:PT1H", "X-PUBLISHED-TTL:PT1H\r\nREFRESH-INTERVAL:PT1H")
|
|
@@ -93,14 +95,25 @@ function icsPostProcess(value) {
|
|
|
93
95
|
"END:STANDARD\r\n" +
|
|
94
96
|
"END:VTIMEZONE");
|
|
95
97
|
}
|
|
96
|
-
function
|
|
98
|
+
function checkCache() {
|
|
97
99
|
return __awaiter(this, void 0, void 0, function* () {
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
contestsCache.
|
|
101
|
-
|
|
102
|
-
|
|
100
|
+
yield lock.acquireAsync();
|
|
101
|
+
try {
|
|
102
|
+
if (contestsCache.lastUpdate < Date.now() - 1000 * 60 * 5) {
|
|
103
|
+
const c = yield new _1.default({ days: -1 }).getContests();
|
|
104
|
+
contestsCache.contests = lodash_1.default.uniqBy(contestsCache.contests.concat(c.running.concat(c.upcoming)), JSON.stringify);
|
|
105
|
+
contestsCache.contests = contestsCache.contests.filter(c => c.endTime.getTime() - c.startTime.getTime() < 1000 * 60 * 60 * 24 * 2); // ignore too long contests
|
|
106
|
+
contestsCache.lastUpdate = Date.now();
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
finally {
|
|
110
|
+
lock.release();
|
|
103
111
|
}
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
function getIcs(lang, ojs) {
|
|
115
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
116
|
+
yield checkCache();
|
|
104
117
|
const contests = contestsCache.contests.filter(c => ojs.some(oj => c.ojName === oj_1.alloj[oj].name));
|
|
105
118
|
const langDict = yield (0, locale_1.getLangDict)(lang);
|
|
106
119
|
const events = contests.map((c) => {
|
|
@@ -114,10 +127,10 @@ function getIcs(lang, ojs) {
|
|
|
114
127
|
start: (0, ics_1.convertTimestampToArray)(c.startTime.getTime(), "local"),
|
|
115
128
|
startOutputType: "local",
|
|
116
129
|
end: (0, ics_1.convertTimestampToArray)(c.endTime.getTime(), "local"),
|
|
130
|
+
endOutputType: "local",
|
|
117
131
|
calName: "算法竞赛",
|
|
118
132
|
productId: "-//StableAgOH//LSCT//CN",
|
|
119
133
|
title: c.name,
|
|
120
|
-
url: c.url,
|
|
121
134
|
location: c.ojName,
|
|
122
135
|
categories: [c.rule],
|
|
123
136
|
uid: `${(0, crypto_1.randomUUID)()}@LSCT`,
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,sDAA8B;AAC9B,yCAAwC;AACxC,iCAAiC;AACjC,qCAAuC;AACvC,6BAA6E;AAC7E,kDAA0B;AAC1B,mCAAoC;AACpC,yCAAoC;AACpC,kDAA+C;AAC/C,oDAAuB;AACvB,2BAAkC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lscontests",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.5.2",
|
|
4
4
|
"description": "A tool to get information about the contests on each OJ",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cli",
|
|
@@ -35,6 +35,7 @@
|
|
|
35
35
|
"start-s": "tsx src/server.ts"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
|
+
"await-lock": "^2.2.2",
|
|
38
39
|
"axios": "^0.27.2",
|
|
39
40
|
"axios-retry": "^3.2.5",
|
|
40
41
|
"cheerio": "^1.0.0-rc.11",
|
|
@@ -48,7 +49,7 @@
|
|
|
48
49
|
"devDependencies": {
|
|
49
50
|
"@types/express": "^4.17.13",
|
|
50
51
|
"@types/lodash": "^4.14.182",
|
|
51
|
-
"@types/node": "^
|
|
52
|
+
"@types/node": "^18.0.0",
|
|
52
53
|
"@types/pangu": "^3.3.0",
|
|
53
54
|
"@typescript-eslint/eslint-plugin": "^5.27.1",
|
|
54
55
|
"@typescript-eslint/parser": "^5.27.1",
|