UNPKG

rsshub

Version:
139 lines (137 loc) 6.04 kB
import { n as init_esm_shims, t as __dirname } from "./esm-shims-CzJ_djXG.mjs"; import { t as parseDate } from "./parse-date-BrP7mxXf.mjs"; import { t as cache_default } from "./cache-Bo__VnGm.mjs"; import { r as getSubPath } from "./common-utils-vrWQFAEk.mjs"; import { t as art } from "./render-BQo6B4tL.mjs"; import { t as got_default } from "./got-KxxWdaxq.mjs"; import { t as timezone } from "./timezone-D8cuwzTY.mjs"; import { n as finishArticleItem } from "./wechat-mp-Dq_pp853.mjs"; import { load } from "cheerio"; //#region lib/routes/gov/general/general.ts init_esm_shims(); const gdgov = async (info, ctx) => { const path = getSubPath(ctx).split("/").filter((item) => item !== ""); const [site, branch] = path; const pathstartat = info.pathstartat === void 0 ? 0 : info.pathstartat; let rootUrl = "http://" + branch + "." + site + ".gov.cn"; for (let index = 0; index < pathstartat; index++) { const element = path[index + 2]; rootUrl = rootUrl + "/" + element; } const defaultPath = info.defaultPath; let name_element = info.name_element; const name_match_type = info.name_match_type; const name_match = info.name_match; const name_join = info.name_join; let list_element = info.list_element; let list_include = info.list_include; if (list_element === void 0) { list_element = "a[href*=\"content\"]"; list_include = "site"; } if (list_include === "site") { list_element = list_element.split(",").filter((item) => item !== ""); for (let index = 0; index < list_element.length; index++) list_element[index] += "[href*=\"" + rootUrl.slice(7) + "\"]"; list_element = list_element.join(","); } let title_element = info.title_element; let title_match = info.title_match; const author_element = info.author_element; const author_match = info.author_match; const authorisme = info.authorisme; let description_element = info.description_element; let pubDate_element = info.pubDate_element; let pubDate_match = info.pubDate_match; let pubDate_format = info.pubDate_format; path.splice(0, 2 + pathstartat); let pathname = path.join("/"); pathname = pathname === "" ? defaultPath : pathname.endsWith("/") ? pathname : pathname + "/"; const currentUrl = `${rootUrl}/${pathname}`; let $ = ""; let name = ""; let list = ""; if (pathname.startsWith("gkmlpt")) { title_element = void 0; title_match = void 0; description_element = "div[class=\"article-content\"]"; pubDate_element = void 0; pubDate_match = void 0; pubDate_format = void 0; const res = await got_default(`${rootUrl}/gkmlpt/api/all/0`); name = authorisme + "政府信息公开平台"; list = res.data.articles.filter((item) => item.url.includes("content")); } else { const dataArray = (await got_default(currentUrl)).data; $ = load(dataArray); switch (name_match_type) { case "name": name = name_element; break; case "meta": name_element = name_element.split(",").filter((item) => item !== ""); for (let index = 0; index < name_element.length; index++) name_element[index] = $("meta[name=\"" + name_element[index].trim() + "\"]").attr("content"); name = name_element.join(name_join); break; case "element": name_element = name_element.split(",").filter((item) => item !== ""); for (let index = 0; index < name_element.length; index++) name_element[index] = $(name_element[index].trim()).text().match(name_match)[1]; name = name_element.join(name_join); break; default: name = $("head title").text(); break; } list = $(list_element); } const lists = list.map((i, item) => { let link = ""; if (pathname.startsWith("gkmlpt")) link = i.url; else { link = $(item).attr("href"); if (!link.startsWith("http")) link.startsWith("/") ? link = `${rootUrl}${link}` : link = `${rootUrl}/${link}`; } return link; }); const items = await Promise.all(lists.map((link) => { const idlink = new URL(link); if (idlink.pathname === "/zcjdpt") return cache_default.tryGet(link, async () => { const data = (await got_default("https://zcjd.cloud.gd.gov.cn/api/home/article" + idlink.search)).data.data; for (let index = 0; index < data.jie_du_items.length; index++) data.jie_du_items[index].jd_content = data.jie_du_items[index].jd_content.replaceAll(/((\n {4})|(\n))/g, "</p><p style=\"font-size: 16px;line-height: 32px;text-indent: 2em;\">"); return { link, title: data.art_title, description: art(path.join(__dirname, "templates/zcjdpt-2599868d.art"), data), pubDate: timezone(parseDate(data.pub_time), 8), author: /(本|本网|本站)/.test(data.pub_unite) ? authorisme : data.pub_unite }; }); else if (idlink.host === "mp.weixin.qq.com") return finishArticleItem({ link }); else return cache_default.tryGet(link, async () => { const { data: res } = await got_default(link); const content = load(res); let author = ""; author = author_element === void 0 ? content("meta[name=\"ContentSource\"]").attr("content") : content(author_element).text().trim().match(author_match)[1].trim().replaceAll(/(-*$)/g, ""); let pubDate = ""; pubDate = pubDate_element === void 0 ? content("meta[name=\"PubDate\"]").attr("content") : content(pubDate_element).text().trim().match(pubDate_match)[1].trim().replaceAll(/(-*$)/g, ""); let title = ""; title = title_element === void 0 ? content("meta[name=\"ArticleTitle\"]").attr("content") : content(title_element).text().trim().match(title_match)[1]; const description_content = description_element.split(",").filter((item) => item !== ""); for (let index = 0; index < description_content.length; index++) description_content[index] = content(description_content[index].trim()).html(); const description = description_content.join(""); return { link, title, description, pubDate: timezone(parseDate(pubDate, pubDate_format), 8), author: /本|本网|本站/.test(author) ? authorisme : author }; }); })); return { title: name, link: currentUrl, item: items }; }; //#endregion export { gdgov as t };