Dup4 / Leetcode-API-TS

Leetcode API written with TypeScript, fully support async.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Leetcode API TS

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 Lint

Install

  • npm: npm i leetcode-api-typescript
  • yarn: yarn add leetcode-api-typescript
  • pnpm: pnpm i leetcode-api-typescript

Usage

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

    // Login
    const leetcode: Leetcode = await Leetcode.build(
        "your username",
        "your 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.sampleTestCase;
    const codeSnippets: Array<codeSnippets> = problem.codeSnippets;

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

    // Get All problems' base information
    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

  • cp .env.example .env
  • Update your leetcode account in .env
  • pnpm test.

Contribute

  • start: pnpm start
  • build: pnpm build
  • lint: pnpm lint

License

MIT.

About

Leetcode API written with TypeScript, fully support async.

License:MIT License


Languages

Language:TypeScript 99.7%Language:Shell 0.3%