UNPKG

rsshub

Version:
98 lines (96 loc) 4.39 kB
import { t as rofetch } from "./ofetch-C3ts-Hud.mjs"; import { t as parseDate } from "./parse-date-Cr0wQjV_.mjs"; import { t as cache_default } from "./cache-BkqOokyU.mjs"; import { t as timezone } from "./timezone-BBvDwS_3.mjs"; import { Fragment, jsx, jsxs } from "hono/jsx/jsx-runtime"; import { load } from "cheerio"; import { renderToString } from "hono/jsx/dom/server"; import { raw } from "hono/html"; import pMap from "p-map"; //#region lib/routes/kcna/utils.ts const fixDesc = ($, elem) => { const $elem = $(elem); $elem.find("august_name").each((_, item) => { item.name = "b"; }); return $elem.html(); }; const fetchPhoto = (url) => cache_default.tryGet(url, async () => { const $ = load(await rofetch(url)); return $(".gallery img").removeAttr("class").toArray().map((item) => $.html(item)).join("<br>"); }); //#endregion //#region lib/routes/kcna/news.tsx const route = { path: "/:lang/:category?", categories: ["traditional-media"], example: "/kcna/en", parameters: { lang: "Language, refer to the table below", category: "Category, refer to the table below" }, features: { requireConfig: false, requirePuppeteer: false, antiCrawler: true, supportBT: false, supportPodcast: false, supportScihub: false }, radar: [{ source: ["www.kcna.kp/:lang"], target: "/:lang" }, { source: ["www.kcna.kp/:lang/article/list/:category"], target: "/:lang/:category" }], name: "News", maintainers: ["Rongronggg9"], handler, description: `| Language | 조선어 | English | 中国语 | Русский | Español | 日本語 | | -------- | ------ | ------- | ------ | ------- | ------- | ------ | | \`:lang\` | \`kp\` | \`en\` | \`cn\` | \`ru\` | \`es\` | \`jp\` | | Category | \`:category\` | | ---------------------------------------------------------------- | ---------------------------------- | | WPK General Secretary **Kim Jong Un**'s Revolutionary Activities | \`b0721b9f23054ddc7fe56c2811a12715\` | | Latest News (default) | \`a666dda1282180e0ee1b4427b0574ae7\` | | Top News | \`6a47505ba5268fd7749c0fe11e4b24b4\` | | Home News | \`2f7d854121ccbbfbe6feae9fdcc3556e\` | | Documents | \`1afa96195f9b303902490a126ab7285f\` | | World | \`ecc14533d88be93068af4178946b1b05\` | | Social Life | \`680e40b40899891bbe75a7072e3285e7\` | | External | \`e2f336db98b5e69c75e0da264e037e8d\` | | Revolutionary Anecdote | \`503e9b606704f9b1c625fa5755928cd3\` | | Always in Memory of People | \`7bc083f00425be6aadfb828fba1cb5a7\` |` }; async function handler(ctx) { const { lang, category = "a666dda1282180e0ee1b4427b0574ae7" } = ctx.req.param(); const rootUrl = "http://www.kcna.kp"; const pageUrl = `${rootUrl}/${lang}/article/list/${category}`; const $ = load(await rofetch(pageUrl)); return { title: $("head > title").text(), link: pageUrl, item: await pMap($(".article h5").toArray().map((item) => { const $item = $(item); const a = $item.find("a"); const dateString = $item.find("span").text().match(/\d+\.\d+\.\d+/)[0]; return { title: a.text().trim(), link: new URL(a.attr("href"), rootUrl).href, pubDate: timezone(parseDate(dateString, "YYYY.M.D"), 9) }; }), (item) => cache_default.tryGet(item.link, async () => { const $ = load(await rofetch(item.link)); const container = $("article .container"); const gallery = container.find("a.gallery_button").attr("href"); container.find("h1, a.right_button").remove(); const description = fixDesc($, container); const photo = gallery ? await fetchPhoto(new URL(gallery, rootUrl).href) : ""; item.description = renderToString(/* @__PURE__ */ jsxs(Fragment, { children: [description ? raw(description) : null, photo ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("br", {}), raw(photo)] }) : null] })); return item; }), { concurrency: 3 }) }; } //#endregion export { route };