rsshub
Version:
Make RSS Great Again!
71 lines (69 loc) • 2.15 kB
JavaScript
import "./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 got_default } from "./got-KxxWdaxq.mjs";
import { load } from "cheerio";
//#region lib/routes/bnu/dwxgb.ts
const route = {
path: "/dwxgb/:category/:type",
categories: ["university"],
example: "/bnu/dwxgb/xwzx/tzgg",
parameters: {
category: "大分类",
type: "子分类,例子如下"
},
features: {
requireConfig: false,
requirePuppeteer: false,
antiCrawler: false,
supportBT: false,
supportPodcast: false,
supportScihub: false
},
radar: [{ source: ["dwxgb.bnu.edu.cn/:category/:type/index.html"] }],
name: "党委学生工作部",
maintainers: ["Fatpandac"],
handler,
description: `\`https://dwxgb.bnu.edu.cn/xwzx/tzgg/index.html\` 则对应为 \`/bnu/dwxgb/xwzx/tzgg`
};
async function handler(ctx) {
const { category, type } = ctx.req.param();
const rootUrl = "https://dwxgb.bnu.edu.cn";
const currentUrl = `${rootUrl}/${category}/${type}/index.html`;
let response;
try {
response = await got_default(currentUrl);
} catch {
try {
response = await got_default(`${rootUrl}/${category}/${type}/index.htm`);
} catch {
return;
}
}
const $ = load(response.data);
const list = $("ul.container.list > li").toArray().map((item) => {
const link = $(item).find("a").attr("href");
const absoluteLink = new URL(link, currentUrl).href;
return {
title: $(item).find("a").text().trim(),
pubDate: parseDate($(item).find("span").text()),
link: absoluteLink
};
});
const items = await Promise.all(list.map((item) => cache_default.tryGet(item.link, async () => {
item.description = load((await got_default(item.link)).data)("div.article.typo").html();
return item;
})));
return {
title: `${$("div.breadcrumb1 > a:nth-child(3)").text()} - ${$("div.breadcrumb1 > a:nth-child(4)").text()}`,
link: currentUrl,
item: items
};
}
//#endregion
export { route };