lscontests 2.4.0 → 2.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -38,7 +38,7 @@ Usage: lsct [options]
38
38
 
39
39
  Options:
40
40
  -V, --version output the version number
41
- -d, --days, <day> number of days to display, set to 0 to get all
41
+ -d, --days, <day> number of days to display, set to -1 to get all
42
42
  contests infomation (default: "3")
43
43
  -l, --list list all supported OJ and it's abbreviation
44
44
  -s, --silent do not print log
@@ -56,29 +56,43 @@ Options:
56
56
  It performs as follows:
57
57
 
58
58
  <!-- block_cli begin -->
59
- (*The following content was automatically generated using [semantic-release](https://github.com/semantic-release/semantic-release) on Mon, 13 Jun 2022 05:05:09 GMT*)
59
+ (*The following content was automatically generated using [semantic-release](https://github.com/semantic-release/semantic-release) on Thu, 30 Jun 2022 09:00:29 GMT*)
60
60
 
61
61
  <details>
62
62
  <summary> <code>> lsct -L en</code> </summary>
63
63
 
64
64
  ```text
65
- There are 1 contests is running on NowCoder
65
+ There are no running contests on AtCoder,Codeforces,LeetCode,Luogu,NowCoder
66
+
67
+ There are 4 contests on NowCoder,AtCoder,LeetCode in the next 3 days
66
68
 
67
69
  OJ: NowCoder
68
- Contest name: 牛客竞赛计算几何专题班扫描线
70
+ Contest name: 第 20 届上海大学程序设计联赛夏季赛(校外同步赛)
69
71
  Rule: ICPC
70
- Start time: 6/6/2022, 07:00:00
71
- End time: 6/30/2022, 08:00:00
72
- https://ac.nowcoder.com/acm/contest/36088
72
+ Start time: 7/2/2022, 05:00:00
73
+ End time: 7/2/2022, 08:30:00
74
+ https://ac.nowcoder.com/acm/contest/36652
73
75
 
74
- There are 1 contests on Codeforces in the next 3 days
76
+ OJ: AtCoder
77
+ Contest name: Ⓐ AtCoder Beginner Contest 258
78
+ Rule: AtCoder
79
+ Start time: 7/2/2022, 12:00:00
80
+ End time: 7/2/2022, 13:40:00
81
+ https://atcoder.jp/contests/abc258
75
82
 
76
- OJ: Codeforces
77
- Contest name: Codeforces Round #799 (Div. 4)
78
- Rule: ICPC
79
- Start time: 6/14/2022, 14:35:00
80
- End time: 6/14/2022, 16:50:00
81
- https://codeforces.com/contests/1692
83
+ OJ: LeetCode
84
+ Contest name: Weekly Contest 300
85
+ Rule: AtCoder
86
+ Start time: 7/3/2022, 02:30:00
87
+ End time: 7/3/2022, 04:00:00
88
+ https://leetcode.com/contest/weekly-contest-300
89
+
90
+ OJ: AtCoder
91
+ Contest name: Ⓗ AtCoder Heuristic Contest 012
92
+ Rule: AtCoder
93
+ Start time: 7/3/2022, 06:00:00
94
+ End time: 7/3/2022, 10:00:00
95
+ https://atcoder.jp/contests/ahc012
82
96
  ```
83
97
 
84
98
  </details>
@@ -89,49 +103,28 @@ https://codeforces.com/contests/1692
89
103
  ```text
90
104
  There are no running contests on AtCoder,Codeforces
91
105
 
92
- There are 6 contests on Codeforces,AtCoder in the next 7 days
106
+ There are 3 contests on AtCoder,Codeforces in the next 7 days
93
107
 
94
- OJ: Codeforces
95
- Contest name: Codeforces Round #799 (Div. 4)
96
- Rule: ICPC
97
- Start time: 6/14/2022, 14:35:00
98
- End time: 6/14/2022, 16:50:00
99
- https://codeforces.com/contests/1692
100
-
101
- OJ: Codeforces
102
- Contest name: Codeforces Round #800 (Div. 1)
103
- Rule: Codeforces
104
- Start time: 6/16/2022, 14:35:00
105
- End time: 6/16/2022, 16:35:00
106
- https://codeforces.com/contests/1693
107
-
108
- OJ: Codeforces
109
- Contest name: Codeforces Round #800 (Div. 2)
110
- Rule: Codeforces
111
- Start time: 6/16/2022, 14:35:00
112
- End time: 6/16/2022, 16:35:00
113
- https://codeforces.com/contests/1694
108
+ OJ: AtCoder
109
+ Contest name: AtCoder Beginner Contest 258
110
+ Rule: AtCoder
111
+ Start time: 7/2/2022, 12:00:00
112
+ End time: 7/2/2022, 13:40:00
113
+ https://atcoder.jp/contests/abc258
114
114
 
115
115
  OJ: AtCoder
116
- Contest name: Tokio Marine & Nichido Fire Insurance Programming Contest 2022(AtCoder Beginner Contest 256)
116
+ Contest name: AtCoder Heuristic Contest 012
117
117
  Rule: AtCoder
118
- Start time: 6/18/2022, 12:00:00
119
- End time: 6/18/2022, 13:40:00
120
- https://atcoder.jp/contests/abc256
118
+ Start time: 7/3/2022, 06:00:00
119
+ End time: 7/3/2022, 10:00:00
120
+ https://atcoder.jp/contests/ahc012
121
121
 
122
122
  OJ: Codeforces
123
- Contest name: Codeforces Round #TBA (Div. 2)
123
+ Contest name: Codeforces Round #804 (Div. 2)
124
124
  Rule: Codeforces
125
- Start time: 6/18/2022, 14:35:00
126
- End time: 6/18/2022, 16:35:00
127
- https://codeforces.com/contests/1695
128
-
129
- OJ: AtCoder
130
- Contest name: Ⓐ AtCoder Regular Contest 142
131
- Rule: AtCoder
132
- Start time: 6/19/2022, 12:00:00
133
- End time: 6/19/2022, 14:00:00
134
- https://atcoder.jp/contests/arc142
125
+ Start time: 7/4/2022, 14:35:00
126
+ End time: 7/4/2022, 16:35:00
127
+ https://codeforces.com/contests/1699
135
128
  ```
136
129
 
137
130
  </details>
@@ -145,91 +138,67 @@ https://atcoder.jp/contests/arc142
145
138
  "upcoming": [
146
139
  {
147
140
  "ojName": "AtCoder",
148
- "name": "Ⓐ Tokio Marine & Nichido Fire Insurance Programming Contest 2022(AtCoder Beginner Contest 256)",
141
+ "name": "Ⓐ AtCoder Beginner Contest 258",
149
142
  "rule": "AtCoder",
150
- "startTime": "2022-06-18T12:00:00.000Z",
151
- "endTime": "2022-06-18T13:40:00.000Z",
152
- "url": "https://atcoder.jp/contests/abc256"
143
+ "startTime": "2022-07-02T12:00:00.000Z",
144
+ "endTime": "2022-07-02T13:40:00.000Z",
145
+ "url": "https://atcoder.jp/contests/abc258"
153
146
  },
154
147
  {
155
148
  "ojName": "AtCoder",
156
- "name": " AtCoder Regular Contest 142",
149
+ "name": " AtCoder Heuristic Contest 012",
157
150
  "rule": "AtCoder",
158
- "startTime": "2022-06-19T12:00:00.000Z",
159
- "endTime": "2022-06-19T14:00:00.000Z",
160
- "url": "https://atcoder.jp/contests/arc142"
151
+ "startTime": "2022-07-03T06:00:00.000Z",
152
+ "endTime": "2022-07-03T10:00:00.000Z",
153
+ "url": "https://atcoder.jp/contests/ahc012"
161
154
  },
162
155
  {
163
156
  "ojName": "AtCoder",
164
- "name": "Ⓐ NS Solutions Corporation Programming Contest 2022(AtCoder Beginner Contest 257)",
157
+ "name": "Ⓐ AtCoder Beginner Contest 259",
165
158
  "rule": "AtCoder",
166
- "startTime": "2022-06-25T12:00:00.000Z",
167
- "endTime": "2022-06-25T13:40:00.000Z",
168
- "url": "https://atcoder.jp/contests/abc257"
159
+ "startTime": "2022-07-09T12:00:00.000Z",
160
+ "endTime": "2022-07-09T13:40:00.000Z",
161
+ "url": "https://atcoder.jp/contests/abc259"
169
162
  },
170
163
  {
171
164
  "ojName": "AtCoder",
172
- "name": "Ⓐ AtCoder Regular Contest 143",
165
+ "name": "Ⓐ AtCoder Regular Contest 144",
173
166
  "rule": "AtCoder",
174
- "startTime": "2022-06-26T12:00:00.000Z",
175
- "endTime": "2022-06-26T14:00:00.000Z",
176
- "url": "https://atcoder.jp/contests/arc143"
167
+ "startTime": "2022-07-16T12:00:00.000Z",
168
+ "endTime": "2022-07-16T14:00:00.000Z",
169
+ "url": "https://atcoder.jp/contests/arc144"
177
170
  },
178
171
  {
179
172
  "ojName": "AtCoder",
180
- "name": "Ⓐ AtCoder Beginner Contest 258",
173
+ "name": "Ⓐ AtCoder Beginner Contest 260",
181
174
  "rule": "AtCoder",
182
- "startTime": "2022-07-02T12:00:00.000Z",
183
- "endTime": "2022-07-02T13:40:00.000Z",
184
- "url": "https://atcoder.jp/contests/abc258"
175
+ "startTime": "2022-07-17T12:00:00.000Z",
176
+ "endTime": "2022-07-17T13:40:00.000Z",
177
+ "url": "https://atcoder.jp/contests/abc260"
185
178
  },
186
179
  {
187
180
  "ojName": "AtCoder",
188
- "name": " AtCoder Heuristic Contest 012",
181
+ "name": " AtCoder Regular Contest 145",
189
182
  "rule": "AtCoder",
190
- "startTime": "2022-07-03T06:00:00.000Z",
191
- "endTime": "2022-07-03T10:00:00.000Z",
192
- "url": "https://atcoder.jp/contests/ahc012"
193
- },
194
- {
195
- "ojName": "Codeforces",
196
- "name": "Codeforces Round #799 (Div. 4)",
197
- "rule": "ICPC",
198
- "startTime": "2022-06-14T14:35:00.000Z",
199
- "endTime": "2022-06-14T16:50:00.000Z",
200
- "url": "https://codeforces.com/contests/1692"
183
+ "startTime": "2022-07-30T12:00:00.000Z",
184
+ "endTime": "2022-07-30T14:00:00.000Z",
185
+ "url": "https://atcoder.jp/contests/arc145"
201
186
  },
202
187
  {
203
- "ojName": "Codeforces",
204
- "name": "Codeforces Round #800 (Div. 1)",
205
- "rule": "Codeforces",
206
- "startTime": "2022-06-16T14:35:00.000Z",
207
- "endTime": "2022-06-16T16:35:00.000Z",
208
- "url": "https://codeforces.com/contests/1693"
209
- },
210
- {
211
- "ojName": "Codeforces",
212
- "name": "Codeforces Round #800 (Div. 2)",
213
- "rule": "Codeforces",
214
- "startTime": "2022-06-16T14:35:00.000Z",
215
- "endTime": "2022-06-16T16:35:00.000Z",
216
- "url": "https://codeforces.com/contests/1694"
217
- },
218
- {
219
- "ojName": "Codeforces",
220
- "name": "Codeforces Round #TBA (Div. 2)",
221
- "rule": "Codeforces",
222
- "startTime": "2022-06-18T14:35:00.000Z",
223
- "endTime": "2022-06-18T16:35:00.000Z",
224
- "url": "https://codeforces.com/contests/1695"
188
+ "ojName": "AtCoder",
189
+ "name": " AtCoder Grand Contest 058",
190
+ "rule": "AtCoder",
191
+ "startTime": "2022-08-14T12:00:00.000Z",
192
+ "endTime": "2022-08-14T15:00:00.000Z",
193
+ "url": "https://atcoder.jp/contests/agc058"
225
194
  },
226
195
  {
227
196
  "ojName": "Codeforces",
228
- "name": "Codeforces Global Round 21",
197
+ "name": "Codeforces Round #804 (Div. 2)",
229
198
  "rule": "Codeforces",
230
- "startTime": "2022-06-25T14:35:00.000Z",
231
- "endTime": "2022-06-25T16:35:00.000Z",
232
- "url": "https://codeforces.com/contests/1696"
199
+ "startTime": "2022-07-04T14:35:00.000Z",
200
+ "endTime": "2022-07-04T16:35:00.000Z",
201
+ "url": "https://codeforces.com/contests/1699"
233
202
  }
234
203
  ]
235
204
  }
package/dist/cli.js CHANGED
@@ -24,7 +24,7 @@ const locale_1 = require("./locale");
24
24
  function initCmd() {
25
25
  return new commander_1.default.Command()
26
26
  .version(package_json_1.version)
27
- .option("-d, --days, <day>", "number of days to display, set to 0 to get all contests infomation", "3")
27
+ .option("-d, --days, <day>", "number of days to display, set to -1 to get all contests infomation", "3")
28
28
  .option("-l, --list", "list all supported OJ and it's abbreviation")
29
29
  .option("-s, --silent", "do not print log")
30
30
  .addOption(new commander_1.default.Option("-o, --oj <ojs...>", "OJs to display").choices(Object.keys(oj_1.alloj)))
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,52 @@ const ruleRecord = {
19
19
  CF: "Codeforces",
20
20
  ICPC: "ICPC"
21
21
  };
22
+ function mergeDuplicate(data) {
23
+ const testRe = /Codeforces Round #(\d{2,4}) \(Div. (\d)\)/;
24
+ const tmpMap = new Map();
25
+ const rets = [];
26
+ data.forEach((item) => {
27
+ if (testRe.test(item.name)) {
28
+ const reRet = item.name.match(testRe);
29
+ if (reRet !== null) {
30
+ const round = parseInt(reRet[1]);
31
+ const div = parseInt(reRet[2]);
32
+ const i = tmpMap.get(round);
33
+ if (i !== undefined) {
34
+ i.push([div, item]);
35
+ }
36
+ else {
37
+ tmpMap.set(round, [[div, item]]);
38
+ }
39
+ }
40
+ else {
41
+ throw new Error("MergeDuplicate: regex failed");
42
+ }
43
+ }
44
+ else {
45
+ rets.push(item);
46
+ }
47
+ });
48
+ tmpMap.forEach((v, k) => {
49
+ if (v.length === 1) {
50
+ rets.push(v[0][1]);
51
+ }
52
+ else {
53
+ const divs = v.map(([div]) => div).sort().join("/");
54
+ const urls = v.map(([, item]) => item.url).join("\n");
55
+ const item = {
56
+ name: `Codeforces Round #${k} (Div. ${divs})`,
57
+ ojName: exports.cf.name,
58
+ rule: ruleRecord.CF,
59
+ startTime: v[0][1].startTime,
60
+ endTime: v[0][1].endTime,
61
+ url: urls
62
+ };
63
+ rets.push(item);
64
+ }
65
+ });
66
+ return rets;
67
+ }
22
68
  exports.cf = {
23
69
  name: "Codeforces",
24
70
  get() {
@@ -29,7 +75,7 @@ exports.cf = {
29
75
  throw new Error($.text());
30
76
  }
31
77
  const resList = response.data.result;
32
- return resList.map((res) => {
78
+ const ret = resList.map((res) => {
33
79
  return {
34
80
  ojName: exports.cf.name,
35
81
  name: res.name,
@@ -39,6 +85,7 @@ exports.cf = {
39
85
  url: `https://codeforces.com/contests/${res.id}`
40
86
  };
41
87
  }).filter(contest => contest.endTime >= new Date());
88
+ return mergeDuplicate(ret);
42
89
  });
43
90
  }
44
91
  };
@@ -1 +1 @@
1
- {"version":3,"file":"codeforces.js","sourceRoot":"","sources":["../../../src/lib/oj/codeforces.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,kDAA0B;AAC1B,qCAA+B;AAe/B,MAAM,UAAU,GAAyB;IACrC,EAAE,EAAE,YAAY;IAChB,IAAI,EAAE,MAAM;CACf,CAAC;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"}
1
+ {"version":3,"file":"codeforces.js","sourceRoot":"","sources":["../../../src/lib/oj/codeforces.ts"],"names":[],"mappings":"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"}
package/dist/server.js CHANGED
@@ -24,6 +24,7 @@ const commander_1 = require("commander");
24
24
  const package_json_1 = require("../package.json");
25
25
  const lodash_1 = __importDefault(require("lodash"));
26
26
  const fs_1 = require("fs");
27
+ const await_lock_1 = __importDefault(require("await-lock"));
27
28
  const app = (0, express_1.default)();
28
29
  function assertType(obj) {
29
30
  }
@@ -77,6 +78,7 @@ const contestsCache = {
77
78
  contests: [],
78
79
  lastUpdate: 0
79
80
  };
81
+ const lock = new await_lock_1.default();
80
82
  function icsPostProcess(value) {
81
83
  return value
82
84
  .replace("X-PUBLISHED-TTL:PT1H", "X-PUBLISHED-TTL:PT1H\r\nREFRESH-INTERVAL:PT1H")
@@ -93,14 +95,25 @@ function icsPostProcess(value) {
93
95
  "END:STANDARD\r\n" +
94
96
  "END:VTIMEZONE");
95
97
  }
96
- function getIcs(lang, ojs) {
98
+ function checkCache() {
97
99
  return __awaiter(this, void 0, void 0, function* () {
98
- if (contestsCache.lastUpdate < Date.now() - 1000 * 60 * 5) {
99
- const c = yield new _1.default({ days: -1 }).getContests();
100
- contestsCache.contests = lodash_1.default.uniqBy(contestsCache.contests.concat(c.running.concat(c.upcoming)), JSON.stringify);
101
- contestsCache.contests = contestsCache.contests.filter(c => c.endTime.getTime() - c.startTime.getTime() < 1000 * 60 * 60 * 24 * 2); // ignore too long contests
102
- contestsCache.lastUpdate = Date.now();
100
+ yield lock.acquireAsync();
101
+ try {
102
+ if (contestsCache.lastUpdate < Date.now() - 1000 * 60 * 5) {
103
+ const c = yield new _1.default({ days: -1 }).getContests();
104
+ contestsCache.contests = lodash_1.default.uniqBy(contestsCache.contests.concat(c.running.concat(c.upcoming)), JSON.stringify);
105
+ contestsCache.contests = contestsCache.contests.filter(c => c.endTime.getTime() - c.startTime.getTime() < 1000 * 60 * 60 * 24 * 2); // ignore too long contests
106
+ contestsCache.lastUpdate = Date.now();
107
+ }
108
+ }
109
+ finally {
110
+ lock.release();
103
111
  }
112
+ });
113
+ }
114
+ function getIcs(lang, ojs) {
115
+ return __awaiter(this, void 0, void 0, function* () {
116
+ yield checkCache();
104
117
  const contests = contestsCache.contests.filter(c => ojs.some(oj => c.ojName === oj_1.alloj[oj].name));
105
118
  const langDict = yield (0, locale_1.getLangDict)(lang);
106
119
  const events = contests.map((c) => {
@@ -114,10 +127,10 @@ function getIcs(lang, ojs) {
114
127
  start: (0, ics_1.convertTimestampToArray)(c.startTime.getTime(), "local"),
115
128
  startOutputType: "local",
116
129
  end: (0, ics_1.convertTimestampToArray)(c.endTime.getTime(), "local"),
130
+ endOutputType: "local",
117
131
  calName: "算法竞赛",
118
132
  productId: "-//StableAgOH//LSCT//CN",
119
133
  title: c.name,
120
- url: c.url,
121
134
  location: c.ojName,
122
135
  categories: [c.rule],
123
136
  uid: `${(0, crypto_1.randomUUID)()}@LSCT`,
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
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.4.0",
3
+ "version": "2.5.2",
4
4
  "description": "A tool to get information about the contests on each OJ",
5
5
  "keywords": [
6
6
  "cli",
@@ -35,6 +35,7 @@
35
35
  "start-s": "tsx src/server.ts"
36
36
  },
37
37
  "dependencies": {
38
+ "await-lock": "^2.2.2",
38
39
  "axios": "^0.27.2",
39
40
  "axios-retry": "^3.2.5",
40
41
  "cheerio": "^1.0.0-rc.11",
@@ -48,7 +49,7 @@
48
49
  "devDependencies": {
49
50
  "@types/express": "^4.17.13",
50
51
  "@types/lodash": "^4.14.182",
51
- "@types/node": "^17.0.41",
52
+ "@types/node": "^18.0.0",
52
53
  "@types/pangu": "^3.3.0",
53
54
  "@typescript-eslint/eslint-plugin": "^5.27.1",
54
55
  "@typescript-eslint/parser": "^5.27.1",