A Ruby LeetCode Client to help you download all your accepted leetcode submissions with problem description. Leetcode cookie is used for authentication.
- Ruby 3.1.1
- Desire to automate the boring stuff
gem install leetcoderAfter installing the gem, follow these steps:
-
Sign in to leetcode.com from any browser
-
Copy the
cookievalue of a leetcode request using the browser network tab -
Save your cookie by running
leetcoder --cookiefrom terminal -
Run
leetcoder --downloadto start downloading.
leetcoder --cookie # prompt you to save the leetcode cookie
leetcoder --download all --folder ./ # download all accepted submissions in current folder> leetcoder --help
Usage: leetcoder [command]
* indicates default value
commands:
-d, --download [TYPE] Specify number of accepted submission to download per problem (*one, all)
-c, --cookie Input Leetcode Cookie
-f, --folder FOLDER_PATH Specify download folder location (* <current_directory>/leetcode)
-v, --version Show version
-h, --help Show available commandsThis is the most convenient and recommended way to backup your submissions using the app.
-
Create a new repository in github
-
Set your leetcode cookie under
Repository Secretswith nameLEETCODE_COOKIEhttps://github.com/<username>/<repo_name>/settings/secrets/actions -
Download and commit this leetcoder.yml file inside
.github/wrokflows/folder in your repo.
This will automatically download and commit the downloaded submissions every week. You can customize the frequency using the cron syntax inside the yml file.
Example: https://github.com/imamrb/leetcode-solutions
If you don't have ruby setup locally, you can run the app through docker.
-
Open terminal and cd to the directory where you want to download the submissions.
-
Run
docker run -it -v `pwd`:`pwd` -w `pwd` imamrb/leetcoder:latestThis will run the leetcoder docker image and mount your current directory to container working directory. You can now continue using the app from here.
The downloaded submissions will be saved to your current directory.
Caveat: You will need to provide the leetcode cookie every time since the stored configuration will be lost when you exit from the container.
Initially, I built a simple script to backup my submissions as I did not find anything similar written in Ruby. Later decided to release this as a gem since it might be useful for others. Also it was fun to built something for own use with Ruby. <3
If you find this useful, give it a star. Feel free to create an issue if something doesn't work for you.
Imam Hossain
Email: imam.swe@gmail.com


