UNPKG

rsshub

Version:
98 lines (96 loc) 3.39 kB
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 };