UNPKG

rsshub

Version:
61 lines (60 loc) 2.06 kB
import { t as parseDate } from "./parse-date-Cr0wQjV_.mjs"; import { t as cache_default } from "./cache-BkqOokyU.mjs"; import { t as got_default } from "./got-BTowW50G.mjs"; import { t as timezone } from "./timezone-BBvDwS_3.mjs"; import { load } from "cheerio"; //#region lib/routes/cugb/jwc.ts const rootUrl = "https://jwc.cugb.edu.cn"; const channels = { xszq: "学生专区" }; const route = { path: "/jwc/:channel?", categories: ["university"], example: "/cugb/jwc/xszq", parameters: { channel: "栏目,默认为 `xszq` 学生专区" }, features: { requireConfig: false, requirePuppeteer: false, antiCrawler: false, supportBT: false, supportPodcast: false, supportScihub: false }, radar: [{ source: ["jwc.cugb.edu.cn/:channel"], target: "/jwc/:channel" }], name: "教务处", maintainers: ["syncmeta"], handler }; async function handler(ctx) { const channel = ctx.req.param("channel") ?? "xszq"; const limit = ctx.req.query("limit") ? Number(ctx.req.query("limit")) : 20; const listUrl = `${rootUrl}/${channel}/`; const { data: response } = await got_default(listUrl); const $ = load(response); const list = $("li a").toArray().map((el) => { const item = $(el); return { title: item.find(".list_con_main").text(), link: new URL(item.attr("href"), rootUrl).href, pubDate: timezone(parseDate(item.find(".list_con_time").text()), 8) }; }).filter((item) => item.title).slice(0, limit); const items = await Promise.all(list.map((item) => cache_default.tryGet(item.link, async () => { const { data: detailResponse } = await got_default(item.link); item.description = load(detailResponse)("div.detail_content_box").html(); return item; }))); return { title: `中国地质大学(北京)教务处 - ${channels[channel] ?? channel}`, link: listUrl, item: items, language: "zh-CN", image: "https://bm.cugb.edu.cn/vis/images/xhgf/logo.png", icon: "https://bm.cugb.edu.cn/vis/images/xhgf/logo.png", logo: "https://bm.cugb.edu.cn/vis/images/xhgf/logo.png" }; } //#endregion export { route };