rsshub
Version:
Make RSS Great Again!
77 lines (76 loc) • 2.2 kB
JavaScript
import { t as rofetch } from "./ofetch-W1aeTHCo.mjs";
import { t as parseDate } from "./parse-date-CjhZE69i.mjs";
import { t as cache_default } from "./cache-CiDoUSLo.mjs";
import { t as timezone } from "./timezone-DE--ze1V.mjs";
import { load } from "cheerio";
//#region lib/routes/shanghaitech/sist/activity.ts
const baseUrl = "https://sist.shanghaitech.edu.cn";
const route = {
path: "/sist/activity",
categories: ["university"],
example: "/shanghaitech/sist/activity",
radar: [{ source: ["sist.shanghaitech.edu.cn/xyhd/list.htm"] }],
name: "信息科技与技术学院活动",
maintainers: ["HenryQW"],
handler,
url: "sist.shanghaitech.edu.cn/xyhd/list.htm"
};
async function handler(ctx) {
const limit = ctx.req.query("limit") ? Number(ctx.req.query("limit")) : 20;
const list = (await rofetch(`${baseUrl}/_wp3services/generalQuery?queryObj=articles`, {
method: "POST",
headers: { Referer: `${baseUrl}/xyhd/list.htm` },
body: new URLSearchParams({
siteId: "43",
columnId: "10969",
pageIndex: "1",
rows: String(limit),
orders: JSON.stringify([{
field: "publishTime",
type: "desc"
}]),
returnInfos: JSON.stringify([
{
field: "title",
name: "title"
},
{
field: "summary",
name: "summary"
},
{
field: "publishTime",
pattern: [{
name: "d",
value: "yyyy-MM-dd"
}],
name: "publishTime"
}
]),
conditions: JSON.stringify([{
field: "scope",
value: 1,
judge: "="
}])
}),
parseResponse: JSON.parse
})).data.map((item) => ({
title: item.title,
link: item.url.replace(/^http:\/\//, "https://"),
author: item.publisher,
pubDate: timezone(parseDate(item.publishTime), 8),
description: item.summary
}));
const items = await Promise.all(list.map((item) => cache_default.tryGet(item.link, async () => {
if (new URL(item.link).hostname !== "sist.shanghaitech.edu.cn") return item;
item.description = load(await rofetch(item.link))(".wp_articlecontent").html();
return item;
})));
return {
title: "上海科技大学信息科技与技术学院 -- 活动",
link: `${baseUrl}/xyhd/list.htm`,
item: items
};
}
//#endregion
export { route };