rsshub
Version:
Make RSS Great Again!
98 lines (96 loc) • 3.39 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/whu/gs/index.ts
const gsIndexMap = new Map([
[0, "xwdt.htm"],
[1, "xs_ts.htm"],
[2, "yxfc.htm"],
[3, "tzgg/qb.htm"],
[4, "tzgg/zs.htm"],
[5, "tzgg/py.htm"],
[6, "tzgg/xw.htm"],
[7, "tzgg/zlyzyxw.htm"],
[8, "tzgg/zh.htm"]
]);
const route = {
path: "/gs/:type?",
categories: ["university"],
example: "/whu/gs/0",
parameters: { type: "分类,默认为 `0`,具体参数见下表" },
features: {
requireConfig: false,
requirePuppeteer: false,
antiCrawler: false,
supportBT: false,
supportPodcast: false,
supportScihub: false
},
radar: [{
source: ["gs.whu.edu.cn/index.htm", "gs.whu.edu.cn/"],
target: "/gs"
}],
name: "研究生院",
maintainers: ["Delreyaa"],
handler,
url: "gs.whu.edu.cn/index.htm",
description: `| 公告类型 | 新闻动态 | 学术探索 | 院系风采 | 通知 (全部) | 通知 (招生) | 通知 (培养) | 通知 (学位) | 通知 (质量与专业学位) | 通知 (综合) |
| -------- | -------- | -------- | -------- | ----------- | ----------- | ----------- | ----------- | --------------------- | ----------- |
| 参数 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |`
};
async function handler(ctx) {
const host = "https://gs.whu.edu.cn/";
const paremType = ctx.req.param("type");
const type = paremType ? Number.parseInt(paremType) : 0;
const $ = load((await got_default(host + gsIndexMap.get(type))).data);
const feed_title = $("div.location a").slice(-2).toArray().map((element) => $(element).text()).join(" > ");
let items = $(".list ul li").toArray().map((item) => {
item = $(item);
const link = item.find("a").attr("href");
return {
title: item.find("p").text(),
link: link.startsWith("http") ? link : new URL(link, host).href,
pubDate: parseDate(item.find("span").text())
};
});
items = await Promise.all(items.map((item) => cache_default.tryGet(item.link, async () => {
try {
const content = load((await got_default(item.link)).data);
content("input").remove();
content("h1").remove();
content("h2").remove();
content("div.arc-tit h2").remove();
content("h4.information").remove();
content("div.arc-info").remove();
content(".con_xq").remove();
content("form[name=_newscontent_fromname] img").each((_, i) => {
i = $(i);
if (i.attr("src").startsWith("/")) i.attr("src", new URL(i.attr("src"), host).href);
});
content("form[name=_newscontent_fromname] ul li a").each((_, a) => {
a = $(a);
if (a.attr("href").startsWith("/")) a.attr("href", new URL(a.attr("href"), host).href);
});
item.description = content("form[name=_newscontent_fromname]").html();
return item;
} catch {
item.description = "NULL";
return item;
}
})));
return {
title: `武汉大学研究生院 - ${feed_title}`,
link: host + gsIndexMap.get(type),
description: "武大研究生院",
item: items
};
}
//#endregion
export { route };