1.2.3 • Published 2 months ago
leetcode-query v1.2.3
LeetCode Query
The API to get user profiles, submissions, and problems on LeetCode, with highly customizable GraphQL API and Rate Limiter.
Features
Without Authentication
- Get Public User Profile.
- Get User's Recent Submissions. (Public, Max: 20)
- Get User Contest Records. (thanks to @laporchen)
- Get All Problem List, or with filter of difficulty and tags.
- Get Problem Detail.
- Get Daily Challenge.
Authenticated
- Get All Submissions of The Authenticated User.
- Get Submission Details, including the code and percentiles.
Other
- Customable GraphQL Query API.
- Customable Rate Limiter. (Default: 20 req / 10 sec)
- Customable Fetcher.
Examples
Get An User's Public Profile
Includes recent submissions and posts.
import { LeetCode } from "leetcode-query";
const leetcode = new LeetCode();
const user = await leetcode.user("username");
Get All Of Your Submissions
import { LeetCode, Credential } from "leetcode-query";
const credential = new Credential();
await credential.init("YOUR-LEETCODE-SESSION-COOKIE");
const leetcode = new LeetCode(credential);
console.log(await leetcode.submissions(100, 0));
Use Custom Fetcher
You can use your own fetcher, for example, fetch through a real browser.
import { LeetCode, fetcher } from "leetcode-query";
import { chromium } from "playwright-extra";
import stealth from "puppeteer-extra-plugin-stealth";
// setup browser
const _browser = chromium.use(stealth()).launch();
const _page = _browser
.then((browser) => browser.newPage())
.then(async (page) => {
await page.goto("https://leetcode.com");
return page;
});
// use a custom fetcher
fetcher.set(async (...args) => {
const page = await _page;
const res = await page.evaluate(async (args) => {
const res = await fetch(...args);
return {
body: await res.text(),
status: res.status,
statusText: res.statusText,
headers: Object.fromEntries(res.headers),
};
}, args);
return new Response(res.body, res);
});
// use as normal
const lc = new LeetCode();
const daily = await lc.daily();
console.log(daily);
await _browser.then((browser) => browser.close());
Documentation
Documentation for this package is available on https://jacoblincool.github.io/LeetCode-Query/.
Links
- NPM Package: https://www.npmjs.com/package/leetcode-query
- GitHub Repository: https://github.com/JacobLinCool/LeetCode-Query/
1.2.0
2 months ago
1.2.3
2 months ago
1.2.2
2 months ago
1.2.1
2 months ago
1.1.0
2 months ago
1.0.1
2 months ago
1.0.0
2 months ago
0.2.7
1 year ago
0.2.6
1 year ago
0.2.5
2 years ago
0.1.0
2 years ago
0.2.1
2 years ago
0.1.2
2 years ago
0.2.0
2 years ago
0.1.1
2 years ago
0.0.9
2 years ago
0.2.3
2 years ago
0.2.2
2 years ago
0.1.3
2 years ago
0.2.4
2 years ago
0.0.8
2 years ago
0.0.7
2 years ago
0.0.5
2 years ago
0.0.6
2 years ago
0.0.4
2 years ago
0.0.3
2 years ago
0.0.2
2 years ago
0.0.1
2 years ago