Skip to main content

Python script to export your LeetCode solutions

Project description

LeetCode Export

Python script and Docker image to export your LeetCode submissions.

DISCLAIMER

The problems hosted on leetcode.com are intellectual propriety of LeetCode LLC unless specified otherwise. DO NOT UPLOAD THE DESCRIPTION OF LEETCODE PROBLEMS ON GITHUB OR ON ANY OTHER WEBSITE or you might receive ad DMCA Takedown notice.

Before using this script read the LeetCode Terms of Service.

How it works

This script uses LeetCode REST and GraphQL APIs to download all your LeetCode submitted solutions.

Before running the script, make sure that python3 is installed in your system.

If you prefer, you can use the Docker image to download your submissions. For further instructions read the section Docker Image here.

How to use

To use leetcode-export you can either download it from pypi.org or you can clone this repository.

Download from pypi.org

Run pip install leetcode-export to install leetcode-export, you might have to use pip3 of your system. To use the script run leetcode-export, optionally supply the script arguments, for more instructions read the section script arguments here.

Clone the repository

Clone this repository:

git clone https://github.com/NeverMendel/leetcode-export

Install all the needed dependencies:

pip install -r requirements.txt

You can either install leetcode-export in your system or just execute it:

  • To install it run:

    pip install .
    
  • To execute the script without installing it:

    python -m leetcode_export --folder submissions
    

Docker Image

Download the docker image from the DockerHub repository:

docker pull nevermendel/leetcode-export

Download all your LeetCode submission in the current folder:

docker run -it -v $(pwd):/usr/app/out --rm nevermendel/leetcode-export

Login

To download your submissions you need to log in your LeetCode account by providing the cookies. To log in using cookies, get them from an existing session.

Steps required:

  • Login in to LeetCode in the web browser
  • Open the browser's Dev Tool
  • Click on the Network tab
  • Copy the cookie header that can be found under Request Headers in any leetcode.com request.

You can insert the cookie string that you have just copied in the interactive menu (recommended) or you can pass it as a program argument when lunching the script, like in the following example:

python leetcode-export --cookies {COOKIES}

Script arguments

The script accepts the following arguments:

usage: leetcode-export [-h] [--cookies COOKIES] [--folder FOLDER]
                       [--problem-filename PROBLEM_FILENAME]
                       [--problem-content PROBLEM_CONTENT]
                       [--submission-filename SUBMISSION_FILENAME] [-v] [-vv]
                       [-V]

Export LeetCode solutions

optional arguments:
  -h, --help            show this help message and exit
  --cookies COOKIES     set LeetCode cookies
  --folder FOLDER       set output folder
  --problem-filename PROBLEM_FILENAME
                        problem description filename format
  --problem-content PROBLEM_CONTENT
                        problem description content format
  --submission-filename SUBMISSION_FILENAME
                        submission filename format
  -v, --verbose         enable verbose logging details
  -vv, --extra-verbose  enable more verbose logging details
  -V, --version         show program's version number and exit

Using the interactive menu is preferred as it will avoid storing your cookies in the command history.

Filename template arguments

Problem description filename template

To change the format of the problem description filename, you can provide a template as a string when lunching the script.

python leetcode-export --problem-filename PROBLEM_FILENAME

The template can contain parameters that will later be replaced based on the LeetCode problem information. The available parameters are the following:

question_id: int
difficulty: str
stats: str
title: str
title_slug: str

Default problem description filename template: ${question_id} - ${title_slug}.html

Problem description content template

To change the format of the problem description content, you can provide a template as a string when lunching the script.

python leetcode-export --problem-content PROBLEM_CONTENT

The template can contain parameters that will later be replaced based on the LeetCode problem information. The available parameters are the ones used in problem description filename template plus:

content: str

Default problem description content template: <h1>${question_id} - ${title}</h1><h2>Difficulty: ${difficulty} - <a href="https://leetcode.com/problems/${title_slug}/">${title_slug}</a></h2>${content}

Submission filename template

To change the format of the submission filename, you can provide a template as a string when lunching the script.

python leetcode-export --submission-filename SUBMISSION_FILENAME

The template can contain parameters that will later be replaced based on your submission information. The available parameters are the following:

id: int
lang: str
time: str
timestamp: int
status_display: str
runtime: str
url: str
is_pending: str
title: str
memory: str
code: str
compare_result: str
title_slug: str
date_formatted: str
extension: str

Default submission filename template: ${date_formatted} - ${status_display} - runtime ${runtime} - memory ${memory}.${extension}

Special mentions

Thanks to skygragon for developing leetcode-cli, which I used as documentation for LeetCode APIs. The license of leetcode-cli is available here.

License

MIT License

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

leetcode-export-2.0.0.tar.gz (10.9 kB view hashes)

Uploaded Source

Built Distributions

leetcode_export-2.0.0-py3.10.egg (19.0 kB view hashes)

Uploaded Source

leetcode_export-2.0.0-py3-none-any.whl (10.9 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page