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