rsshub
Version:
Make RSS Great Again!
38 lines (37 loc) • 1.47 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 { load } from "cheerio";
//#region lib/routes/mit/csail/news.ts
const route = {
path: "/csail/news",
categories: ["university"],
example: "/mit/csail/news",
radar: [{ source: ["www.csail.mit.edu/news"] }],
name: "Computer Science and Artificial Intelligence Laboratory (CSAIL)",
maintainers: ["nczitzk"],
handler,
url: "www.csail.mit.edu/news"
};
async function handler(ctx) {
const limit = ctx.req.query("limit") ? Number(ctx.req.query("limit")) : 24;
const rootUrl = "https://www.csail.mit.edu";
const currentUrl = `${rootUrl}/news/`;
const list = (await rofetch(`${rootUrl}/api-proxy/angular-solr?_api_proxy_uri=news&q=*%3A*&sort=ds_field_publication_date%20DESC&rows=${limit}&start=0`, { headers: { accept: "application/json" } })).response.docs.map((doc) => ({
title: doc.ss_title,
link: `${rootUrl}${doc.ss_url}`
}));
return {
title: "News - MIT CSAIL",
link: currentUrl,
item: await Promise.all(list.map((item) => cache_default.tryGet(item.link, async () => {
const content = load(await rofetch(item.link));
content(".sidebar-right, .sidebar-item").remove();
item.description = content(".content-container-inner").html();
item.pubDate = parseDate(content("time").attr("datetime"));
return item;
})))
};
}
//#endregion
export { route };