rsshub
Version:
Make RSS Great Again!
63 lines (62 loc) • 2.09 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/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 };