lscontests 2.1.5 → 2.2.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 +78 -44
- package/dist/server.d.ts +1 -0
- package/dist/server.html +180 -0
- package/dist/server.js +5 -1
- package/dist/server.js.map +1 -1
- package/package.json +14 -11
package/README.md
CHANGED
@@ -55,7 +55,7 @@ Options:
|
|
55
55
|
It performs as follows:
|
56
56
|
|
57
57
|
<!-- block_cli begin -->
|
58
|
-
(*The following content was automatically generated using [semantic-release](https://github.com/semantic-release/semantic-release) on
|
58
|
+
(*The following content was automatically generated using [semantic-release](https://github.com/semantic-release/semantic-release) on Thu, 26 May 2022 07:14:28 GMT*)
|
59
59
|
|
60
60
|
<details>
|
61
61
|
<summary> <code>> lsct -L en</code> </summary>
|
@@ -70,21 +70,7 @@ Start time: 5/13/2022, 06:00:00
|
|
70
70
|
End time: 5/30/2022, 08:00:00
|
71
71
|
https://ac.nowcoder.com/acm/contest/34649
|
72
72
|
|
73
|
-
There are 7 contests on
|
74
|
-
|
75
|
-
OJ: Codeforces
|
76
|
-
Contest name: Codeforces Round #794 (Div. 1)
|
77
|
-
Rule: Codeforces
|
78
|
-
Start time: 5/25/2022, 17:35:00
|
79
|
-
End time: 5/25/2022, 19:50:00
|
80
|
-
https://codeforces.com/contests/1685
|
81
|
-
|
82
|
-
OJ: Codeforces
|
83
|
-
Contest name: Codeforces Round #794 (Div. 2)
|
84
|
-
Rule: Codeforces
|
85
|
-
Start time: 5/25/2022, 17:35:00
|
86
|
-
End time: 5/25/2022, 19:50:00
|
87
|
-
https://codeforces.com/contests/1686
|
73
|
+
There are 7 contests on NowCoder,AtCoder,LeetCode in the next 3 days
|
88
74
|
|
89
75
|
OJ: NowCoder
|
90
76
|
Contest name: 牛客练习赛 99
|
@@ -120,6 +106,20 @@ Rule: AtCoder
|
|
120
106
|
Start time: 5/28/2022, 12:00:00
|
121
107
|
End time: 5/28/2022, 13:40:00
|
122
108
|
https://atcoder.jp/contests/abc253
|
109
|
+
|
110
|
+
OJ: LeetCode
|
111
|
+
Contest name: Biweekly Contest 79
|
112
|
+
Rule: AtCoder
|
113
|
+
Start time: 5/28/2022, 14:30:00
|
114
|
+
End time: 5/28/2022, 16:00:00
|
115
|
+
https://leetcode.com/contest/biweekly-contest-79
|
116
|
+
|
117
|
+
OJ: LeetCode
|
118
|
+
Contest name: Weekly Contest 295
|
119
|
+
Rule: AtCoder
|
120
|
+
Start time: 5/29/2022, 02:30:00
|
121
|
+
End time: 5/29/2022, 04:00:00
|
122
|
+
https://leetcode.com/contest/weekly-contest-295
|
123
123
|
```
|
124
124
|
|
125
125
|
</details>
|
@@ -130,21 +130,7 @@ https://atcoder.jp/contests/abc253
|
|
130
130
|
```text
|
131
131
|
No running contests
|
132
132
|
|
133
|
-
There are
|
134
|
-
|
135
|
-
OJ: Codeforces
|
136
|
-
Contest name: Codeforces Round #794 (Div. 1)
|
137
|
-
Rule: Codeforces
|
138
|
-
Start time: 5/25/2022, 17:35:00
|
139
|
-
End time: 5/25/2022, 19:50:00
|
140
|
-
https://codeforces.com/contests/1685
|
141
|
-
|
142
|
-
OJ: Codeforces
|
143
|
-
Contest name: Codeforces Round #794 (Div. 2)
|
144
|
-
Rule: Codeforces
|
145
|
-
Start time: 5/25/2022, 17:35:00
|
146
|
-
End time: 5/25/2022, 19:50:00
|
147
|
-
https://codeforces.com/contests/1686
|
133
|
+
There are 4 contests on AtCoder,Codeforces in the next 7 days
|
148
134
|
|
149
135
|
OJ: AtCoder
|
150
136
|
Contest name: Ⓗ AtCoder Heuristic Contest 011
|
@@ -178,7 +164,7 @@ https://codeforces.com/contests/1691
|
|
178
164
|
</details>
|
179
165
|
|
180
166
|
<details>
|
181
|
-
<summary> <code>> lsct -o at cf -d
|
167
|
+
<summary> <code>> lsct -o at cf -d -1 -r --no-sort</code> </summary>
|
182
168
|
|
183
169
|
```json
|
184
170
|
{
|
@@ -209,20 +195,36 @@ https://codeforces.com/contests/1691
|
|
209
195
|
"url": "https://atcoder.jp/contests/arc141"
|
210
196
|
},
|
211
197
|
{
|
212
|
-
"ojName": "
|
213
|
-
"name": "
|
214
|
-
"rule": "
|
215
|
-
"startTime": "2022-
|
216
|
-
"endTime": "2022-
|
217
|
-
"url": "https://
|
198
|
+
"ojName": "AtCoder",
|
199
|
+
"name": "Ⓐ AtCoder Beginner Contest 254",
|
200
|
+
"rule": "AtCoder",
|
201
|
+
"startTime": "2022-06-04T12:00:00.000Z",
|
202
|
+
"endTime": "2022-06-04T13:40:00.000Z",
|
203
|
+
"url": "https://atcoder.jp/contests/abc254"
|
218
204
|
},
|
219
205
|
{
|
220
|
-
"ojName": "
|
221
|
-
"name": "
|
222
|
-
"rule": "
|
223
|
-
"startTime": "2022-
|
224
|
-
"endTime": "2022-
|
225
|
-
"url": "https://
|
206
|
+
"ojName": "AtCoder",
|
207
|
+
"name": "Ⓐ Aising Programming Contest 2022(AtCoder Beginner Contest 255)",
|
208
|
+
"rule": "AtCoder",
|
209
|
+
"startTime": "2022-06-11T12:00:00.000Z",
|
210
|
+
"endTime": "2022-06-11T13:40:00.000Z",
|
211
|
+
"url": "https://atcoder.jp/contests/abc255"
|
212
|
+
},
|
213
|
+
{
|
214
|
+
"ojName": "AtCoder",
|
215
|
+
"name": "Ⓐ AtCoder Regular Contest 142",
|
216
|
+
"rule": "AtCoder",
|
217
|
+
"startTime": "2022-06-19T12:00:00.000Z",
|
218
|
+
"endTime": "2022-06-19T14:00:00.000Z",
|
219
|
+
"url": "https://atcoder.jp/contests/arc142"
|
220
|
+
},
|
221
|
+
{
|
222
|
+
"ojName": "AtCoder",
|
223
|
+
"name": "Ⓐ AtCoder Regular Contest 143",
|
224
|
+
"rule": "AtCoder",
|
225
|
+
"startTime": "2022-06-26T12:00:00.000Z",
|
226
|
+
"endTime": "2022-06-26T14:00:00.000Z",
|
227
|
+
"url": "https://atcoder.jp/contests/arc143"
|
226
228
|
},
|
227
229
|
{
|
228
230
|
"ojName": "Codeforces",
|
@@ -231,6 +233,38 @@ https://codeforces.com/contests/1691
|
|
231
233
|
"startTime": "2022-05-31T14:35:00.000Z",
|
232
234
|
"endTime": "2022-05-31T16:35:00.000Z",
|
233
235
|
"url": "https://codeforces.com/contests/1691"
|
236
|
+
},
|
237
|
+
{
|
238
|
+
"ojName": "Codeforces",
|
239
|
+
"name": "Codeforces Round #796 (Div. 1)",
|
240
|
+
"rule": "Codeforces",
|
241
|
+
"startTime": "2022-06-03T14:35:00.000Z",
|
242
|
+
"endTime": "2022-06-03T16:35:00.000Z",
|
243
|
+
"url": "https://codeforces.com/contests/1687"
|
244
|
+
},
|
245
|
+
{
|
246
|
+
"ojName": "Codeforces",
|
247
|
+
"name": "Codeforces Round #796 (Div. 2)",
|
248
|
+
"rule": "Codeforces",
|
249
|
+
"startTime": "2022-06-03T14:35:00.000Z",
|
250
|
+
"endTime": "2022-06-03T16:35:00.000Z",
|
251
|
+
"url": "https://codeforces.com/contests/1688"
|
252
|
+
},
|
253
|
+
{
|
254
|
+
"ojName": "Codeforces",
|
255
|
+
"name": "Codeforces Round #797 (Div. 3)",
|
256
|
+
"rule": "ICPC",
|
257
|
+
"startTime": "2022-06-07T14:35:00.000Z",
|
258
|
+
"endTime": "2022-06-07T16:50:00.000Z",
|
259
|
+
"url": "https://codeforces.com/contests/1690"
|
260
|
+
},
|
261
|
+
{
|
262
|
+
"ojName": "Codeforces",
|
263
|
+
"name": "Codeforces Round #798 (Div. 2)",
|
264
|
+
"rule": "Codeforces",
|
265
|
+
"startTime": "2022-06-10T16:35:00.000Z",
|
266
|
+
"endTime": "2022-06-10T18:35:00.000Z",
|
267
|
+
"url": "https://codeforces.com/contests/1689"
|
234
268
|
}
|
235
269
|
]
|
236
270
|
}
|
package/dist/server.d.ts
CHANGED
package/dist/server.html
ADDED
@@ -0,0 +1,180 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html lang="zh">
|
3
|
+
<head>
|
4
|
+
<meta charset="UTF-8">
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
6
|
+
<link
|
7
|
+
href="https://fonts.loli.net/css?family=Roboto:300,400,500,700&display=swap"
|
8
|
+
rel="stylesheet"
|
9
|
+
/>
|
10
|
+
<link
|
11
|
+
href="https://cdnjs.loli.net/ajax/libs/mdb-ui-kit/4.1.0/mdb.min.css"
|
12
|
+
rel="stylesheet"
|
13
|
+
/>
|
14
|
+
<title>LSCT</title>
|
15
|
+
<style>
|
16
|
+
html, body {
|
17
|
+
height: 100%;
|
18
|
+
}
|
19
|
+
|
20
|
+
#content {
|
21
|
+
height: 100%;
|
22
|
+
display: flex;
|
23
|
+
flex-direction: column;
|
24
|
+
justify-content: center;
|
25
|
+
align-items: center;
|
26
|
+
}
|
27
|
+
|
28
|
+
.container {
|
29
|
+
width: 100%;
|
30
|
+
height: 100%;
|
31
|
+
}
|
32
|
+
|
33
|
+
main {
|
34
|
+
height: 100%;
|
35
|
+
}
|
36
|
+
</style>
|
37
|
+
</head>
|
38
|
+
<body>
|
39
|
+
<main>
|
40
|
+
<div class="container">
|
41
|
+
<div id="content" class="row">
|
42
|
+
<div id="selects" class="col-md-8 gx-5 d-inline-flex">
|
43
|
+
<div class="flex-fill">
|
44
|
+
<h2>目标 OJ</h2>
|
45
|
+
<div class="form-check">
|
46
|
+
<input class="form-check-input" type="checkbox" value="" id="cf" checked/>
|
47
|
+
<label class="form-check-label" for="cf">Codeforces</label>
|
48
|
+
</div>
|
49
|
+
<div class="form-check">
|
50
|
+
<input class="form-check-input" type="checkbox" value="" id="at" checked/>
|
51
|
+
<label class="form-check-label" for="at">AtCoder</label>
|
52
|
+
</div>
|
53
|
+
<div class="form-check">
|
54
|
+
<input class="form-check-input" type="checkbox" value="" id="lc" checked/>
|
55
|
+
<label class="form-check-label" for="lc">Leetcode</label>
|
56
|
+
</div>
|
57
|
+
<div class="form-check">
|
58
|
+
<input class="form-check-input" type="checkbox" value="" id="lg" checked/>
|
59
|
+
<label class="form-check-label" for="lg">洛谷</label>
|
60
|
+
</div>
|
61
|
+
<div class="form-check">
|
62
|
+
<input class="form-check-input" type="checkbox" value="" id="nc" checked/>
|
63
|
+
<label class="form-check-label" for="nc">牛客</label>
|
64
|
+
</div>
|
65
|
+
</div>
|
66
|
+
<div class="flex-fill">
|
67
|
+
<h2>语言</h2>
|
68
|
+
<div class="form-check">
|
69
|
+
<input class="form-check-input" type="radio" name="lang" id="zhCN"
|
70
|
+
checked/>
|
71
|
+
<label class="form-check-label" for="zhCN">zh-CN</label>
|
72
|
+
</div>
|
73
|
+
<div class="form-check">
|
74
|
+
<input class="form-check-input" type="radio" name="lang"
|
75
|
+
id="zhNE"/>
|
76
|
+
<label class="form-check-label" for="zhNE">zh-NE</label>
|
77
|
+
</div>
|
78
|
+
<div class="form-check">
|
79
|
+
<input class="form-check-input" type="radio" name="lang"
|
80
|
+
id="zhTW"/>
|
81
|
+
<label class="form-check-label" for="zhTW">zh-TW</label>
|
82
|
+
</div>
|
83
|
+
<div class="form-check">
|
84
|
+
<input class="form-check-input" type="radio" name="lang"
|
85
|
+
id="en"/>
|
86
|
+
<label class="form-check-label" for="en">en</label>
|
87
|
+
</div>
|
88
|
+
</div>
|
89
|
+
</div>
|
90
|
+
<div class="col-md-8 gx-5 my-4 d-inline-flex">
|
91
|
+
<div class="form-outline me-2 flex-fill">
|
92
|
+
<!--suppress HtmlFormInputWithoutLabel -->
|
93
|
+
<input type="text" id="url" readonly class="form-control"/>
|
94
|
+
</div>
|
95
|
+
<button class="btn btn-primary" id="copy">Copy</button>
|
96
|
+
</div>
|
97
|
+
</div>
|
98
|
+
</div>
|
99
|
+
</main>
|
100
|
+
<script src="https://cdnjs.loli.net/ajax/libs/mdb-ui-kit/4.1.0/mdb.min.js" crossorigin="anonymous"
|
101
|
+
referrerpolicy="no-referrer"
|
102
|
+
></script>
|
103
|
+
<script src="https://cdnjs.loli.net/ajax/libs/jquery/3.6.0/jquery.min.js" crossorigin="anonymous"
|
104
|
+
referrerpolicy="no-referrer"></script>
|
105
|
+
<script src="https://cdnjs.loli.net/ajax/libs/clipboard.js/2.0.10/clipboard.min.js"
|
106
|
+
crossorigin="anonymous"
|
107
|
+
referrerpolicy="no-referrer"></script>
|
108
|
+
<script>
|
109
|
+
function updateURL()
|
110
|
+
{
|
111
|
+
let curr = window.location.href.split("?")[0];
|
112
|
+
if(!curr.endsWith("/"))
|
113
|
+
{
|
114
|
+
curr += "/";
|
115
|
+
}
|
116
|
+
curr += "ics";
|
117
|
+
const args = new URLSearchParams();
|
118
|
+
|
119
|
+
//process ojs
|
120
|
+
const cf = $("#cf").prop("checked");
|
121
|
+
const at = $("#at").prop("checked");
|
122
|
+
const lc = $("#lc").prop("checked");
|
123
|
+
const lg = $("#lg").prop("checked");
|
124
|
+
const nc = $("#nc").prop("checked");
|
125
|
+
if(!(cf && at && lc && lg && nc))
|
126
|
+
{
|
127
|
+
const ojs = [];
|
128
|
+
if(cf) ojs.push("cf");
|
129
|
+
if(at) ojs.push("at");
|
130
|
+
if(lc) ojs.push("lc");
|
131
|
+
if(lg) ojs.push("lg");
|
132
|
+
if(nc) ojs.push("nc");
|
133
|
+
args.append("o", ojs.join(","));
|
134
|
+
}
|
135
|
+
|
136
|
+
//process lang
|
137
|
+
const lang = $("input[name='lang']:checked").next().text();
|
138
|
+
if(lang !== "zh-CN") args.append("l", lang);
|
139
|
+
const query = args.toString();
|
140
|
+
let url = curr;
|
141
|
+
if(query.length > 0) url += "?" + query;
|
142
|
+
$("#url").val(url);
|
143
|
+
}
|
144
|
+
|
145
|
+
document.addEventListener("DOMContentLoaded", function ()
|
146
|
+
{
|
147
|
+
updateURL();
|
148
|
+
$("#cf,#at,#lc,#lg,#nc,input[name='lang']").change(updateURL);
|
149
|
+
|
150
|
+
const copy = $("#copy");
|
151
|
+
|
152
|
+
copy.tooltip({
|
153
|
+
trigger: "click",
|
154
|
+
placement: "bottom",
|
155
|
+
title: "Copied!"
|
156
|
+
});
|
157
|
+
|
158
|
+
copy.click(function ()
|
159
|
+
{
|
160
|
+
const url = $("#url").val();
|
161
|
+
if(url.length > 0)
|
162
|
+
{
|
163
|
+
new ClipboardJS("#copy", {
|
164
|
+
text: function ()
|
165
|
+
{
|
166
|
+
return url;
|
167
|
+
}
|
168
|
+
});
|
169
|
+
copy.tooltip("show");
|
170
|
+
setTimeout(function ()
|
171
|
+
{
|
172
|
+
copy.tooltip("hide");
|
173
|
+
}, 1000);
|
174
|
+
}
|
175
|
+
});
|
176
|
+
}
|
177
|
+
);
|
178
|
+
</script>
|
179
|
+
</body>
|
180
|
+
</html>
|
package/dist/server.js
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
#!/usr/bin/env node
|
1
2
|
"use strict";
|
2
3
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
3
4
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
@@ -22,6 +23,7 @@ const crypto_1 = require("crypto");
|
|
22
23
|
const commander_1 = require("commander");
|
23
24
|
const package_json_1 = require("../package.json");
|
24
25
|
const lodash_1 = __importDefault(require("lodash"));
|
26
|
+
const fs_1 = require("fs");
|
25
27
|
const app = (0, express_1.default)();
|
26
28
|
function assertType(obj) {
|
27
29
|
}
|
@@ -42,10 +44,12 @@ const logger = () => {
|
|
42
44
|
next();
|
43
45
|
};
|
44
46
|
};
|
47
|
+
const web = (0, fs_1.readFileSync)(`${__dirname}/server.html`).toString();
|
45
48
|
app.set("trust proxy", true);
|
46
49
|
app.use(logger());
|
47
50
|
app.get("/", (req, res) => {
|
48
|
-
res.
|
51
|
+
res.set("Content-Type", "text/html");
|
52
|
+
res.send(web);
|
49
53
|
});
|
50
54
|
app.get("/ics", (req, res) => __awaiter(void 0, void 0, void 0, function* () {
|
51
55
|
const { language, l, ojs, o } = req.query;
|
package/dist/server.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,11 +1,10 @@
|
|
1
1
|
{
|
2
2
|
"name": "lscontests",
|
3
|
-
"version": "2.1
|
3
|
+
"version": "2.2.1",
|
4
4
|
"description": "A tool to get information about the contests on each OJ",
|
5
5
|
"keywords": [
|
6
6
|
"cli",
|
7
7
|
"crawler",
|
8
|
-
"oj",
|
9
8
|
"atcoder",
|
10
9
|
"codeforces",
|
11
10
|
"luogu",
|
@@ -25,10 +24,13 @@
|
|
25
24
|
"dist"
|
26
25
|
],
|
27
26
|
"scripts": {
|
28
|
-
"
|
29
|
-
"
|
27
|
+
"prebuild": "rimraf ./dist/*",
|
28
|
+
"postbuild": "cpy --flat src/server.html dist",
|
29
|
+
"build": "tsc -p src",
|
30
|
+
"clean": "rimraf ./dist ./docs ./node_modules",
|
30
31
|
"docs": "typedoc",
|
31
32
|
"lint": "eslint . && markdownlint .",
|
33
|
+
"lint:fix": "eslint . --fix && markdownlint . --fix",
|
32
34
|
"release": "mkdirp docs && yarn semantic-release",
|
33
35
|
"start": "tsx src/cli.ts",
|
34
36
|
"start-s": "tsx src/server.ts"
|
@@ -36,7 +38,7 @@
|
|
36
38
|
"dependencies": {
|
37
39
|
"axios": "^0.27.2",
|
38
40
|
"axios-retry": "^3.2.5",
|
39
|
-
"cheerio": "^1.0.0-rc.
|
41
|
+
"cheerio": "^1.0.0-rc.11",
|
40
42
|
"commander": "^9.2.0",
|
41
43
|
"express": "^4.18.1",
|
42
44
|
"ics": "^2.35.0",
|
@@ -50,20 +52,21 @@
|
|
50
52
|
"@semantic-release/git": "^10.0.1",
|
51
53
|
"@types/express": "^4.17.13",
|
52
54
|
"@types/lodash": "^4.14.182",
|
53
|
-
"@types/node": "^17.0.
|
55
|
+
"@types/node": "^17.0.35",
|
54
56
|
"@types/pangu": "^3.3.0",
|
55
|
-
"@typescript-eslint/eslint-plugin": "^5.
|
56
|
-
"@typescript-eslint/parser": "^5.
|
57
|
+
"@typescript-eslint/eslint-plugin": "^5.26.0",
|
58
|
+
"@typescript-eslint/parser": "^5.26.0",
|
57
59
|
"cz-conventional-changelog": "3.3.0",
|
58
|
-
"eslint": "^8.
|
60
|
+
"eslint": "^8.16.0",
|
59
61
|
"markdownlint-cli": "^0.31.1",
|
60
62
|
"mkdirp": "^1.0.4",
|
61
63
|
"rimraf": "^3.0.2",
|
62
64
|
"semantic-release": "^19.0.2",
|
63
|
-
"tsx": "
|
65
|
+
"tsx": "^3.4.1",
|
64
66
|
"typedoc": "^0.22.15",
|
65
67
|
"typedoc-plugin-extras": "^2.2.3",
|
66
|
-
"typescript": "^4.
|
68
|
+
"typescript": "^4.7.2",
|
69
|
+
"cpy-cli": "^4.1.0"
|
67
70
|
},
|
68
71
|
"config": {
|
69
72
|
"commitizen": {
|