UNPKG

rsshub

Version:
75 lines (73 loc) 2.22 kB
import "./config-C37vj7VH.mjs"; import "./logger-Czu8UMNd.mjs"; import { t as parseDate } from "./parse-date-BrP7mxXf.mjs"; import "./proxy-Db7uGcYb.mjs"; import { t as invalid_parameter_default } from "./invalid-parameter-rr4AgGpp.mjs"; import { n as puppeteer_default } from "./puppeteer-DGmvuGvT.mjs"; import { load } from "cheerio"; //#region lib/routes/uestc/cqe.ts const baseUrl = "https://cqe.uestc.edu.cn/"; const mapUrl = { hdyg: "xwgg/hdyg.htm", tzgg: "xwgg/tzgg.htm" }; const mapTitle = { hdyg: "活动预告", tzgg: "通知公告" }; const route = { path: "/cqe/:type?", categories: ["university"], example: "/uestc/cqe/tzgg", parameters: { type: "默认为 `tzgg`" }, features: { requireConfig: false, requirePuppeteer: true, antiCrawler: false, supportBT: false, supportPodcast: false, supportScihub: false }, radar: [{ source: ["cqe.uestc.edu.cn/"], target: "/cqe" }], name: "文化素质教育中心", maintainers: ["truobel", "mobyw"], handler, url: "cqe.uestc.edu.cn/", description: `| 活动预告 | 通知公告 | | -------- | -------- | | hdyg | tzgg |` }; async function handler(ctx) { const type = ctx.req.param("type") || "tzgg"; const pageUrl = mapUrl[type]; if (!pageUrl) throw new invalid_parameter_default("type not supported"); const browser = await puppeteer_default(); const page = await browser.newPage(); await page.setRequestInterception(true); page.on("request", (request) => { request.resourceType() === "document" || request.resourceType() === "script" ? request.continue() : request.abort(); }); await page.goto(baseUrl + pageUrl, { waitUntil: "networkidle2" }); const content = await page.content(); await browser.close(); const $ = load(content); const out = $($("div.Newslist li")).toArray().map((item) => { item = $(item); return { title: item.find("a").attr("title"), link: baseUrl + item.find("a").attr("href").slice(3), pubDate: parseDate(item.find("span").text().slice(1, -1)) }; }); return { title: `大学生文化素质教育中心-${mapTitle[type]}`, link: baseUrl, description: "电子科技大学大学生文化素质教育中心通知", item: out }; } //#endregion export { route };