Skip to content

Commit dba1e98

Browse files
committed
Fix issue with merging rankings of US & CN regions
1 parent 06a5d18 commit dba1e98

File tree

2 files changed

+10
-9
lines changed

2 files changed

+10
-9
lines changed

services/contests.js

+9-8
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ const Contest = require("../models/contest");
33
const { IsLatestContest } = require("../helpers");
44
const { BASE_CN_URL, BASE_URL } = require("./users");
55

6-
const getContestParticipantsRankings = async (contestSlug, dataRegion) => {
6+
const getContestParticipantsRankings = async (contest, dataRegion) => {
7+
const contestSlug = contest._id;
78
console.log(`Fetching participant's rankings for ${dataRegion} region...`);
89
const baseUrl = dataRegion === "CN" ? BASE_CN_URL : BASE_URL;
910
let resp = await fetch(
@@ -13,7 +14,7 @@ const getContestParticipantsRankings = async (contestSlug, dataRegion) => {
1314
let pages = Math.ceil(resp.user_num / 25);
1415
let all_rankings = [];
1516
let failed = [];
16-
let lastPage = Math.MAX_SAFE_INTEGER;
17+
let lastPage = Number.MAX_SAFE_INTEGER;
1718
const fetchPageRankings = async (
1819
pageNo,
1920
retries,
@@ -47,6 +48,7 @@ const getContestParticipantsRankings = async (contestSlug, dataRegion) => {
4748
`Fetched rankings (${contestSlug} page: ${pageNo})`,
4849
);
4950
} catch (err) {
51+
console.error(err);
5052
if (retries > 0) {
5153
await fetchPageRankings(pageNo, retries - 1);
5254
} else if (throwError) {
@@ -58,14 +60,13 @@ const getContestParticipantsRankings = async (contestSlug, dataRegion) => {
5860
};
5961
const limit = 5;
6062
const maxRetries = 5;
61-
for (let i = 0; i < pages; i += limit) {
63+
for (let i = 0; i < pages && i < lastPage; i += limit) {
6264
let promises = [];
63-
for (let j = 0; j < limit && i + j < pages; j++) {
65+
for (let j = 0; j < limit && i + j < pages && i + j < lastPage; j++) {
6466
promises.push(fetchPageRankings(i + j + 1, maxRetries));
6567
}
6668
await Promise.all(promises);
6769
}
68-
6970
for (let i = 0; i < failed.length; i++) {
7071
await fetchPageRankings(failed[i], maxRetries, true);
7172
}
@@ -88,7 +89,7 @@ const mergeRankings = (us_rankings, cn_rankings) => {
8889
} else if (j == totalCnRankings) {
8990
currRanking = us_rankings[i++];
9091
} else {
91-
if (us_rankings[i].score > cn_rankings[j].score || (us_rankings[i].score === cn_rankings[i].score && us_rankings[i].finish_time <= cn_rankings[j].finish_time)) {
92+
if (us_rankings[i].score > cn_rankings[j].score || (us_rankings[i].score === cn_rankings[j].score && us_rankings[i].finish_time <= cn_rankings[j].finish_time)) {
9293
currRanking = us_rankings[i++];
9394
} else {
9495
currRanking = cn_rankings[j++];
@@ -112,8 +113,8 @@ const fetchContestRankings = async function (contestSlug) {
112113
contest.rankings = [];
113114
console.log(`fetching ${contestSlug} ...`);
114115

115-
us_rankings = await getContestParticipantsRankings(contestSlug, "US");
116-
cn_rankings = await getContestParticipantsRankings(contestSlug, "CN");
116+
us_rankings = await getContestParticipantsRankings(contest, "US");
117+
cn_rankings = await getContestParticipantsRankings(contest, "CN");
117118

118119
// Merged rankings sorted by rank
119120
all_rankings = mergeRankings(us_rankings, cn_rankings).map((ranking) => {

views/layouts/layout.ejs

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
<title><%= title %> </title>
1010
<meta name="description" content="Get accurate rating predictions for leetcode contests right after the completion of contest.">
1111
<meta name="keywords" content="Leetcode Rating Predictor,LC Predictor,Rating Predictor,Leetcode Contests,Leetcode,Leetcode rating,Chrome Extension">
12+
<meta name="google-adsense-account" content="ca-pub-7334877242717971">
1213
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.min.css" rel="stylesheet"
1314
integrity="sha384-+0n0xVW2eSR5OomGNYDnhzAbDsOXxcvSN1TPprVMTNDbiYZCxYbOOl7+AMvyTG2x" crossorigin="anonymous">
1415
<link rel="stylesheet" href="/stylesheets/main.css">
@@ -20,7 +21,6 @@
2021
<link rel="manifest" href="/site.webmanifest">
2122
<!-- Global site tag (gtag.js) - Google Analytics -->
2223
<script async src="https://www.googletagmanager.com/gtag/js?id=G-RYPSMF1X05"></script>
23-
<script data-ad-client="ca-pub-7334877242717971" async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
2424
<script>
2525
window.dataLayer = window.dataLayer || [];
2626
function gtag(){dataLayer.push(arguments);}

0 commit comments

Comments
 (0)