UNPKG

rsshub

Version:
77 lines (75 loc) 2.35 kB
import "./dist-Bog6z_OM.mjs"; import "./config-MQ-7ebJ_.mjs"; import "./logger-C4avouvV.mjs"; import { t as ofetch_default } from "./ofetch-DKl_Ma9g.mjs"; import { t as parseDate } from "./parse-date-r5WDWHno.mjs"; import "./is-worker-DESPicPc.mjs"; import { t as cache_default } from "./cache-SV6W5EPy.mjs"; import { load } from "cheerio"; //#region lib/routes/jpmorganchase/research.ts const base = "https://www.jpmorganchase.com"; const frontPageUrl = `${base}/institute/all-topics`; const indexUrl = `${base}/services/json/v1/dynamic-grid.service/parent=jpmorganchase/global/US/en/home/institute/all-topics&comp=root/content-parsys/dynamic_grid&page=p1.json`; const route = { path: "/", example: "/jpmorganchase", categories: ["finance"], features: { requireConfig: false, requirePuppeteer: false, antiCrawler: false, supportBT: false, supportPodcast: false, supportScihub: false }, radar: [{ source: ["jpmorganchase.com/institute/all-topics"], target: "/" }], name: "Research Topics", maintainers: ["dousha"], handler, url: "www.jpmorganchase.com/institute/all-topics" }; async function fetchIndexEntires() { const response = await ofetch_default(indexUrl); if (!("meta" in response)) return []; const meta = response.meta; const maxItemCount = Number(meta["partition-size"]); return response.items.slice(0, maxItemCount); } function fetchDataItem(entry) { const url = `${base}${entry.link}`; return cache_default.tryGet(url, async () => { let authors = []; let description = ""; let category = []; let articleDate = entry.date; const pageContent = await ofetch_default(url); if (pageContent.length > 0) { const $ = load(pageContent); category = [$(".eyebrow").text()]; authors = $(".author-name").toArray().map((el) => $(el).text().trim()); articleDate = $(".date").text().trim() || entry.date; description = $(".root").children("div").children("div:eq(1)").html() || ""; } return { category, author: authors.join(", "), title: entry.title, description, link: url, pubDate: parseDate(articleDate) }; }); } async function handler() { const entires = await fetchIndexEntires(); return { title: "All Topics - JPMorganChase Institute", link: frontPageUrl, item: await Promise.all(entires.map((it) => fetchDataItem(it))) }; } //#endregion export { route };