Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jacoblincool/leetcode-query
A LeetCode Query API for TypeScript & JavaScript.
https://github.com/jacoblincool/leetcode-query
api leetcode query
Last synced: 1 day ago
JSON representation
A LeetCode Query API for TypeScript & JavaScript.
- Host: GitHub
- URL: https://github.com/jacoblincool/leetcode-query
- Owner: JacobLinCool
- License: mit
- Created: 2021-12-14T17:17:30.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2024-10-29T17:26:14.000Z (3 months ago)
- Last Synced: 2024-10-29T18:49:25.338Z (3 months ago)
- Topics: api, leetcode, query
- Language: TypeScript
- Homepage: https://JacobLinCool.github.io/LeetCode-Query/
- Size: 1.42 MB
- Stars: 83
- Watchers: 4
- Forks: 13
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# LeetCode Query
The API to get user profiles, submissions, and problems on LeetCode, with highly customizable GraphQL API and Rate Limiter.
## Features
### Without Authentication
- [x] Get Public User Profile.
- [x] Get User's Recent Submissions. (Public, Max: 20)
- [x] Get User Contest Records. (thanks to [@laporchen](https://github.com/laporchen))
- [x] Get All Problem List, or with filter of difficulty and tags.
- [x] Get Problem Detail.
- [x] Get Daily Challenge.### Authenticated
- [x] Get All Submissions of The Authenticated User.
- [x] Get Submission Details, including the code and percentiles.### Other
- [x] Customable GraphQL Query API.
- [x] Customable Rate Limiter. (Default: 20 req / 10 sec)
- [x] Customable Fetcher.## Examples
### Get An User's Public Profile
Includes recent submissions and posts.
```typescript
import { LeetCode } from "leetcode-query";const leetcode = new LeetCode();
const user = await leetcode.user("username");
```### Get All Of Your Submissions
```typescript
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.
```typescript
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 .
## Links
- NPM Package:
- GitHub Repository: