UNPKG

rsshub

Version:
92 lines (91 loc) 2.67 kB
import { t as parseDate } from "./parse-date-Cr0wQjV_.mjs"; import { n as outPlaywright } from "./playwright-o20DiLNh.mjs"; import dayjs from "dayjs"; import { load } from "cheerio"; //#region lib/routes/uestc/scse.ts const baseIndexUrl = "https://www.scse.uestc.edu.cn/index.htm"; const host = "https://www.scse.uestc.edu.cn/"; const prefixes = { 1012: "【办公室】", 1013: "【组织人事】", 1014: "【科研科】", 1015: "【研管科】", 1016: "【教务科】", 1017: "【学生科】", 1018: "【国际办】", 1019: "【培训工作】", 1020: "【创新创业】", 1022: "【安全工作】" }; const route = { path: "/scse", categories: ["university"], example: "/uestc/scse", parameters: {}, features: { requireConfig: false, requirePuppeteer: true, antiCrawler: false, supportBT: false, supportPodcast: false, supportScihub: false }, radar: [{ source: ["scse.uestc.edu.cn/"] }], name: "计算机科学与工程学院", maintainers: ["talengu", "mobyw"], handler, url: "scse.uestc.edu.cn/" }; async function handler() { const context = await outPlaywright(); const page = await context.newPage(); await page.route("**/*", (route) => { const request = route.request(); request.resourceType() === "document" || request.resourceType() === "script" ? route.continue() : route.abort(); }); await page.goto(baseIndexUrl, { waitUntil: "networkidle" }); const content = await page.content(); await context.close(); const $ = load(content); const iList = $(".s2-lswitch .i-list"); let firstFlag = true; const items = []; iList.each((_, element) => { if (firstFlag) { firstFlag = false; return; } $(element).find("li").each((i, el) => { items.push(el); }); }); const out = $(items).toArray().map((item) => { const $item = $(item); const now = dayjs(); let date = dayjs(now.year() + "-" + $item.find("a span").text()); if (now < date) date = dayjs(now.year() - 1 + "-" + $item.find("a span").text()); let newsTitle = $item.find("a[href]").contents().filter((index, element) => element.nodeType === 3).text(); const newsLink = host + $item.find("a[href]").attr("href"); const newsPubDate = parseDate(date.toDate()); let prefix = "【其他】"; for (const code in prefixes) { if (newsLink.search("info/" + code) === -1) continue; prefix = prefixes[code]; break; } newsTitle = prefix + newsTitle; return { title: newsTitle, link: newsLink, pubDate: newsPubDate }; }); return { title: "计算机学院通知", link: baseIndexUrl, description: "电子科技大学计算机科学与工程学院通知", item: out }; } //#endregion export { route };