rsshub
Version:
Make RSS Great Again!
118 lines (116 loc) • 3.23 kB
JavaScript
import { n as init_esm_shims, t as __dirname } from "./esm-shims-CzJ_djXG.mjs";
import "./config-C37vj7VH.mjs";
import "./dist-BInvbO1W.mjs";
import "./logger-Czu8UMNd.mjs";
import "./ofetch-BIyrKU3Y.mjs";
import "./helpers-DxBp0Pty.mjs";
import { t as art } from "./render-BQo6B4tL.mjs";
import { t as got_default } from "./got-KxxWdaxq.mjs";
import path from "node:path";
//#region lib/routes/leetcode/dailyquestion-en.ts
init_esm_shims();
const host = "https://leetcode.com";
const route = {
path: "/dailyquestion/en",
radar: [{ source: ["leetcode.com/"] }],
name: "Unknown",
maintainers: [],
handler,
url: "leetcode.com/"
};
async function handler() {
const question = {
date: "",
link: "",
titleSlug: "",
content: "",
frontedId: "",
difficulty: "",
tags: ""
};
const url = host + "/graphql";
const dailyQuestionPayload = {
query: `query questionOfToday {
activeDailyCodingChallengeQuestion {
date
link
question {
frontendQuestionId: questionFrontendId
titleSlug
}
}
} `,
variables: {}
};
const data = (await got_default({
method: "post",
url,
headers: { "content-type": "application/json" },
body: JSON.stringify(dailyQuestionPayload)
})).data.data.activeDailyCodingChallengeQuestion;
question.date = data.date;
question.link = host + data.link;
question.titleSlug = data.question.titleSlug;
const detailsPayload = {
operationName: "questionData",
query: `query questionData($titleSlug: String!) {
question(titleSlug: $titleSlug) {
questionId
questionFrontendId
title
titleSlug
content
translatedTitle
translatedContent
difficulty
topicTags {
name
slug
translatedName
__typename
}
__typename
}
}`,
variables: { titleSlug: question.titleSlug }
};
const detailsResponse = await got_default({
method: "post",
url,
headers: { "content-type": "application/json" },
body: JSON.stringify(detailsPayload)
});
const emoji = {
Medium: "🟡",
Easy: "🟢",
Hard: "🔴"
};
const details = detailsResponse.data.data.question;
question.content = details.content;
question.frontedId = details.questionFrontendId;
question.difficulty = emoji[details.difficulty];
let topicTags = details.topicTags;
topicTags = topicTags.map((item) => {
let slug = "#" + item.slug;
slug = slug.replaceAll("-", "_");
return slug;
});
question.tags = topicTags.join(" ");
const rssData = {
title: question.frontedId + "." + question.titleSlug,
description: art(path.join(__dirname, "templates/question-description-1f696f3d.art"), { question }),
link: question.link
};
return {
title: "LeetCode Daily Question",
link: "https://leetcode.com",
description: "Leetcode Daily Question",
item: [{
title: rssData.title,
description: rssData.description + question.content,
link: rssData.link
}]
};
}
//#endregion
export { route };