Skip to content
This repository has been archived by the owner on Feb 2, 2022. It is now read-only.
/ leetcode-api Public archive

Leetcode API written with TypeScript, fully support async.

Notifications You must be signed in to change notification settings

realvect0r/leetcode-api

Repository files navigation

Leetcode API

Leetcode API written with TypeScript, fully support async.

Thanks for the excellent work for leetcode-cli project! ❤️

GitHub package.json dynamic GitHub package.json version Build Status

Install

  • npm: npm i leetcode-api-ts
  • yarn: yarn add leetcode-api-ts

Usage

(async (): Promise<void> => {

    // Login 
    const leetcode: Leetcode = await Leetcode.build(
        "your username",
        "yout password",
        EndPoint.US     // or EndPoint.CN
    );

    // Get a special problem
    const problem: Problem = new Problem("two-sum");

    // Fetch more properties of this problem
    await problem.detail();

    // Show problem content, test case, code snippet etc
    const content: string = problem.content;
    const testcase: string = problem.simpleTestCase;
    const codeSnippets: Array<any> = problem.codeSnippets;

    // submit your answer
    problem.submit("your code language", "your code here");

    // Get All problems' base infomation
    const problems: Array<Problem> = await leetcode.getAllProblems();

    // Filter problems by status, difficulty, etc
    const acceptedProblems: Array<Problem> = problems.filter((p: Problem) => {
        return p.status === ProblemStatus.Accept;
    });

    acceptedProblems.forEach(async (problem: Problem) => {

        // Get all submissions
        const submissions: Array<Submission> = await problem.getSubmissions();

        // Filter submission which lang = cpp
        const cppSubmissions: Array<Submission> = submissions.filter((s: Submission) => {
            return s.lang === "cpp";
        });

        submissions.forEach((submission: Submission) => {

            // Get submission's status
            const code: string = await submission.detail();

            // Then you can handle them casually
        });
    });
})();

Tips

I especially recommend you fetch base properties first because of the large number of problems. Then call Problem.detail() or Submission.detail() fetch all properties of them.

TODO

  • Support Leetcode CN. [2019-08-24]
  • Fetch more user profile.
  • Fully parse submission status type.
  • Support problems filter by categories.
  • Support problems filter by companies.

Test

  • mv .env.example .env
  • Update your leetcode account in .env
  • yarn test.

Contribute

  • start: yarn start
  • build: yarn build
  • lint: yarn lint

License

MIT.

About

Leetcode API written with TypeScript, fully support async.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published