UNPKG

rsshub

Version:
65 lines (63 loc) 2.31 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 "./ofetch-BIyrKU3Y.mjs"; import { t as parseDate } from "./parse-date-BrP7mxXf.mjs"; import { t as cache_default } from "./cache-Bo__VnGm.mjs"; import "./helpers-DxBp0Pty.mjs"; import { t as art } from "./render-BQo6B4tL.mjs"; import { t as got_default } from "./got-KxxWdaxq.mjs"; import path from "node:path"; //#region lib/routes/pts/live.ts init_esm_shims(); const route = { path: "/live/:id", categories: ["traditional-media"], example: "/pts/live/62e8e4bbb4de2cbd74468b2b", parameters: { id: "報導 id,可在对应整理報導页 URL 中找到" }, features: { requireConfig: false, requirePuppeteer: false, antiCrawler: false, supportBT: false, supportPodcast: false, supportScihub: false }, radar: [{ source: ["news.pts.org.tw/live/:id", "news.pts.org.tw/"] }], name: "整理報導", maintainers: [], handler }; async function handler(ctx) { const id = ctx.req.param("id"); const rootUrl = "https://news.pts.org.tw"; const currentUrl = `${rootUrl}/live/${id}`; const apiUrl = `${rootUrl}/live/api/liveblog/${id}`; const imageRootUrl = "https://dkjm35kkdt2ag.cloudfront.net"; const response = await got_default({ method: "get", url: apiUrl }); let items = response.data.data.blogArticleList.slice(0, ctx.req.query("limit") ? Number.parseInt(ctx.req.query("limit")) : 30).map((item) => ({ link: `${rootUrl}/live/api/liveblog/article?articleId=${item}&model=main` })); items = await Promise.all(items.map((item) => cache_default.tryGet(item.link, async () => { const data = (await got_default({ method: "get", url: item.link })).data.data; item.title = data.title; item.pubDate = parseDate(data.updatedDate); item.description = art(path.join(__dirname, "templates/live-151f80f9.art"), { images: data.content.filter((d) => d.type === "img").map((i) => `${imageRootUrl}/${i.imgFileUrl}`), texts: data.content.filter((d) => d.type === "text").map((t) => t.content) }); return item; }))); return { title: `公視新聞網 PNN - ${response.data.data.title.replace(/【不斷更新】/, "")}`, link: currentUrl, item: items }; } //#endregion export { route };