UNPKG

rsshub

Version:
63 lines (61 loc) 1.98 kB
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 };