rsshub
Version:
Make RSS Great Again!
82 lines (79 loc) • 2.61 kB
JavaScript
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 };