UNPKG

rsshub

Version:
63 lines (62 loc) 2.09 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/news.ts const rootUrl = "https://www.cugb.edu.cn"; const channels = { bdxw: "北地新闻" }; const route = { path: "/news/:channel?", categories: ["university"], example: "/cugb/news/bdxw", parameters: { channel: "栏目,默认为 `bdxw` 北地新闻" }, features: { requireConfig: false, requirePuppeteer: false, antiCrawler: false, supportBT: false, supportPodcast: false, supportScihub: false }, radar: [{ source: ["www.cugb.edu.cn/:channel.jhtml"], target: "/news/:channel" }], name: "校园新闻", maintainers: ["syncmeta"], handler }; async function handler(ctx) { const channel = ctx.req.param("channel") ?? "bdxw"; const limit = ctx.req.query("limit") ? Number(ctx.req.query("limit")) : 20; const listUrl = `${rootUrl}/${channel}.jhtml`; const { data: response } = await got_default(listUrl); const $ = load(response); const list = $("li a.con").toArray().slice(0, limit).map((el) => { const item = $(el); const [date, author] = item.find("span").text().split("|").map((s) => s.trim()); return { title: item.find("h3.tit").text(), link: new URL(item.attr("href"), rootUrl).href, pubDate: timezone(parseDate(date), 8), author }; }); 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.postbody").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 };