rsshub
Version:
Make RSS Great Again!
55 lines (53 loc) • 1.85 kB
JavaScript
import { t as parseDate } from "./parse-date-BrP7mxXf.mjs";
import { t as cache_default } from "./cache-Bo__VnGm.mjs";
import { t as got_default } from "./got-KxxWdaxq.mjs";
import { load } from "cheerio";
//#region lib/routes/csust/utils.ts
async function getNoticeContent(item) {
const $content = load((await got_default(item.link)).body)(".v_news_content");
if ($content.length) {
$content.find("script").remove();
$content.find("style").remove();
$content.find(".vsbcontent_end").remove();
$content.find("iframe").remove();
item.description = $content.html() || item.title;
} else item.description = item.title;
return item;
}
function parseListItems($, baseUrl) {
return $(".list ul li").toArray().map((li) => {
const element = $(li);
const title = element.find(".newTitle").text().trim();
const linkRaw = element.find("a").attr("href");
const dateText = element.find(".data1").text().trim();
if (!linkRaw || !title) return null;
const dateMatch = dateText.match(/发布时间\s*[::]\s*(\d{4}-\d{1,2}-\d{1,2})/);
const pubDate = dateMatch ? parseDate(dateMatch[1]) : null;
return {
title,
link: linkRaw.startsWith("http") ? linkRaw : new URL(linkRaw, baseUrl).href,
pubDate
};
}).filter((i) => i !== null);
}
function createCsustHandler({ listPath, feedTitle, feedDescription }) {
const baseUrl = "https://www.csust.edu.cn";
return async function() {
const items = parseListItems(load((await got_default(`${baseUrl}${listPath}`)).body), baseUrl);
const item = await Promise.all(items.map((it) => cache_default.tryGet(it.link, async () => {
try {
return await getNoticeContent(it);
} catch {
return it;
}
})));
return {
title: feedTitle,
link: `${baseUrl}${listPath}`,
description: feedDescription,
item
};
};
}
//#endregion
export { createCsustHandler as t };