lscontests 2.2.1 → 2.3.0
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +40 -10
- package/dist/cli.d.ts +6 -3
- package/dist/cli.js +34 -38
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +16 -20
- package/dist/index.js +97 -99
- package/dist/index.js.map +1 -1
- package/dist/lib/contest.d.ts +2 -2
- package/dist/lib/oj/atcoder.d.ts +2 -2
- package/dist/lib/oj/atcoder.js +2 -25
- package/dist/lib/oj/atcoder.js.map +1 -1
- package/dist/lib/oj/codeforces.d.ts +2 -2
- package/dist/lib/oj/codeforces.js +2 -25
- package/dist/lib/oj/codeforces.js.map +1 -1
- package/dist/lib/oj/index.d.ts +6 -6
- package/dist/lib/oj/index.js +1 -1
- package/dist/lib/oj/index.js.map +1 -1
- package/dist/lib/oj/leetcode.d.ts +2 -2
- package/dist/lib/oj/leetcode.js +2 -25
- package/dist/lib/oj/leetcode.js.map +1 -1
- package/dist/lib/oj/luogu.d.ts +2 -2
- package/dist/lib/oj/nowcoder.d.ts +2 -2
- package/dist/lib/oj/nowcoder.js +3 -26
- package/dist/lib/oj/nowcoder.js.map +1 -1
- package/dist/server.html +1 -0
- package/dist/server.js +2 -2
- package/dist/server.js.map +1 -1
- package/package.json +5 -11
package/README.md
CHANGED
@@ -41,6 +41,7 @@ Options:
|
|
41
41
|
-d, --days, <day> number of days to display, set to 0 to get all
|
42
42
|
contests infomation (default: "3")
|
43
43
|
-l, --list list all supported OJ and it's abbreviation
|
44
|
+
-s, --silent do not print log
|
44
45
|
-o, --oj <ojs...> OJs to display (choices: "at", "cf", "lc", "lg", "nc")
|
45
46
|
-r, --raw print raw contest list
|
46
47
|
-L, --language <lang> set output language (choices: "en", "zh-CN", "zh-NE",
|
@@ -55,7 +56,7 @@ Options:
|
|
55
56
|
It performs as follows:
|
56
57
|
|
57
58
|
<!-- block_cli begin -->
|
58
|
-
(*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 Fri, 27 May 2022 15:42:23 GMT*)
|
59
60
|
|
60
61
|
<details>
|
61
62
|
<summary> <code>> lsct -L en</code> </summary>
|
@@ -70,14 +71,7 @@ Start time: 5/13/2022, 06:00:00
|
|
70
71
|
End time: 5/30/2022, 08:00:00
|
71
72
|
https://ac.nowcoder.com/acm/contest/34649
|
72
73
|
|
73
|
-
There are
|
74
|
-
|
75
|
-
OJ: NowCoder
|
76
|
-
Contest name: 牛客练习赛 99
|
77
|
-
Rule: ICPC
|
78
|
-
Start time: 5/27/2022, 11:00:00
|
79
|
-
End time: 5/27/2022, 13:30:00
|
80
|
-
https://ac.nowcoder.com/acm/contest/34330
|
74
|
+
There are 8 contests on AtCoder,NowCoder,LeetCode in the next 3 days
|
81
75
|
|
82
76
|
OJ: AtCoder
|
83
77
|
Contest name: Ⓗ AtCoder Heuristic Contest 011
|
@@ -120,6 +114,20 @@ Rule: AtCoder
|
|
120
114
|
Start time: 5/29/2022, 02:30:00
|
121
115
|
End time: 5/29/2022, 04:00:00
|
122
116
|
https://leetcode.com/contest/weekly-contest-295
|
117
|
+
|
118
|
+
OJ: NowCoder
|
119
|
+
Contest name: 第四届 SCPC 中南民族大学程序设计竞赛(同步赛)
|
120
|
+
Rule: ICPC
|
121
|
+
Start time: 5/29/2022, 04:00:00
|
122
|
+
End time: 5/29/2022, 09:00:00
|
123
|
+
https://ac.nowcoder.com/acm/contest/35624
|
124
|
+
|
125
|
+
OJ: AtCoder
|
126
|
+
Contest name: Ⓐ AtCoder Regular Contest 141
|
127
|
+
Rule: AtCoder
|
128
|
+
Start time: 5/29/2022, 12:00:00
|
129
|
+
End time: 5/29/2022, 14:00:00
|
130
|
+
https://atcoder.jp/contests/arc141
|
123
131
|
```
|
124
132
|
|
125
133
|
</details>
|
@@ -130,7 +138,7 @@ https://leetcode.com/contest/weekly-contest-295
|
|
130
138
|
```text
|
131
139
|
No running contests
|
132
140
|
|
133
|
-
There are
|
141
|
+
There are 6 contests on AtCoder,Codeforces in the next 7 days
|
134
142
|
|
135
143
|
OJ: AtCoder
|
136
144
|
Contest name: Ⓗ AtCoder Heuristic Contest 011
|
@@ -159,6 +167,20 @@ Rule: Codeforces
|
|
159
167
|
Start time: 5/31/2022, 14:35:00
|
160
168
|
End time: 5/31/2022, 16:35:00
|
161
169
|
https://codeforces.com/contests/1691
|
170
|
+
|
171
|
+
OJ: Codeforces
|
172
|
+
Contest name: Codeforces Round #796 (Div. 1)
|
173
|
+
Rule: Codeforces
|
174
|
+
Start time: 6/3/2022, 14:35:00
|
175
|
+
End time: 6/3/2022, 16:35:00
|
176
|
+
https://codeforces.com/contests/1687
|
177
|
+
|
178
|
+
OJ: Codeforces
|
179
|
+
Contest name: Codeforces Round #796 (Div. 2)
|
180
|
+
Rule: Codeforces
|
181
|
+
Start time: 6/3/2022, 14:35:00
|
182
|
+
End time: 6/3/2022, 16:35:00
|
183
|
+
https://codeforces.com/contests/1688
|
162
184
|
```
|
163
185
|
|
164
186
|
</details>
|
@@ -265,6 +287,14 @@ https://codeforces.com/contests/1691
|
|
265
287
|
"startTime": "2022-06-10T16:35:00.000Z",
|
266
288
|
"endTime": "2022-06-10T18:35:00.000Z",
|
267
289
|
"url": "https://codeforces.com/contests/1689"
|
290
|
+
},
|
291
|
+
{
|
292
|
+
"ojName": "Codeforces",
|
293
|
+
"name": "Codeforces Round #799 (Div. 4)",
|
294
|
+
"rule": "ICPC",
|
295
|
+
"startTime": "2022-06-14T14:35:00.000Z",
|
296
|
+
"endTime": "2022-06-14T16:50:00.000Z",
|
297
|
+
"url": "https://codeforces.com/contests/1692"
|
268
298
|
}
|
269
299
|
]
|
270
300
|
}
|
package/dist/cli.d.ts
CHANGED
@@ -1,8 +1,11 @@
|
|
1
1
|
#!/usr/bin/env node
|
2
|
+
import winston from "winston";
|
2
3
|
/**
|
3
4
|
* CLI entrypoint
|
4
|
-
* @param
|
5
|
+
* @param args Arguments
|
5
6
|
* @param name Program name
|
6
|
-
* @
|
7
|
+
* @param out Output result
|
8
|
+
* @param log_level Log level
|
9
|
+
* @param log_transport A winston transport instance
|
7
10
|
*/
|
8
|
-
export declare function cli(
|
11
|
+
export declare function cli(args?: string, name?: string, out?: (msg: string) => void, log_level?: string, log_transport?: winston.transports.ConsoleTransportInstance): Promise<void>;
|
package/dist/cli.js
CHANGED
@@ -14,73 +14,69 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
14
|
};
|
15
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
16
16
|
exports.cli = void 0;
|
17
|
+
const commander_1 = __importDefault(require("commander"));
|
18
|
+
const lodash_1 = __importDefault(require("lodash"));
|
19
|
+
const winston_1 = __importDefault(require("winston"));
|
20
|
+
const _1 = __importDefault(require("."));
|
17
21
|
const package_json_1 = require("../package.json");
|
18
|
-
const commander_1 = require("commander");
|
19
22
|
const oj_1 = require("./lib/oj");
|
20
|
-
const _1 = require(".");
|
21
23
|
const locale_1 = require("./locale");
|
22
|
-
const lodash_1 = __importDefault(require("lodash"));
|
23
24
|
function initCmd() {
|
24
|
-
return new commander_1.Command()
|
25
|
-
.name(Object.keys(package_json_1.bin)[0])
|
25
|
+
return new commander_1.default.Command()
|
26
26
|
.version(package_json_1.version)
|
27
27
|
.option("-d, --days, <day>", "number of days to display, set to 0 to get all contests infomation", "3")
|
28
28
|
.option("-l, --list", "list all supported OJ and it's abbreviation")
|
29
|
-
.
|
30
|
-
.addOption(new commander_1.Option("-
|
31
|
-
.addOption(new commander_1.Option("-
|
29
|
+
.option("-s, --silent", "do not print log")
|
30
|
+
.addOption(new commander_1.default.Option("-o, --oj <ojs...>", "OJs to display").choices(Object.keys(oj_1.alloj)))
|
31
|
+
.addOption(new commander_1.default.Option("-r, --raw", "print raw contest list").conflicts("language"))
|
32
|
+
.addOption(new commander_1.default.Option("-L, --language <lang>", "set output language").default("zh-CN").choices(locale_1.langList))
|
32
33
|
.option("--no-sort", "do not sort by contests start time, but by OJ order")
|
33
34
|
.option("--no-running", "do not list all running contests")
|
34
35
|
.option("--no-upcoming", "do not list all upcoming contests");
|
35
36
|
}
|
36
37
|
/**
|
37
38
|
* CLI entrypoint
|
38
|
-
* @param
|
39
|
+
* @param args Arguments
|
39
40
|
* @param name Program name
|
40
|
-
* @
|
41
|
+
* @param out Output result
|
42
|
+
* @param log_level Log level
|
43
|
+
* @param log_transport A winston transport instance
|
41
44
|
*/
|
42
|
-
function cli(
|
45
|
+
function cli(args, name, out = console.log, log_level = "info", log_transport = winston_1.default.transports.Console) {
|
43
46
|
return __awaiter(this, void 0, void 0, function* () {
|
44
|
-
const cmd = initCmd()
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
outputError: str => msg = str
|
57
|
-
})
|
58
|
-
.exitOverride()
|
59
|
-
.parse(arg.split(" "), { from: "user" });
|
60
|
-
}
|
61
|
-
catch (e) {
|
62
|
-
return msg;
|
63
|
-
}
|
47
|
+
const cmd = initCmd()
|
48
|
+
.name(name !== null && name !== void 0 ? name : Object.keys(package_json_1.bin)[0])
|
49
|
+
.configureOutput({
|
50
|
+
writeOut: out,
|
51
|
+
writeErr: out
|
52
|
+
})
|
53
|
+
.exitOverride();
|
54
|
+
try {
|
55
|
+
cmd.parse(args === null || args === void 0 ? void 0 : args.split(" "), { from: "user" });
|
56
|
+
}
|
57
|
+
catch (e) {
|
58
|
+
return;
|
64
59
|
}
|
65
60
|
const opts = cmd.opts();
|
66
61
|
if (opts.list)
|
67
|
-
|
62
|
+
out(JSON.stringify(lodash_1.default.mapValues(oj_1.alloj, val => val.name), null, 2));
|
68
63
|
else {
|
69
|
-
const
|
64
|
+
const lsct = new _1.default({
|
70
65
|
abbrList: lodash_1.default.uniq(opts.oj),
|
71
66
|
days: parseInt(opts.days),
|
72
67
|
sort: opts.sort,
|
73
68
|
running: opts.running,
|
74
|
-
upcoming: opts.upcoming
|
75
|
-
|
69
|
+
upcoming: opts.upcoming,
|
70
|
+
silent: opts.silent
|
71
|
+
}, log_level, log_transport);
|
76
72
|
if (opts.raw)
|
77
|
-
|
73
|
+
out(JSON.stringify(yield lsct.getContests(), null, 2));
|
78
74
|
else
|
79
|
-
|
75
|
+
out(yield lsct.getContestsText(opts.language));
|
80
76
|
}
|
81
77
|
});
|
82
78
|
}
|
83
79
|
exports.cli = cli;
|
84
80
|
if (require.main === module)
|
85
|
-
cli()
|
81
|
+
cli();
|
86
82
|
//# sourceMappingURL=cli.js.map
|
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,
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
@@ -1,27 +1,23 @@
|
|
1
|
-
import
|
2
|
-
|
1
|
+
import winston from "winston";
|
2
|
+
import { Contest } from "./lib/contest";
|
3
|
+
export interface LscontestsConfig {
|
3
4
|
abbrList?: string[];
|
4
5
|
days?: number;
|
5
6
|
sort?: boolean;
|
6
7
|
running?: boolean;
|
7
8
|
upcoming?: boolean;
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
}>;
|
18
|
-
|
19
|
-
|
20
|
-
* @param config The config of contests that want to get
|
21
|
-
* @param language Language of the output text
|
22
|
-
* @returns A string containing detail text of contests that match the given config
|
23
|
-
*/
|
24
|
-
export declare function getContestsInfoText(config?: config, language?: string): Promise<string>;
|
9
|
+
silent?: boolean;
|
10
|
+
}
|
11
|
+
export default class Lscontests {
|
12
|
+
private config;
|
13
|
+
private logger;
|
14
|
+
constructor(config?: LscontestsConfig, log_level?: string, log_transport?: winston.transports.ConsoleTransportInstance);
|
15
|
+
getContests(): Promise<{
|
16
|
+
running: Contest[];
|
17
|
+
upcoming: Contest[];
|
18
|
+
}>;
|
19
|
+
getContestsText(language?: string): Promise<string>;
|
20
|
+
}
|
25
21
|
export * from "./lib/contest";
|
26
22
|
export { cli } from "./cli";
|
27
|
-
export {
|
23
|
+
export { OJ, addOJ } from "./lib/oj";
|
package/dist/index.js
CHANGED
@@ -26,116 +26,114 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
27
27
|
};
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
29
|
-
exports.addOJ = exports.cli =
|
30
|
-
const oj_1 = require("./lib/oj");
|
31
|
-
const locale_1 = require("./locale");
|
29
|
+
exports.addOJ = exports.cli = void 0;
|
32
30
|
const lodash_1 = __importDefault(require("lodash"));
|
33
31
|
const pangu_1 = __importDefault(require("pangu"));
|
34
|
-
const
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
}
|
47
|
-
/**
|
48
|
-
* Get the list of all contests matching the given config
|
49
|
-
* @param config The config of contests that want to get
|
50
|
-
* @returns A Promise that contains an array of all contests that match the given config
|
51
|
-
*/
|
52
|
-
function getContests(config) {
|
53
|
-
return __awaiter(this, void 0, void 0, function* () {
|
54
|
-
const cfg = resolveConfig(config);
|
55
|
-
const contests = (yield Promise.all(cfg.abbrList.map((abbr) => __awaiter(this, void 0, void 0, function* () {
|
56
|
-
try {
|
57
|
-
return (yield oj_1.alloj[abbr].get()).sort((a, b) => a.startTime.getTime() - b.startTime.getTime());
|
58
|
-
}
|
59
|
-
catch (e) {
|
60
|
-
console.error(`Failed to get contest information for ${oj_1.alloj[abbr].name}, details:`);
|
61
|
-
console.error(e);
|
62
|
-
return [];
|
63
|
-
}
|
64
|
-
})))).reduce((ls1, ls2) => ls1.concat(ls2));
|
65
|
-
const ret = {
|
66
|
-
running: cfg.running ? contests.filter(ct => ct.startTime <= new Date() && ct.endTime > new Date()) : [],
|
67
|
-
upcoming: cfg.upcoming ? contests.filter(ct => ct.startTime > new Date() && (cfg.days === -1 || ct.startTime <= new Date(Date.now() + cfg.days * 86400000))) : []
|
32
|
+
const winston_1 = __importDefault(require("winston"));
|
33
|
+
const oj_1 = require("./lib/oj");
|
34
|
+
const locale_1 = require("./locale");
|
35
|
+
class Lscontests {
|
36
|
+
constructor(config, log_level = "info", log_transport = winston_1.default.transports.Console) {
|
37
|
+
this.config = {
|
38
|
+
abbrList: Object.keys(oj_1.alloj),
|
39
|
+
days: 3,
|
40
|
+
sort: true,
|
41
|
+
running: true,
|
42
|
+
upcoming: true,
|
43
|
+
silent: false
|
68
44
|
};
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
}
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
45
|
+
this.config = Object.assign(Object.assign({}, this.config), config);
|
46
|
+
if (this.config.abbrList.length === 0)
|
47
|
+
this.config.abbrList = Object.keys(oj_1.alloj);
|
48
|
+
this.logger = winston_1.default.createLogger({
|
49
|
+
level: log_level,
|
50
|
+
format: winston_1.default.format.combine(winston_1.default.format.colorize(), winston_1.default.format.simple()),
|
51
|
+
transports: new log_transport({ silent: this.config.silent }),
|
52
|
+
});
|
53
|
+
}
|
54
|
+
getContests() {
|
55
|
+
return __awaiter(this, void 0, void 0, function* () {
|
56
|
+
const contests = (yield Promise.all(this.config.abbrList.map((abbr) => __awaiter(this, void 0, void 0, function* () {
|
57
|
+
try {
|
58
|
+
const oj = oj_1.alloj[abbr];
|
59
|
+
this.logger.info(`Start getting contests information about ${oj.name}`);
|
60
|
+
const res = (yield oj.get()).sort((a, b) => a.startTime.getTime() - b.startTime.getTime());
|
61
|
+
this.logger.info(`Successfully get contests information about ${oj.name}`);
|
62
|
+
return res;
|
63
|
+
}
|
64
|
+
catch (e) {
|
65
|
+
this.logger.error(`Failed to get contest information for ${oj_1.alloj[abbr].name}, details:`);
|
66
|
+
this.logger.error(e);
|
67
|
+
return [];
|
68
|
+
}
|
69
|
+
})))).reduce((ls1, ls2) => ls1.concat(ls2));
|
70
|
+
const ret = {
|
71
|
+
running: this.config.running ? contests.filter(ct => ct.startTime <= new Date() && ct.endTime > new Date()) : [],
|
72
|
+
upcoming: this.config.upcoming ? contests.filter(ct => ct.startTime > new Date() && (this.config.days === -1 || ct.startTime <= new Date(Date.now() + this.config.days * 86400000))) : []
|
73
|
+
};
|
74
|
+
if (this.config.sort)
|
75
|
+
Object.values(ret).forEach(ct => ct.sort((a, b) => a.startTime.getTime() - b.startTime.getTime()));
|
76
|
+
return ret;
|
77
|
+
});
|
78
|
+
}
|
79
|
+
getContestsText(language = "zh-CN") {
|
80
|
+
return __awaiter(this, void 0, void 0, function* () {
|
81
|
+
const lang = yield (0, locale_1.getLangDict)(language);
|
82
|
+
const { running, upcoming } = yield this.getContests();
|
83
|
+
const info = [];
|
84
|
+
function msg(contests) {
|
85
|
+
return contests.map(contest => {
|
86
|
+
const ls = [];
|
87
|
+
ls.push(`${lang.ojName}: ${contest.ojName}`);
|
88
|
+
ls.push(`${lang.name}: ${contest.name}`);
|
89
|
+
ls.push(`${lang.rule}: ${contest.rule}`);
|
90
|
+
ls.push(`${lang.startTime}: ${contest.startTime.toLocaleString(undefined, { hourCycle: "h23" })}`);
|
91
|
+
ls.push(`${lang.endTime}: ${contest.endTime.toLocaleString(undefined, { hourCycle: "h23" })}`);
|
92
|
+
ls.push(contest.url);
|
93
|
+
return ls.join("\n");
|
94
|
+
});
|
106
95
|
}
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
if (upcoming.length) {
|
113
|
-
info.push(lodash_1.default.template(lang.upcoming_all)({
|
114
|
-
contestCount: upcoming.length,
|
115
|
-
oj: lodash_1.default.uniq(upcoming.map(contest => contest.ojName))
|
96
|
+
if (this.config.running) {
|
97
|
+
if (running.length) {
|
98
|
+
info.push(lodash_1.default.template(lang.runnning)({
|
99
|
+
contestCount: running.length,
|
100
|
+
oj: lodash_1.default.uniq(running.map(contest => contest.ojName))
|
116
101
|
}));
|
117
|
-
info.push(...msg(
|
102
|
+
info.push(...msg(running));
|
118
103
|
}
|
119
104
|
else
|
120
|
-
info.push(lang.
|
105
|
+
info.push(lang.norunning);
|
121
106
|
}
|
122
|
-
|
123
|
-
if (
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
107
|
+
if (this.config.upcoming) {
|
108
|
+
if (this.config.days === -1) {
|
109
|
+
if (upcoming.length) {
|
110
|
+
info.push(lodash_1.default.template(lang.upcoming_all)({
|
111
|
+
contestCount: upcoming.length,
|
112
|
+
oj: lodash_1.default.uniq(upcoming.map(contest => contest.ojName))
|
113
|
+
}));
|
114
|
+
info.push(...msg(upcoming));
|
115
|
+
}
|
116
|
+
else
|
117
|
+
info.push(lang.noupcoming_all);
|
118
|
+
}
|
119
|
+
else {
|
120
|
+
if (upcoming.length) {
|
121
|
+
info.push(lodash_1.default.template(lang.upcoming)({
|
122
|
+
contestCount: upcoming.length,
|
123
|
+
days: this.config.days,
|
124
|
+
oj: lodash_1.default.uniq(upcoming.map(contest => contest.ojName))
|
125
|
+
}));
|
126
|
+
info.push(...msg(upcoming));
|
127
|
+
}
|
128
|
+
else
|
129
|
+
info.push(lodash_1.default.template(lang.noupcoming)({ days: this.config.days }));
|
130
130
|
}
|
131
|
-
else
|
132
|
-
info.push(lodash_1.default.template(lang.noupcoming)({ days: cfg.days }));
|
133
131
|
}
|
134
|
-
|
135
|
-
|
136
|
-
}
|
132
|
+
return pangu_1.default.spacing(info.join("\n\n"));
|
133
|
+
});
|
134
|
+
}
|
137
135
|
}
|
138
|
-
exports.
|
136
|
+
exports.default = Lscontests;
|
139
137
|
__exportStar(require("./lib/contest"), exports);
|
140
138
|
var cli_1 = require("./cli");
|
141
139
|
Object.defineProperty(exports, "cli", { enumerable: true, get: function () { return cli_1.cli; } });
|
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":"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"}
|
package/dist/lib/contest.d.ts
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
* LeDuo: From Luogu OJ
|
3
3
|
*/
|
4
4
|
export declare type rule = "OI" | "IOI" | "ICPC" | "LeDuo" | "Codeforces" | "AtCoder";
|
5
|
-
export
|
5
|
+
export interface Contest {
|
6
6
|
ojName: string;
|
7
7
|
name: string;
|
8
8
|
rule: rule;
|
9
9
|
startTime: Date;
|
10
10
|
endTime: Date;
|
11
11
|
url: string;
|
12
|
-
}
|
12
|
+
}
|
package/dist/lib/oj/atcoder.d.ts
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
import {
|
2
|
-
export declare const at:
|
1
|
+
import { OJ } from ".";
|
2
|
+
export declare const at: OJ;
|
package/dist/lib/oj/atcoder.js
CHANGED
@@ -1,27 +1,4 @@
|
|
1
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
2
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
26
3
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
27
4
|
return new (P || (P = Promise))(function (resolve, reject) {
|
@@ -37,13 +14,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
37
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
38
15
|
exports.at = void 0;
|
39
16
|
const axios_1 = __importDefault(require("axios"));
|
40
|
-
const
|
17
|
+
const cheerio_1 = require("cheerio");
|
41
18
|
exports.at = {
|
42
19
|
name: "AtCoder",
|
43
20
|
get() {
|
44
21
|
return __awaiter(this, void 0, void 0, function* () {
|
45
22
|
const response = yield axios_1.default.get("https://atcoder.jp/contests");
|
46
|
-
const $ =
|
23
|
+
const $ = (0, cheerio_1.load)(response.data);
|
47
24
|
const contests = [];
|
48
25
|
$("table > tbody > tr", "#contest-table-action, #contest-table-upcoming").each(function () {
|
49
26
|
const ct = {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"atcoder.js","sourceRoot":"","sources":["../../../src/lib/oj/atcoder.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"atcoder.js","sourceRoot":"","sources":["../../../src/lib/oj/atcoder.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,kDAA0B;AAC1B,qCAA+B;AAIlB,QAAA,EAAE,GAAO;IAClB,IAAI,EAAE,SAAS;IACT,GAAG;;YAEL,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;YAChE,MAAM,CAAC,GAAG,IAAA,cAAI,EAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC9B,MAAM,QAAQ,GAAc,EAAE,CAAC;YAC/B,CAAC,CAAC,oBAAoB,EAAE,gDAAgD,CAAC,CAAC,IAAI,CAAC;gBAE3E,MAAM,EAAE,GAAY;oBAChB,MAAM,EAAE,UAAE,CAAC,IAAI;oBACf,IAAI,EAAE,EAAE;oBACR,IAAI,EAAE,SAAS;oBACf,SAAS,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC;oBACtB,OAAO,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC;oBACpB,GAAG,EAAE,EAAE;iBACV,CAAC;gBACF,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG;;oBAE5B,IAAG,GAAG,KAAK,CAAC;wBAAE,EAAE,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;yBACjD,IAAG,GAAG,KAAK,CAAC,EACjB;wBACI,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;wBACzB,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;wBAC1D,EAAE,CAAC,GAAG,GAAG,qBAAqB,MAAA,GAAG,CAAC,IAAI,EAAE,0CAAE,IAAI,EAAE,CAAC;qBACpD;yBACI,IAAG,GAAG,KAAK,CAAC,EACjB;wBACI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;wBACzC,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;qBAChG;gBACL,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACtB,CAAC,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC;QACpB,CAAC;KAAA;CACJ,CAAC"}
|
@@ -1,2 +1,2 @@
|
|
1
|
-
import {
|
2
|
-
export declare const cf:
|
1
|
+
import { OJ } from ".";
|
2
|
+
export declare const cf: OJ;
|
@@ -1,27 +1,4 @@
|
|
1
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
2
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
26
3
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
27
4
|
return new (P || (P = Promise))(function (resolve, reject) {
|
@@ -37,7 +14,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
37
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
38
15
|
exports.cf = void 0;
|
39
16
|
const axios_1 = __importDefault(require("axios"));
|
40
|
-
const
|
17
|
+
const cheerio_1 = require("cheerio");
|
41
18
|
const ruleRecord = {
|
42
19
|
CF: "Codeforces",
|
43
20
|
ICPC: "ICPC"
|
@@ -48,7 +25,7 @@ exports.cf = {
|
|
48
25
|
return __awaiter(this, void 0, void 0, function* () {
|
49
26
|
const response = yield axios_1.default.get("https://codeforces.com/api/contest.list");
|
50
27
|
if (!(response.data instanceof Object)) {
|
51
|
-
const $ =
|
28
|
+
const $ = (0, cheerio_1.load)(response.data);
|
52
29
|
throw new Error($.text());
|
53
30
|
}
|
54
31
|
const resList = response.data.result;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"codeforces.js","sourceRoot":"","sources":["../../../src/lib/oj/codeforces.ts"],"names":[],"mappings":"
|
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;AAEW,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,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAW,EAAE;gBAEhC,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;QACxD,CAAC;KAAA;CACJ,CAAC"}
|
package/dist/lib/oj/index.d.ts
CHANGED
@@ -1,19 +1,19 @@
|
|
1
|
-
import {
|
1
|
+
import { Contest } from "../contest";
|
2
2
|
/**
|
3
3
|
* name: OJ name
|
4
4
|
*
|
5
5
|
* get: return a Promise that contains an array of all contests with end times after the current time
|
6
6
|
*/
|
7
|
-
export
|
7
|
+
export interface OJ {
|
8
8
|
name: string;
|
9
|
-
get(): Promise<
|
10
|
-
}
|
9
|
+
get(): Promise<Contest[]>;
|
10
|
+
}
|
11
11
|
export declare const alloj: {
|
12
|
-
[abbr: string]:
|
12
|
+
[abbr: string]: OJ;
|
13
13
|
};
|
14
14
|
/**
|
15
15
|
* Add an OJ to get information about the contests held on it
|
16
16
|
* @param abbr Abbreviation of the OJ to be added
|
17
17
|
* @param oj OJ to be added
|
18
18
|
*/
|
19
|
-
export declare function addOJ(abbr: string, oj:
|
19
|
+
export declare function addOJ(abbr: string, oj: OJ): void;
|
package/dist/lib/oj/index.js
CHANGED
@@ -11,7 +11,7 @@ const codeforces_1 = require("./codeforces");
|
|
11
11
|
const leetcode_1 = require("./leetcode");
|
12
12
|
const luogu_1 = require("./luogu");
|
13
13
|
const nowcoder_1 = require("./nowcoder");
|
14
|
-
(0, axios_retry_1.default)(axios_1.default, { retries: 3, retryDelay: (
|
14
|
+
(0, axios_retry_1.default)(axios_1.default, { retries: 3, retryDelay: () => 1000 });
|
15
15
|
exports.alloj = {
|
16
16
|
at: atcoder_1.at,
|
17
17
|
cf: codeforces_1.cf,
|
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":";;;;;;AAAA,kDAA0B;AAC1B,8DAAqC;AAErC,uCAA+B;AAC/B,6CAAkC;AAClC,yCAAgC;AAChC,mCAA6B;AAC7B,yCAAgC;AAEhC,IAAA,qBAAU,EAAC,eAAK,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/oj/index.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,8DAAqC;AAErC,uCAA+B;AAC/B,6CAAkC;AAClC,yCAAgC;AAChC,mCAA6B;AAC7B,yCAAgC;AAEhC,IAAA,qBAAU,EAAC,eAAK,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;AAa7C,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"}
|
@@ -1,2 +1,2 @@
|
|
1
|
-
import {
|
2
|
-
export declare const lc:
|
1
|
+
import { OJ } from ".";
|
2
|
+
export declare const lc: OJ;
|
package/dist/lib/oj/leetcode.js
CHANGED
@@ -1,27 +1,4 @@
|
|
1
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
2
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
26
3
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
27
4
|
return new (P || (P = Promise))(function (resolve, reject) {
|
@@ -37,7 +14,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
37
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
38
15
|
exports.lc = void 0;
|
39
16
|
const axios_1 = __importDefault(require("axios"));
|
40
|
-
const
|
17
|
+
const cheerio_1 = require("cheerio");
|
41
18
|
const headers = {
|
42
19
|
"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
20
|
};
|
@@ -47,7 +24,7 @@ exports.lc = {
|
|
47
24
|
var _a;
|
48
25
|
return __awaiter(this, void 0, void 0, function* () {
|
49
26
|
const response = yield axios_1.default.get("https://leetcode.com/contest", { headers });
|
50
|
-
const $ =
|
27
|
+
const $ = (0, cheerio_1.load)(response.data);
|
51
28
|
const resList = JSON.parse((_a = $("#__NEXT_DATA__").html()) !== null && _a !== void 0 ? _a : "")
|
52
29
|
.props.pageProps.dehydratedState.queries
|
53
30
|
.find((v) => v.queryKey[0] === "topTwoContests")
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"leetcode.js","sourceRoot":"","sources":["../../../src/lib/oj/leetcode.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"leetcode.js","sourceRoot":"","sources":["../../../src/lib/oj/leetcode.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,kDAA0B;AAC1B,qCAA+B;AAY/B,MAAM,OAAO,GAAG;IACZ,YAAY,EAAE,qHAAqH;CACtI,CAAC;AAEW,QAAA,EAAE,GAAO;IAClB,IAAI,EAAE,UAAU;IACV,GAAG;;;YAEL,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,GAAG,CAAC,8BAA8B,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;YAC9E,MAAM,CAAC,GAAG,IAAA,cAAI,EAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC9B,MAAM,OAAO,GAAa,IAAI,CAAC,KAAK,CAAC,MAAA,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,EAAE,mCAAI,EAAE,CAAC;iBACjE,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,OAAO;iBACvC,IAAI,CAAC,CAAC,CAA2B,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC;iBACzE,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC;YAC/B,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAW,EAAE;gBAEhC,OAAO;oBACH,MAAM,EAAE,UAAE,CAAC,IAAI;oBACf,IAAI,EAAE,GAAG,CAAC,KAAK;oBACf,IAAI,EAAE,SAAS;oBACf,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC;oBACzC,OAAO,EAAE,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;oBACxD,GAAG,EAAE,gCAAgC,GAAG,CAAC,SAAS,EAAE;iBACvD,CAAC;YACN,CAAC,CAAC,CAAC;;KACN;CACJ,CAAC"}
|
package/dist/lib/oj/luogu.d.ts
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
import {
|
2
|
-
export declare const lg:
|
1
|
+
import { OJ } from ".";
|
2
|
+
export declare const lg: OJ;
|
@@ -1,2 +1,2 @@
|
|
1
|
-
import {
|
2
|
-
export declare const nc:
|
1
|
+
import { OJ } from ".";
|
2
|
+
export declare const nc: OJ;
|
package/dist/lib/oj/nowcoder.js
CHANGED
@@ -1,27 +1,4 @@
|
|
1
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
2
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
26
3
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
27
4
|
return new (P || (P = Promise))(function (resolve, reject) {
|
@@ -37,7 +14,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
37
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
38
15
|
exports.nc = void 0;
|
39
16
|
const axios_1 = __importDefault(require("axios"));
|
40
|
-
const
|
17
|
+
const cheerio_1 = require("cheerio");
|
41
18
|
var topCategoryFilter;
|
42
19
|
(function (topCategoryFilter) {
|
43
20
|
topCategoryFilter[topCategoryFilter["NOWCODERSERIES"] = 13] = "NOWCODERSERIES";
|
@@ -47,10 +24,10 @@ const url = "https://ac.nowcoder.com/acm/contest/vip-index";
|
|
47
24
|
function getResultList(tcf) {
|
48
25
|
return __awaiter(this, void 0, void 0, function* () {
|
49
26
|
const html = (yield axios_1.default.get(`${url}?topCategoryFilter=${tcf}`)).data;
|
50
|
-
const $ =
|
27
|
+
const $ = (0, cheerio_1.load)(html);
|
51
28
|
const ls = [];
|
52
29
|
$("div[class='platform-item js-item ']").each(function () {
|
53
|
-
ls.push(JSON.parse(
|
30
|
+
ls.push(JSON.parse((0, cheerio_1.load)(this.attribs["data-json"]).text()));
|
54
31
|
});
|
55
32
|
return ls;
|
56
33
|
});
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"nowcoder.js","sourceRoot":"","sources":["../../../src/lib/oj/nowcoder.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"nowcoder.js","sourceRoot":"","sources":["../../../src/lib/oj/nowcoder.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,kDAA0B;AAC1B,qCAA+B;AAgD/B,IAAK,iBAIJ;AAJD,WAAK,iBAAiB;IAElB,8EAAmB,CAAA;IACnB,4EAAa,CAAA;AACjB,CAAC,EAJI,iBAAiB,KAAjB,iBAAiB,QAIrB;AAED,MAAM,GAAG,GAAG,+CAA+C,CAAC;AAE5D,SAAe,aAAa,CAAC,GAAsB;;QAE/C,MAAM,IAAI,GAAG,CAAC,MAAM,eAAK,CAAC,GAAG,CAAC,GAAG,GAAG,sBAAsB,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACvE,MAAM,CAAC,GAAG,IAAA,cAAI,EAAC,IAAI,CAAC,CAAC;QACrB,MAAM,EAAE,GAAa,EAAE,CAAC;QACxB,CAAC,CAAC,qCAAqC,CAAC,CAAC,IAAI,CAAC;YAE1C,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAA,cAAI,EAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;QACH,OAAO,EAAE,CAAC;IACd,CAAC;CAAA;AAED,MAAM,UAAU,GAAyB;IACrC,CAAC,EAAE,MAAM;IACT,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,KAAK;CACX,CAAC;AAEW,QAAA,EAAE,GAAO;IAClB,IAAI,EAAE,UAAU;IACV,GAAG;;YAEL,MAAM,GAAG,GAAa;gBAClB,GAAG,MAAM,aAAa,CAAC,iBAAiB,CAAC,cAAc,CAAC;gBACxD,GAAG,MAAM,aAAa,CAAC,iBAAiB,CAAC,aAAa,CAAC;aAC1D,CAAC;YACF,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,sBAAsB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAW,EAAE;gBAE1E,OAAO;oBACH,MAAM,EAAE,UAAE,CAAC,IAAI;oBACf,IAAI,EAAE,GAAG,CAAC,WAAW;oBACrB,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;oBAC1B,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC;oBACzC,OAAO,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC;oBACrC,GAAG,EAAE,uCAAuC,GAAG,CAAC,SAAS,EAAE;iBAC9D,CAAC;YACN,CAAC,CAAC,CAAC;QACP,CAAC;KAAA;CACJ,CAAC"}
|
package/dist/server.html
CHANGED
package/dist/server.js
CHANGED
@@ -14,7 +14,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
14
|
};
|
15
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
16
16
|
const express_1 = __importDefault(require("express"));
|
17
|
-
const
|
17
|
+
const _1 = __importDefault(require("."));
|
18
18
|
const oj_1 = require("./lib/oj");
|
19
19
|
const locale_1 = require("./locale");
|
20
20
|
const ics_1 = require("ics");
|
@@ -80,7 +80,7 @@ const contestsCache = {
|
|
80
80
|
function getIcs(lang, ojs) {
|
81
81
|
return __awaiter(this, void 0, void 0, function* () {
|
82
82
|
if (contestsCache.lastUpdate < Date.now() - 1000 * 60 * 5) {
|
83
|
-
const c = yield
|
83
|
+
const c = yield new _1.default({ days: -1 }).getContests();
|
84
84
|
contestsCache.contests = lodash_1.default.uniqBy(contestsCache.contests.concat(c.running.concat(c.upcoming)), JSON.stringify);
|
85
85
|
contestsCache.contests = contestsCache.contests.filter(c => c.endTime.getTime() - c.startTime.getTime() < 1000 * 60 * 60 * 24 * 2); // ignore too long contests
|
86
86
|
contestsCache.lastUpdate = Date.now();
|
package/dist/server.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,sDAA8B;AAC9B,
|
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;AAElC,MAAM,GAAG,GAAG,IAAA,iBAAO,GAAE,CAAC;AAEtB,SAAS,UAAU,CAAI,GAAY;AAGnC,CAAC;AAED,MAAM,MAAM,GAAG,GAAG,EAAE;IAEhB,OAAO,CAAC,GAAoB,EAAE,GAAqB,EAAE,IAA0B,EAAE,EAAE;QAE/E,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAC/B,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;YAElB,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACnC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YAE1C,MAAM,OAAO,GAAG,KAAK,CAAC;YACtB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,UAAU,EAAE,GAAG,OAAO;gBACtC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,GAAG,OAAO;gBAClD,GAAG,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,GAAG,OAAO;gBAClC,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;gBACzB,IAAI,GAAG,CAAC,WAAW,GAAG,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;QACH,IAAI,EAAE,CAAC;IACX,CAAC,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,GAAG,GAAG,IAAA,iBAAY,EAAC,GAAG,SAAS,cAAc,CAAC,CAAC,QAAQ,EAAE,CAAC;AAEhE,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;AAC7B,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;AAElB,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IAEtB,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;IACrC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,CAAO,GAAG,EAAE,GAAG,EAAE,EAAE;IAE/B,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC;IAC1C,MAAM,IAAI,GAAG,QAAQ,IAAI,CAAC,IAAI,OAAO,CAAC;IACtC,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC;IAEpB,IAAG,IAAI,YAAY,KAAK,EACxB;QACI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QACzD,OAAO;KACV;IACD,IAAG,OAAO,IAAI,KAAK,QAAQ,EAC3B;QACI,IAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;;YACzC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;KACtB;SACI,IAAG,CAAC,IAAI;QAAE,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,UAAK,CAAC,CAAC;IACzC,UAAU,CAAW,IAAI,CAAC,CAAC;IAC3B,UAAU,CAAS,IAAI,CAAC,CAAC;IAEzB,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACtC,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;IAC/C,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnB,CAAC,CAAA,CAAC,CAAC;AAEH,MAAM,aAAa,GAGf;IACA,QAAQ,EAAE,EAAE;IACZ,UAAU,EAAE,CAAC;CAChB,CAAC;AAEF,SAAe,MAAM,CAAC,IAAY,EAAE,GAAa;;QAE7C,IAAG,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,EACxD;YACI,MAAM,CAAC,GAAG,MAAM,IAAI,UAAU,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;YAC3D,aAAa,CAAC,QAAQ,GAAG,gBAAC,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAC/G,aAAa,CAAC,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC,MAAM,CAClD,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAC7E,CAAC,CAAC,2BAA2B;YAC9B,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;SACzC;QAED,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACjG,MAAM,QAAQ,GAAG,MAAM,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;QAEzC,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAE9B,MAAM,EAAE,GAAa,EAAE,CAAC;YACxB,EAAE,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YAC3C,EAAE,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACvC,EAAE,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACvC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACf,MAAM,WAAW,GAAG,eAAK,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACjD,MAAM,GAAG,GAAoB;gBACzB,KAAK,EAAE,IAAA,6BAAuB,EAAC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC;gBAC9D,GAAG,EAAE,IAAA,6BAAuB,EAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC;gBAC1D,OAAO,EAAE,MAAM;gBACf,SAAS,EAAE,yBAAyB;gBACpC,KAAK,EAAE,CAAC,CAAC,IAAI;gBACb,GAAG,EAAE,CAAC,CAAC,GAAG;gBACV,QAAQ,EAAE,CAAC,CAAC,MAAM;gBAClB,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;gBACpB,GAAG,EAAE,GAAG,IAAA,mBAAU,GAAE,OAAO;gBAC3B,WAAW;aACd,CAAC;YACF,OAAO,GAAG,CAAC;QACf,CAAC,CAAC,CAAC;QACH,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,IAAA,kBAAY,EAAC,MAAM,CAAC,CAAC;QAC9C,IAAG,KAAK;YAAE,MAAM,KAAK,CAAC;QACtB,UAAU,CAAS,KAAK,CAAC,CAAC;QAC1B,KAAK,CAAC,OAAO,CAAC,0BAA0B,EAAE,mDAAmD,CAAC,CAAC;QAC/F,OAAO,KAAK,CAAC;IACjB,CAAC;CAAA;AAED,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE;KACxB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAG,CAAC,CAAC,CAAC,CAAC,CAAC;KACzB,OAAO,CAAC,sBAAO,CAAC;KAChB,MAAM,CAAC,oBAAoB,EAAE,mBAAmB,EAAE,SAAS,CAAC;KAC5D,MAAM,CAAC,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,CAAC,CAAC;AAC/D,OAAO,CAAC,KAAK,EAAE,CAAC;AAEhB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,IAAc,CAAC;AAC3C,IAAI,IAAI,GAAoB,OAAO,CAAC,IAAI,EAAE,CAAC,IAAc,CAAC;AAC1D,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAC1B,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE;IAExB,MAAM,MAAM,GAAG,UAAU,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,GAAG,CAAC;IAC5E,OAAO,CAAC,GAAG,CAAC,gBAAgB,sBAAO,iBAAiB,MAAM,EAAE,CAAC,CAAC;AAClE,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "lscontests",
|
3
|
-
"version": "2.
|
3
|
+
"version": "2.3.0",
|
4
4
|
"description": "A tool to get information about the contests on each OJ",
|
5
5
|
"keywords": [
|
6
6
|
"cli",
|
@@ -31,7 +31,6 @@
|
|
31
31
|
"docs": "typedoc",
|
32
32
|
"lint": "eslint . && markdownlint .",
|
33
33
|
"lint:fix": "eslint . --fix && markdownlint . --fix",
|
34
|
-
"release": "mkdirp docs && yarn semantic-release",
|
35
34
|
"start": "tsx src/cli.ts",
|
36
35
|
"start-s": "tsx src/server.ts"
|
37
36
|
},
|
@@ -43,30 +42,25 @@
|
|
43
42
|
"express": "^4.18.1",
|
44
43
|
"ics": "^2.35.0",
|
45
44
|
"lodash": "^4.17.21",
|
46
|
-
"pangu": "^4.0.7"
|
45
|
+
"pangu": "^4.0.7",
|
46
|
+
"winston": "^3.7.2"
|
47
47
|
},
|
48
48
|
"devDependencies": {
|
49
|
-
"@qiwi/semantic-release-gh-pages-plugin": "^5.2.2",
|
50
|
-
"@semantic-release/changelog": "^6.0.1",
|
51
|
-
"@semantic-release/exec": "^6.0.3",
|
52
|
-
"@semantic-release/git": "^10.0.1",
|
53
49
|
"@types/express": "^4.17.13",
|
54
50
|
"@types/lodash": "^4.14.182",
|
55
51
|
"@types/node": "^17.0.35",
|
56
52
|
"@types/pangu": "^3.3.0",
|
57
53
|
"@typescript-eslint/eslint-plugin": "^5.26.0",
|
58
54
|
"@typescript-eslint/parser": "^5.26.0",
|
55
|
+
"cpy-cli": "^4.1.0",
|
59
56
|
"cz-conventional-changelog": "3.3.0",
|
60
57
|
"eslint": "^8.16.0",
|
61
58
|
"markdownlint-cli": "^0.31.1",
|
62
|
-
"mkdirp": "^1.0.4",
|
63
59
|
"rimraf": "^3.0.2",
|
64
|
-
"semantic-release": "^19.0.2",
|
65
60
|
"tsx": "^3.4.1",
|
66
61
|
"typedoc": "^0.22.15",
|
67
62
|
"typedoc-plugin-extras": "^2.2.3",
|
68
|
-
"typescript": "
|
69
|
-
"cpy-cli": "^4.1.0"
|
63
|
+
"typescript": "4.6.4"
|
70
64
|
},
|
71
65
|
"config": {
|
72
66
|
"commitizen": {
|