Skip to content

Commit f353fe9

Browse files
committed
update javascript
1 parent 4038da6 commit f353fe9

File tree

3 files changed

+133
-0
lines changed

3 files changed

+133
-0
lines changed

app.js

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
"use strict"
2+
import Axios from "axios"
3+
4+
class $Leetcode {
5+
6+
//实例预设值
7+
name = `Leetcode Api`
8+
host = `https://leetcode-cn.com/`
9+
GitHub_Link = `https://github.com/NeserCode/Leetcode-Api`
10+
11+
//实例化对象
12+
constructor() {
13+
console.log(`🙇‍ 感谢使用 ${this.name} \n🔗 Github项目地址 ${this.GitHub_Link} \n⭐ 欢迎 star issue `);
14+
}
15+
16+
//获取题库
17+
getQuestionSet = async (categorySlug, skip, limit) => {
18+
var config = {
19+
method: 'post',
20+
url: `${this.host}graphql/`,
21+
data: JSON.stringify({
22+
"query": "\n query problemsetQuestionList($categorySlug: String, $limit: Int, $skip: Int, $filters: QuestionListFilterInput) {\n problemsetQuestionList(\n categorySlug: $categorySlug\n limit: $limit\n skip: $skip\n filters: $filters\n ) {\n total\n questions {\n acRate\n difficulty\n solutionNum\n title\n titleCn\n titleSlug\n }\n }\n}\n",
23+
"variables": {
24+
"categorySlug": categorySlug ?? "",
25+
"skip": skip ?? 0,
26+
"limit": limit ?? 30,
27+
"filters": {}
28+
}
29+
})
30+
};
31+
return Axios(config)
32+
}
33+
34+
//获取题目详情
35+
getQuestion = async (slug) => {
36+
var config = {
37+
method: 'post',
38+
url: `${this.host}graphql/`,
39+
data: JSON.stringify({
40+
"operationName": "questionData",
41+
"variables": {
42+
"titleSlug": slug
43+
},
44+
"query": "query questionData($titleSlug: String!) {\n question(titleSlug: $titleSlug) {\n questionId\n questionFrontendId\n categoryTitle\n boundTopicId\n title\n titleSlug\n content\n translatedTitle\n translatedContent\n isPaidOnly\n difficulty\n likes\n dislikes\n isLiked\n similarQuestions\n contributors {\n username\n profileUrl\n avatarUrl\n __typename\n }\n langToValidPlayground\n topicTags {\n name\n slug\n translatedName\n __typename\n }\n companyTagStats\n codeSnippets {\n lang\n langSlug\n code\n __typename\n }\n stats\n hints\n solution {\n id\n canSeeDetail\n __typename\n }\n status\n sampleTestCase\n metaData\n judgerAvailable\n judgeType\n mysqlSchemas\n enableRunCode\n envInfo\n book {\n id\n bookName\n pressName\n source\n shortDescription\n fullDescription\n bookImgUrl\n pressImgUrl\n productUrl\n __typename\n }\n isSubscribed\n isDailyQuestion\n dailyRecordStatus\n editorType\n ugcQuestionId\n style\n exampleTestcases\n __typename\n }\n}\n"
45+
})
46+
};
47+
return Axios(config)
48+
}
49+
50+
//获取题目状态(仅状态)
51+
getQuestionStatus = async () => {
52+
var config = {
53+
method: 'post',
54+
url: `${this.host}graphql/`,
55+
data: JSON.stringify({
56+
"operationName": "allQuestionsStatuses",
57+
"variables": {},
58+
"query": "query allQuestionsStatuses {\n allQuestionsBeta {\n ...questionStatusFields\n __typename\n }\n}\n\nfragment questionStatusFields on QuestionNode {\n questionId\n status\n __typename\n}\n"
59+
})
60+
};
61+
return Axios(config)
62+
}
63+
64+
//获取对应提交ID的处理详情
65+
getSubumissionStatus = (submissionID) => {
66+
var config = {
67+
method: 'get',
68+
url: `${this.host}submissions/detail/${submissionID}/check/`,
69+
};
70+
return Axios(config)
71+
}
72+
73+
//获取用户状态
74+
getUserStatus = () => {
75+
var config = {
76+
method: 'post',
77+
url: `${this.host}graphql/`,
78+
data: JSON.stringify({
79+
"query": "\n query globalData {\n userStatus {\n isSignedIn\n isPremium\n username\n realName\n avatar\n userSlug\n isAdmin\n useTranslation\n premiumExpiredAt\n isTranslator\n isSuperuser\n isPhoneVerified\n isVerified\n }\n jobsMyCompany {\n nameSlug\n }\n commonNojPermissionTypes\n}\n ",
80+
"variables": {}
81+
})
82+
};
83+
return Axios(config)
84+
}
85+
86+
//获取题目提交后的ID ! 需要伪造Referer
87+
getSubmissionID = (question_id, lang, typed_code, questionSlug) => {
88+
// Electron 中伪造 referer 的方法示例:
89+
90+
// session.defaultSession.webRequest.onBeforeSendHeaders({ urls: [`${this.host}problems/*`] }, (details, callback) => {
91+
// details.requestHeaders['Referer'] = `${this.host}problems/${questionSlug}/submissions/`
92+
// callback({ cancel: false, requestHeaders: details.requestHeaders })
93+
// })
94+
95+
var config = {
96+
method: 'post',
97+
url: `${this.host}problems/${questionSlug}/submit/`,
98+
data: JSON.stringify({
99+
"question_id": question_id,
100+
"lang": lang,
101+
"typed_code": typed_code,
102+
"test_mode": false,
103+
"test_judger": "",
104+
"questionSlug": questionSlug
105+
})
106+
};
107+
return Axios(config)
108+
}
109+
}
110+
111+
export default $Leetcode

package-lock.json

Lines changed: 19 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"type": "module"
3+
}

0 commit comments

Comments
 (0)