rsshub
Version:
Make RSS Great Again!
61 lines (60 loc) • 2.06 kB
JavaScript
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 };