lscontests 2.2.3 → 2.3.0
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 +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.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.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.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,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;
|
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.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":"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"}
|
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": {
|