UNPKG

rsshub

Version:
165 lines (162 loc) 6.78 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 { t as cache_default } from "./cache-Bo__VnGm.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"; //#region lib/routes/cuilingmag/index.ts init_esm_shims(); const handler = async (ctx) => { const { category } = ctx.req.param(); const limit = ctx.req.query("limit") ? Number.parseInt(ctx.req.query("limit"), 10) : 12; const rootUrl = "https://www.cuilingmag.com"; const currentUrl = new URL(category ? `category/${category}` : "", rootUrl).href; const { data: response } = await got_default(currentUrl); const $ = load(response); const language = $("html").prop("lang"); let items = $("div.new-list-div, div.item").slice(0, limit).toArray().map((item) => { item = $(item); const title$1 = item.find("h3.new-list-h3, h3.title-font").first().text().trim(); const src = item.find("img").first().prop("src"); const image$1 = src ? new URL(src, rootUrl).href : void 0; return { title: title$1, description: art(path.join(__dirname, "templates/description-16be3a2a.art"), { images: image$1 ? [{ src: image$1, alt: title$1 }] : void 0 }), link: new URL(item.find("a").first().prop("href"), rootUrl).href, author: item.find("a.new-list-p, div.author").text().trim(), image: image$1, banner: image$1, language, enclosure_url: image$1, enclosure_type: image$1 ? `image/${image$1.split(/\./).pop()}` : void 0, enclosure_title: title$1 }; }); items = await Promise.all(items.map((item) => cache_default.tryGet(item.link, async () => { const { data: detailResponse } = await got_default(item.link); const $$ = load(detailResponse); const title$1 = `${$$("p.title-font").text().trim()} ${$$("p.subtitle-font").text().trim()}`; const src = $$("div.banner img").first().prop("src"); const banner = src ? new URL(src, rootUrl).href : void 0; const description = item.description + art(path.join(__dirname, "templates/description-16be3a2a.art"), { images: banner ? [{ src: banner, alt: title$1 }] : void 0, description: $$("div.article-content").html() }); item.title = title$1; item.description = description; item.pubDate = parseDate($$("p.time").first().text()); item.category = [...new Set([...$$("p.sort a").toArray().map((c) => $$(c).text().trim()), ...$$("span.type").toArray().map((c) => $$(c).text().trim())])].filter(Boolean); item.author = $$("p.author a").toArray().map((a) => $$(a).contents().first().text().trim()).join("/"); item.content = { html: description, text: $$("div.article-content").text() }; item.banner = banner; item.language = language; item.enclosure_url = banner ?? item.enclosure_url; item.enclosure_type = banner ? `image/${banner.split(/\./).pop()}` : item.enclosure_type; item.enclosure_title = title$1; return item; }))); const title = $("title").text().trim(); const image = new URL($("div.nav-logo a img").prop("src"), rootUrl).href; return { title, description: $("meta[property=\"og:description\"]").prop("content"), link: currentUrl, item: items, allowEmpty: true, image, author: title.split(/-/).pop(), language }; }; const route = { path: "/:category?", name: "分类", url: "cuilingmag.com", categories: ["new-media"], maintainers: ["nczitzk"], handler, example: "/cuilingmag", parameters: { category: "分类,默认为空,即全部,可在对应分类页 URL 中找到" }, description: `::: tip 若订阅 [#哲学·文明](https://www.cuilingmag.com/category/philosophy_civilization),网址为 \`https://www.cuilingmag.com/category/philosophy_civilization\`。截取 \`https://www.cuilingmag.com/category\` 到末尾的部分 \`philosophy_civilization\` 作为参数填入,此时路由为 [\`/cuilingmag/philosophy_civilization\`](https://rsshub.app/cuilingmag/philosophy_civilization)。 ::: | 分类 | ID | | -------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | | [哲学 · 文明](https://www.cuilingmag.com/category/philosophy_civilization) | [philosophy_civilization](https://rsshub.app/cuilingmag/philosophy_civilization) | | [艺术 · 科技](https://www.cuilingmag.com/category/art_science) | [art_science](https://rsshub.app/cuilingmag/art_science) | | [未来 · 生命](https://www.cuilingmag.com/category/future_life) | [future_life](https://rsshub.app/cuilingmag/future_life) | | [行星智慧](https://www.cuilingmag.com/category/planetary_wisdom) | [planetary_wisdom](https://rsshub.app/cuilingmag/planetary_wisdom) | | [数字治理](https://www.cuilingmag.com/category/digital_governance) | [digital_governance](https://rsshub.app/cuilingmag/digital_governance) | | [Noema精选](https://www.cuilingmag.com/category/selected_noema) | [selected_noema](https://rsshub.app/cuilingmag/selected_noema) | `, features: { requireConfig: false, requirePuppeteer: false, antiCrawler: false, supportRadar: true, supportBT: false, supportPodcast: false, supportScihub: false }, radar: [ { source: ["cuilingmag.com/category/:category"], target: (params) => { const category = params.category; return `/cuilingmag${category ? `/${category}` : ""}`; } }, { title: "全部", source: ["cuilingmag.com"], target: "/" }, { title: "哲学 · 文明", source: ["cuilingmag.com/category/philosophy_civilization"], target: "/philosophy_civilization" }, { title: "艺术 · 科技", source: ["cuilingmag.com/category/art_science"], target: "/art_science" }, { title: "未来 · 生命", source: ["cuilingmag.com/category/future_life"], target: "/future_life" }, { title: "行星智慧", source: ["cuilingmag.com/category/planetary_wisdom"], target: "/planetary_wisdom" }, { title: "数字治理", source: ["cuilingmag.com/category/digital_governance"], target: "/digital_governance" }, { title: "Noema精选", source: ["cuilingmag.com/category/selected_noema"], target: "/selected_noema" } ] }; //#endregion export { handler, route };