UNPKG

rsshub

Version:
58 lines (57 loc) 1.71 kB
import { t as rofetch } from "./ofetch-U0CdpE2g.mjs"; import { t as parseDate } from "./parse-date-3kcy2Eau.mjs"; import { t as namespace } from "./namespace-D-kUeQsS.mjs"; import { load } from "cheerio"; //#region lib/routes/canalmuseum/consulting.ts const TYPE_CONFIG = { tzgg: { sectionId: "tzgg", sectionName: "通知公告", listSelector: ".consulting5 .news_chose .list .item" }, xwdt: { sectionId: "xwdt", sectionName: "新闻动态", listSelector: ".consulting2 .public-list .public-item" } }; const route = { path: "/consulting/:type", categories: ["travel"], example: "/canalmuseum/consulting/tzgg", parameters: { type: "News type, supported values: tzgg(通知公告), xwdt(新闻动态)" }, radar: [{ source: ["www.canalmuseum.org.cn/consulting.html"], target: "/consulting/tzgg" }], name: "NEWS", maintainers: ["magazian"], handler: async (ctx) => { const type = ctx.req.param("type") ?? ""; const config = TYPE_CONFIG[type]; const baseUrl = "https://www.canalmuseum.org.cn"; const listUrl = `${baseUrl}/consulting.html`; const response = await rofetch(listUrl); const $ = load(response); const items = $(config.listSelector).toArray().map((el) => { const $a = $(el).find("a"); const title = $a.find(".t1").text(); const dateText = $a.find(".date1").text(); const pubDate = parseDate(dateText); const href = $a.attr("href") ?? ""; return { title, link: new URL(href, baseUrl).href, pubDate }; }); return { title: `${namespace.zh?.name || namespace.name} - ${config.sectionName}`, link: `${listUrl}#${config.sectionId}`, language: "zh-CN", item: items }; } }; //#endregion export { route };