rsshub
Version:
Make RSS Great Again!
47 lines (45 loc) • 1.71 kB
JavaScript
import "./esm-shims-CzJ_djXG.mjs";
import "./config-C37vj7VH.mjs";
import "./dist-BInvbO1W.mjs";
import "./logger-Czu8UMNd.mjs";
import { t as ofetch_default } from "./ofetch-BIyrKU3Y.mjs";
import { t as parseDate } from "./parse-date-BrP7mxXf.mjs";
import { t as cache_default } from "./cache-Bo__VnGm.mjs";
import { load } from "cheerio";
//#region lib/routes/gisreportsonline/index.ts
const route = {
path: "/:path{.*}",
categories: ["new-media"],
example: "/gis/c/security-challenges/",
parameters: { path: "包含\"Reports\"页面下的路径" },
name: "报告",
maintainers: ["dzx-dzx"],
radar: [{ source: ["www.gisreportsonline.com"] }],
handler
};
async function handler(ctx) {
const currentUrl = `https://www.gisreportsonline.com/${ctx.req.param("path")}`;
const $ = load(await ofetch_default(currentUrl));
const list = $("article h3 a").toArray().map((e) => ({
link: $(e).attr("href"),
title: $(e).text()
}));
const items = await Promise.all(list.map((item) => cache_default.tryGet(item.link, async () => {
const content = load(await ofetch_default(item.link));
const ldjson = JSON.parse(content("script.rank-math-schema-pro").text())["@graph"].find((e) => e["@type"] === "NewsArticle");
item.pubDate = parseDate(ldjson.datePublished);
item.updated = parseDate(ldjson.dateModified);
item.author = [ldjson.author];
item.category = ldjson.keywords.split(",");
item.language = ldjson.inLanguage;
item.description = content("header.entry-header ~ :not(#pos-conclusion ~ *)").toArray().map((e) => content(e).prop("outerHTML")).join("");
return item;
})));
return {
title: $("title").text(),
link: currentUrl,
item: items
};
}
//#endregion
export { route };