UNPKG

rsshub

Version:
158 lines (156 loc) 3.63 kB
import { n as init_esm_shims, t as __dirname } from "./esm-shims-CzJ_djXG.mjs"; import "./config-C37vj7VH.mjs"; import { t as ViewType } from "./types-D84BRIt4.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/nhk/news.ts init_esm_shims(); const baseUrl = "https://www3.nhk.or.jp"; const apiUrl = "https://api.nhkworld.jp"; const route = { path: "/news/:lang?", categories: ["traditional-media"], view: ViewType.Articles, example: "/nhk/news/en", parameters: { lang: { description: "Language, see below", options: [ { value: "ar", label: "العربية" }, { value: "bn", label: "বাংলা" }, { value: "my", label: "မြန်မာဘာသာစကား" }, { value: "zh", label: "中文(简体)" }, { value: "zt", label: "中文(繁體)" }, { value: "en", label: "English" }, { value: "fr", label: "Français" }, { value: "hi", label: "हिन्दी" }, { value: "id", label: "Bahasa Indonesia" }, { value: "ko", label: "코리언" }, { value: "fa", label: "فارسی" }, { value: "pt", label: "Português" }, { value: "ru", label: "Русский" }, { value: "es", label: "Español" }, { value: "sw", label: "Kiswahili" }, { value: "th", label: "ภาษาไทย" }, { value: "tr", label: "Türkçe" }, { value: "uk", label: "Українська" }, { value: "ur", label: "اردو" }, { value: "vi", label: "Tiếng Việt" } ], default: "en" } }, features: { requireConfig: false, requirePuppeteer: false, antiCrawler: false, supportBT: false, supportPodcast: false, supportScihub: false }, radar: [{ source: ["www3.nhk.or.jp/nhkworld/:lang/news/list/", "www3.nhk.or.jp/nhkworld/:lang/news/"], target: "/news/:lang" }], name: "WORLD-JAPAN - Top Stories", maintainers: [ "TonyRL", "pseudoyu", "cscnk52" ], handler }; async function handler(ctx) { const { lang = "en" } = ctx.req.param(); const { data } = await got_default(`${apiUrl}/nwapi/rdnewsweb/v7b/${lang}/outline/list.json`); const meta = await got_default(`${baseUrl}/nhkworld/common/assets/news/config/${lang}.json`); let items = data.data.map((item) => ({ title: item.title, description: item.description, link: `${baseUrl}${item.page_url}`, pubDate: parseDate(item.updated_at, "x"), id: item.id })); items = await Promise.all(items.map((item) => cache_default.tryGet(item.link, async () => { const { data: data$1 } = await got_default(`${apiUrl}/nwapi/rdnewsweb/v6b/${lang}/detail/${item.id}.json`); item.category = Object.values(data$1.data.categories); item.description = art(path.join(__dirname, "templates/news-cb748a69.art"), { img: data$1.data.thumbnails, description: data$1.data.detail.replaceAll("\n\n", "<br><br>") }); delete item.id; return item; }))); return { title: `${Object.values(meta.data.config.navigation.header).find((h) => h.keyname === "topstories")?.name} | NHK WORLD-JAPAN News`, link: `${baseUrl}/nhkworld/${lang}/news/list/`, item: items }; } //#endregion export { route };