rsshub
Version:
Make RSS Great Again!
63 lines (61 loc) • 1.98 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 { t as ofetch_default } from "./ofetch-BIyrKU3Y.mjs";
import { t as art } from "./render-BQo6B4tL.mjs";
import path from "node:path";
import dayjs from "dayjs";
import duration from "dayjs/plugin/duration.js";
import localizedFormat from "dayjs/plugin/localizedFormat.js";
import "dayjs/locale/zh-cn.js";
import relativeTime from "dayjs/plugin/relativeTime.js";
//#region lib/routes/codeforces/contests.ts
init_esm_shims();
dayjs.extend(localizedFormat);
dayjs.extend(duration);
dayjs.extend(relativeTime);
dayjs.locale("zh-cn");
const sec2str = (sec) => dayjs.duration(Number.parseInt(sec), "seconds").humanize();
const contestAPI = "https://codeforces.com/api/contest.list";
const route = {
path: "/contests",
categories: ["programming"],
example: "/codeforces/contests",
parameters: {},
features: {
requireConfig: false,
requirePuppeteer: false,
antiCrawler: false,
supportBT: false,
supportPodcast: false,
supportScihub: false
},
radar: [{ source: ["www.codeforces.com/contests"] }],
name: "Latest contests",
maintainers: ["Fatpandac"],
handler,
url: "www.codeforces.com/contests"
};
async function handler() {
return {
title: "Codeforces - Contests",
link: "https://codeforces.com/contests",
item: (await ofetch_default(contestAPI)).result.filter((contests) => contests.phase === "BEFORE").map((contest) => {
const title = String(contest.name);
const date = dayjs.unix(Number.parseInt(contest.startTimeSeconds));
return {
title,
description: art(path.join(__dirname, "templates/contest-e36ba7a6.art"), {
title,
startTime: date.format("LL LT"),
durationTime: sec2str(contest.durationSeconds),
type: contest.type
}),
link: "https://codeforces.com/contests/" + contest.id
};
})
};
}
//#endregion
export { route };