7 releases

0.1.7 Mar 2, 2024
0.1.6 Feb 20, 2024
0.1.2 Jan 8, 2024
0.1.1 Dec 31, 2023

#455 in Hardware support

Download history 1/week @ 2023-12-25 50/week @ 2024-01-08 45/week @ 2024-01-15 16/week @ 2024-01-29 126/week @ 2024-02-19 141/week @ 2024-02-26 24/week @ 2024-03-04 53/week @ 2024-03-11 8/week @ 2024-03-18 123/week @ 2024-04-01

186 downloads per month
Used in 3 crates (via lcode-config)

Apache-2.0

20KB
308 lines

Brush leetcode under the terminal

🪶Features

  • Open the editor of your choice for editing.
  • Filter based on the category of the question.
  • Perform a fuzzy search.
  • Test and submit the code.
  • Modify the test case.
  • Automatically get cookies to eliminate the need for manual copying from the browser, power by decrypt-cookies.

💄Install

dependencies:

  • gcc
  • libsecret (Linux Optional)
  • libdbus (Linux notify)
  • mdcat (render markdown)

  • use the newest nightly toolchain
rustup default nightly
cargo install --locked --force lcode

🔧Usage

Generate configuration, manual modification of the configuration is also possible, and it will be automatically generated at runtime. Without -c, it will be generated in English.

lcode gencon -c

Synchronize basic data first.

lcode S

View the documentation for assistance.

lcode -h

Begin selecting a question.

lcode fzy <edit>

📼Videos

https://github.com/saying121/leetcode-cn-en-cli/assets/74663483/57a633e5-6bae-4816-a224-d7d61d2141af

https://github.com/saying121/leetcode-cn-en-cli/assets/74663483/7917a65c-b7a9-4305-b87f-5d2ddc8cb760

filter en

⚙️Configuration

Cookies (Important)

[!First, login leetcode in browser for generate cookies]

General you just need filled ~/.config/leetcode-cn-en-cli/config.toml

browser = "edge" # `chrome`, `edge`, `firefox`, `librewolf` etc.
# Not casesensitive, `eDgE` also ok.

The detail: decrypt-cookies

~/.config/leetcode-cn-en-cli/cookies.toml

csrf = ""
session = ""

The config.toml field browser can fill in

If use the section,be careful not to clear cookies when closing the browser.

[cookies] section

  • If the two subfields are not empty,use the content filled by the user. And not use other method to get cookies。

    • Fill in manually:

      Press F12 on the browser's leetcode.com/com page, Find the Cookie field, copy the csrftoken=<$content>; and LEETCODE_SESSION=<$content>; copy the $content into the configuration.

  • If user filled browser , will try to use the browser to get cookies.

  • If neither of the above two items is filled in, and then use this order firefox -> librewolf -> chrome -> edge -> chromium -> brave -> Yandex -> Vivaldi -> Opera -> OperaGX -> CocCoc try to get cookies.

Keymap

keymap

LANGS

langs

CONFIG

The configuration located

  • Linux: ~/.config/leetcode-cn-en-cli/config.toml
  • macos: ~/.config/leetcode-cn-en-cli/config.toml
  • Windows: |C:\Users\Alice\AppData\Roaming

The code default located

  • Linux: $HOME/.local/share/leetcode-cn-en-cli/
  • macOS: $HOME/Library/Application Support/leetcode-cn-en-cli
  • Windows: C:\Users\Alice\AppData\Local\leetcode-cn-en-cli

default: default

translate = false
column = 4
num_sublist = 10
page_size = 25
editor = ["vim"]
lang = "rust"
code_dir = "/home/user/.local/share/leetcode-cn-en-cli"
browser = ""

url_suffix = "com"

Here are the explanations for each field

Checkout the Cookies (Important) section above.

browser = false

Fill in false or true, default is false. If true is chosen, the translated content will be used to display the question details.

translate = false

When retrieving the submissionlist, how many columns should be displayed.

column = 4

How many recent entries of the submissionlist information should be displayed.

num_sublist = 10

How many questions should be displayed at once when interactively selecting a question.

page_size = 25

Fill in your editor, it will attempt to retrieve it from the environment variables EDITOR and VISUAL, otherwise it will default to vim.

editor = ["vim"]

You can add additional parameters at the end.

editor = ["vim", "--noplugin"]

Set your selected programming language.

lang = "rust"

Set the location for storing code and test cases.

code_dir = "/home/user/.local/share/leetcode-cn-en-cli"

You can also write it like this, starting with ~

code_dir = "~/.local/share/leetcode-cn-en-cli"

Fill in com or cn, for set leetcode.com or leetcode.cn.

url_suffix = "com"

For better rust coding. It will add a Cargo.toml file

cargo_integr = true

Fuzzy search tui and cli implement is same,in cli paid only is true, in tui also can input true/P.O.: tru for filter.

👣 The User Infos

You can ckeckout the infos/tab3 in tui for ensure cookies is valid.

Dependencies

~1.8–9MB
~54K SLoC