rsshub
Version:
Make RSS Great Again!
54 lines (52 loc) • 1.82 kB
JavaScript
import "./config-C37vj7VH.mjs";
import "./logger-Czu8UMNd.mjs";
import "./proxy-Db7uGcYb.mjs";
import { t as timezone } from "./timezone-D8cuwzTY.mjs";
import { n as puppeteer_default } from "./puppeteer-DGmvuGvT.mjs";
import { load } from "cheerio";
//#region lib/routes/parliament.uk/lordslibrary.ts
const route = {
path: "/lordslibrary/type/:topic?",
categories: ["government"],
example: "/parliament.uk/lordslibrary/type/research-briefing",
parameters: { topic: "research by topic, string, example: [research-briefing|buisness|economy]" },
features: {
requireConfig: false,
requirePuppeteer: true,
antiCrawler: false,
supportBT: false,
supportPodcast: false,
supportScihub: false
},
name: "House of Lords Library",
maintainers: ["AntiKnot"],
handler
};
async function handler(ctx) {
const { topic } = ctx.req.param();
const url = `https://lordslibrary.parliament.uk/type/${topic}/`;
const browser = await puppeteer_default();
const page = await browser.newPage();
await page.setRequestInterception(true);
page.on("request", (request) => {
request.resourceType() === "document" ? request.continue() : request.abort();
});
await page.goto(url, { waitUntil: "domcontentloaded" });
const html = await page.evaluate(() => document.documentElement.innerHTML);
await page.close();
const $ = load(html);
const items = $("div.l-box.l-box--no-border.card__text").toArray().map((article) => ({
title: $(article).find(".card__text a").text().trim(),
link: $(article).find(".card__text a").attr("href"),
description: $(article).find("p").last().text().trim(),
pubDate: timezone($(article).find(".card__date time").attr("datetime"))
}));
await browser.close();
return {
title: `parliament - lordslibrary - ${topic}`,
link: url,
item: items
};
}
//#endregion
export { route };