UNPKG

rsshub

Version:
82 lines (79 loc) 2.61 kB
import { n as init_esm_shims, t as __dirname } from "./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 art } from "./render-BQo6B4tL.mjs"; import { t as timezone } from "./timezone-D8cuwzTY.mjs"; import path from "node:path"; import { load } from "cheerio"; //#region lib/routes/scitechvista/namespace.ts init_esm_shims(); const namespace = { name: "科技大觀園", url: "scitechvista.nat.gov.tw", lang: "zh-TW" }; //#endregion //#region lib/routes/scitechvista/index.ts const baseUrl = `https://${namespace.url}`; function parseRocDate(rocDate) { if (!rocDate) return; const parts = rocDate.trim().split("/"); if (parts.length !== 3) return; const [rocYearStr, monthStr, dayStr] = parts; return parseDate(`${Number.parseInt(rocYearStr, 10) + 1911}-${monthStr}-${dayStr}`, "YYYY-MM-DD"); } const route = { path: "/", categories: ["government"], example: "/scitechvista", features: { requireConfig: false, requirePuppeteer: false, antiCrawler: false, supportBT: false, supportPodcast: false, supportScihub: false }, radar: [{ source: ["scitechvista.nat.gov.tw/"] }], name: "最新文章", maintainers: ["johan456789"], handler, url: namespace.url }; async function handler() { const currentUrl = `${baseUrl}/Article/C000003/new`; const $ = load(await ofetch_default(currentUrl)); const language = $("html").attr("lang") || "zh-TW"; const items = $("div.kf-diagramtext-list > div.kf-diagramtext-col").toArray().map((colEl) => { const node = $(colEl); const linkPath = node.find("a[href*=\"/Article/C000003/detail\"]").first().attr("href"); const link = linkPath ? new URL(linkPath, baseUrl).href : void 0; const title = node.find("div.kf-title").first().text().trim(); const dateText = node.find("div.kf-date > span").first().text().trim() || void 0; const pubDate = dateText ? timezone(parseRocDate(dateText), 8) : void 0; const imagePath = node.find("img").attr("src"); const image = imagePath ? new URL(imagePath, baseUrl).href : void 0; const snippet = node.find("div.kf-txt").first().text().trim() || void 0; return { title, description: art(path.join(__dirname, "templates/description-08135052.art"), { image, description: snippet }), link, pubDate, image }; }).filter(Boolean); return { title: `${namespace.name} - 最新文章`, link: currentUrl, language, item: items }; } //#endregion export { route };