rsshub
Version:
Make RSS Great Again!
58 lines (57 loc) • 1.71 kB
JavaScript
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 };