UNPKG

rsshub

Version:
77 lines (75 loc) 2.73 kB
import "./dist-Bog6z_OM.mjs"; import "./config-MQ-7ebJ_.mjs"; import "./logger-C4avouvV.mjs"; import "./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 "./helpers-Bo4JQYdN.mjs"; import { t as got_default } from "./got-CO-ndVl2.mjs"; import { load } from "cheerio"; //#region lib/routes/gov/mem/zfxxgkpt.ts const route = { path: "/mem/gk/zfxxgkpt/fdzdgknr", categories: ["government"], example: "/gov/mem/gk/zfxxgkpt/fdzdgknr", parameters: {}, features: { requireConfig: false, requirePuppeteer: false, antiCrawler: false, supportBT: false, supportPodcast: false, supportScihub: false }, radar: [{ source: ["www.mem.gov.cn/gk/zfxxgkpt/fdzdgknr"], target: "/mem/gk/zfxxgkpt/fdzdgknr" }], name: "法定主动公开内容", maintainers: ["skeaven"], handler, description: "应急管理部法定主动公开内容,包含通知、公告、督办、政策解读等,可供应急相关工作人员及时获取政策信息" }; async function handler(ctx) { const limit = ctx.req.query("limit") ? Number.parseInt(ctx.req.query("limit"), 10) : 30; const rootUrl = "https://www.mem.gov.cn"; const currentUrl = new URL("gk/zfxxgkpt/fdzdgknr/", rootUrl).href; const { data: fdzdgknrResponse } = await got_default(currentUrl); const { data: response } = await got_default(load(fdzdgknrResponse)("div.scy_main_r iframe").attr("src")); const $ = load(response); const icon = new URL("favicon.ico", rootUrl).href; let items = $("div.scy_main_V2_list").find("tr").slice(1, limit).toArray().map((item) => { const aLabel = $(item).find("a[href]"); if (aLabel.attr("href")) { const link = currentUrl + aLabel.attr("href").replaceAll("..", ""); return { title: aLabel.contents().first().text(), link, pubDate: parseDate($(item).find(".fbsj").text()) }; } else return null; }).filter(Boolean); items = await Promise.all(items.map((item) => cache_default.tryGet(item.link, async () => { if (!item.link.endsWith(".html") && !item.link.endsWith(".shtml")) return item; const { data: detailResponse } = await got_default(item.link); const content = load(detailResponse); const description = content("#content").html(); const author = content("td.td_lable:contains(\"所属机构\")").next("td").text().trim(); const category = content("td.td_lable:contains(\"主题分类\")").next("td").text().trim(); return { ...item, description, author: author || "未知机构", category: category || "未知分类" }; }))); return { item: items, title: route.name, link: currentUrl, icon }; } //#endregion export { route };