UNPKG

rsshub

Version:
91 lines (89 loc) 2.88 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 "./ofetch-BIyrKU3Y.mjs"; import { t as parseDate } from "./parse-date-BrP7mxXf.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"; import { load } from "cheerio"; import markdownit from "markdown-it"; //#region lib/routes/chuanliu/nice.ts init_esm_shims(); const md = markdownit({ html: true }); const route = { path: "/nice", categories: ["blog"], example: "/chuanliu/nice", parameters: {}, features: { requireConfig: false, requirePuppeteer: false, antiCrawler: false, supportBT: false, supportPodcast: false, supportScihub: false }, radar: [{ source: ["chuanliu.org/nice"] }], name: "严选", maintainers: ["nczitzk"], handler, url: "chuanliu.org/nice" }; async function handler(ctx) { const limit = ctx.req.query("limit") ? Number.parseInt(ctx.req.query("limit"), 10) : 100; const rootUrl = "https://chuanliu.org"; const apiRootUrl = "https://s.chuanliu.org"; const currentUrl = new URL("nice/", rootUrl).href; const apiUrl = new URL("api/dis/api/v1/memo", apiRootUrl).href; const { data: response } = await got_default(apiUrl, { searchParams: { creatorId: 1, offset: 0, limit } }); const items = response.slice(0, limit).map((item) => { const contents = item.content.split(/\n/); const category = contents?.[0].replace(/^#/, "") ?? void 0; const title = contents?.[1] ?? void 0; const link = contents?.[2] ?? void 0; const author = contents?.[3] ?? void 0; const isStar = (contents?.[5] && contents[5] === "star") ?? false; if (isStar) contents.splice(5, 1); return { title: `${isStar ? "[STAR] " : ""}${title}`, link, description: art(path.join(__dirname, "templates/description-0a74e693.art"), { description: md.render(contents?.join("\n\n") ?? ""), images: item.resourceList.map((i) => ({ src: i.externalLink, alt: i.filename, type: i.type })) }), author, category: [category, isStar ? "STAR" : void 0].filter(Boolean), guid: `chuanliu-nice#${item.id}`, pubDate: parseDate(item.createdTs, "X"), updated: parseDate(item.updatedTs, "X") }; }); const { data: currentResponse } = await got_default(currentUrl); const $ = load(currentResponse); const icon = new URL($("link[rel=\"shortcut icon\"]").prop("href"), currentUrl).href; return { item: items, title: $("title").text(), link: currentUrl, description: $("span.rainbow-text").first().text(), language: $("html").prop("lang"), icon, logo: icon, subtitle: $("title").text(), author: $("meta[name=\"author\"]").prop("content"), allowEmpty: true }; } //#endregion export { route };