feat: create template with problem url and code snippet
This commit is contained in:
parent
8a95ea80a7
commit
ec5559f877
3 changed files with 70 additions and 9 deletions
37
query-problem-set.sh
Normal file
37
query-problem-set.sh
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
query() {
|
||||
page=$1
|
||||
offset=$((page * 100))
|
||||
|
||||
# shellcheck disable=SC2016
|
||||
curl -sSLf 'https://leetcode.com/graphql/' \
|
||||
--compressed \
|
||||
-H 'content-type: application/json' \
|
||||
--data-raw '{
|
||||
"query": "\n query problemsetQuestionListV2($filters: QuestionFilterInput, $limit: Int, $searchKeyword: String, $skip: Int, $sortBy: QuestionSortByInput, $categorySlug: String) {\n problemsetQuestionListV2(\n filters: $filters\n limit: $limit\n searchKeyword: $searchKeyword\n skip: $skip\n sortBy: $sortBy\n categorySlug: $categorySlug\n ) {\n questions {\n id\n titleSlug\n title\n translatedTitle\n questionFrontendId\n paidOnly\n difficulty\n topicTags {\n name\n slug\n nameTranslated\n }\n status\n isInMyFavorites\n frequency\n acRate\n contestPoint\n }\n totalLength\n finishedLength\n hasMore\n }\n}\n ",
|
||||
"variables": {
|
||||
"skip": '"$offset"',
|
||||
"limit": 100,
|
||||
"categorySlug": "all-code-essentials",
|
||||
"filters": {"filterCombineType":"ALL","statusFilter":{"questionStatuses":[],"operator":"IS"},"difficultyFilter":{"difficulties":[],"operator":"IS"},"languageFilter":{"languageSlugs":[],"operator":"IS"},"topicFilter":{"topicSlugs":[],"operator":"IS"},"acceptanceFilter":{},"frequencyFilter":{},"frontendIdFilter":{},"lastSubmittedFilter":{},"publishedFilter":{},"companyFilter":{"companySlugs":[],"operator":"IS"},"positionFilter":{"positionSlugs":[],"operator":"IS"},"positionLevelFilter":{"positionLevelSlugs":[],"operator":"IS"},"contestPointFilter":{"contestPoints":[],"operator":"IS"},"premiumFilter":{"premiumStatus":[],"operator":"IS"}},
|
||||
"searchKeyword": "",
|
||||
"sortBy": {"sortField":"CUSTOM","sortOrder":"ASCENDING"},
|
||||
"filtersV2": {"filterCombineType":"ALL","statusFilter":{"questionStatuses":[],"operator":"IS"},"difficultyFilter":{"difficulties":[],"operator":"IS"},"languageFilter":{"languageSlugs":[],"operator":"IS"},"topicFilter":{"topicSlugs":[],"operator":"IS"},"acceptanceFilter":{},"frequencyFilter":{},"frontendIdFilter":{},"lastSubmittedFilter":{},"publishedFilter":{},"companyFilter":{"companySlugs":[],"operator":"IS"},"positionFilter":{"positionSlugs":[],"operator":"IS"},"positionLevelFilter":{"positionLevelSlugs":[],"operator":"IS"},"contestPointFilter":{"contestPoints":[],"operator":"IS"},"premiumFilter":{"premiumStatus":[],"operator":"IS"}}
|
||||
},
|
||||
"operationName": "problemsetQuestionListV2"
|
||||
}' | jq -c '.data.problemsetQuestionListV2.questions[] | { id, title, titleSlug, difficulty, paidOnly, tags: [ .topicTags[] | .slug ] }'
|
||||
}
|
||||
|
||||
page=0
|
||||
while true; do
|
||||
echo -ne " Querying page $((page + 1)) ...\r" >&2
|
||||
content=$(query $page)
|
||||
lines=$(echo "$content" | wc -l)
|
||||
echo "$content"
|
||||
|
||||
[ "$lines" -lt 100 ] && break
|
||||
page=$((page + 1))
|
||||
done | jq -s -c 'sort_by(.id) | .[]'
|
||||
echo >&2
|
||||
Loading…
Add table
Add a link
Reference in a new issue