We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
可以根据题目获取相关信息,展示卡片,例如 <LinkCard source="leetcode" id="median-of-two-sorted-arrays" />
<LinkCard source="leetcode" id="median-of-two-sorted-arrays" />
我大概参考源码的数据获取函数写了一个函数,但是开发环境不太好搭建,可以麻烦大佬测试加上去嘛。
const fetchLeetCodeQuestionData: FetchObject = { isValid: (id) => { // 检查 titleSlug 是否是一个有效的字符串 return typeof id === 'string' && id.length > 0; }, fetch: async (id, setCardInfo, setFullUrl) => { try { // 第一个请求:获取题目基本信息 const questionTitleResponse = await fetchLeetCodeApi({ query: ` query questionTitle($titleSlug: String!) { question(titleSlug: $titleSlug) { questionId title isPaidOnly difficulty likes dislikes categoryTitle } } `, variables: { titleSlug: id }, }); const questionTitleData = camelcaseKeys(questionTitleResponse.data.question); // 第二个请求:获取题目翻译 const translationResponse = await fetchLeetCodeApi({ query: ` query questionTranslations($titleSlug: String!) { question(titleSlug: $titleSlug) { translatedTitle translatedContent } } `, variables: { titleSlug: id }, }); const translationData = camelcaseKeys(translationResponse.data.question); // 第三个请求:获取题目标签 const tagsResponse = await fetchLeetCodeApi({ query: ` query singleQuestionTopicTags($titleSlug: String!) { question(titleSlug: $titleSlug) { topicTags { name translatedName } } } `, variables: { titleSlug: id }, }); const tagsData = camelcaseKeys(tagsResponse.data.question); // 设置卡片信息 setCardInfo({ title: ( <span className="flex items-center gap-2"> <span className="flex-1">{translationData.translatedTitle || questionTitleData.title}</span> <span className="shrink-0 self-end justify-self-end"> {questionTitleData.likes > 0 && ( <span className="inline-flex shrink-0 items-center gap-1 self-center text-sm text-orange-400 dark:text-yellow-500"> <i className="icon-[mingcute--thumb-up-line]" /> <span className="font-sans font-medium"> {questionTitleData.likes} </span> </span> )} </span> </span> ), desc: tagsData.topicTags.map(tag => tag.translatedName || tag.name).join(', '), image: "https://upload.wikimedia.org/wikipedia/commons/1/19/LeetCode_logo_black.png", color: getDifficultyColor(questionTitleData.difficulty), }); setFullUrl(`https://leetcode.cn/problems/${id}/`); } catch (err) { console.error('Error fetching LeetCode question data:', err); throw err; } }, }; // 通用的 GraphQL 请求函数 async function fetchLeetCodeApi(requestBody) { const response = await fetch('https://leetcode.cn/graphql/', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify(requestBody), }); if (!response.ok) { throw new Error('Failed to fetch data from LeetCode API'); } return await response.json(); } // 映射难度到颜色的函数 function getDifficultyColor(difficulty) { switch (difficulty) { case 'Easy': return '#00BFA5'; case 'Medium': return '#FFA726'; case 'Hard': return '#F44336'; default: return '#757575'; } }
The text was updated successfully, but these errors were encountered:
你可以使用你自己的 api 进行测试,PR welcome
Sorry, something went wrong.
PR 已经提交,请大佬 review and decide merge
Merged
No branches or pull requests
Feature description
可以根据题目获取相关信息,展示卡片,例如
<LinkCard source="leetcode" id="median-of-two-sorted-arrays" />
我大概参考源码的数据获取函数写了一个函数,但是开发环境不太好搭建,可以麻烦大佬测试加上去嘛。
Validations
The text was updated successfully, but these errors were encountered: