UNPKG

rsshub

Version:
64 lines (63 loc) 2.32 kB
import { t as parseDate } from "./parse-date-Cr0wQjV_.mjs"; import { t as cache_default } from "./cache-BkqOokyU.mjs"; import { t as got_default } from "./got-BTowW50G.mjs"; import { t as timezone } from "./timezone-BBvDwS_3.mjs"; import { load } from "cheerio"; //#region lib/routes/chiculture/topic.ts const route = { path: "/topic/:category?", categories: ["new-media"], example: "/chiculture/topic", parameters: { category: "分类,见下表,默认为全部" }, features: { requireConfig: false, requirePuppeteer: false, antiCrawler: false, supportBT: false, supportPodcast: false, supportScihub: false }, name: "議題熱話", maintainers: ["nczitzk"], handler, description: `| 全部 | 現代中國 | 今日香港 | 全球化 | 一周時事通識 | | ---- | -------- | -------- | ------ | ------------ | | | 76 | 479 | 480 | 379 |` }; async function handler(ctx) { const category = ctx.req.param("category") || ""; const rootUrl = "https://ls.chiculture.org.hk"; const list = (await got_default({ method: "get", url: `${rootUrl}/api/general-listing?lang=zh-hant&type=ssrh&category=${category}&page=1` })).data.data.map((item) => ({ title: item.title, pubDate: item.tags, link: `${rootUrl}${item.url}` })); const items = await Promise.all(list.map((item) => cache_default.tryGet(item.link, async () => { const detailResponse = await got_default({ method: "get", url: item.link }); const content = load(detailResponse.data); const pubDate = detailResponse.data.match(/上載日期:(.*)<\/p>/); if (pubDate) item.pubDate = parseDate(pubDate[1]); else if (item.title.includes("一周時事通識")) for (const tag of item.pubDate) { if (!/^\d{4}年$/.test(tag.title)) continue; item.pubDate = timezone(parseDate(item.title.split("- ", 2)[1] ?? item.title.split("-", 2)[1], "D/M"), 8); break; } else if (/^\d{4}年新聞回顧$/.test(item.title)) item.pubDate = parseDate(`${item.title.split("年", 1)[0]}-12-31`); else item.pubDate = ""; item.description = content("#article_main_content").html(); return item; }))); return { title: "議題熱話 | 通識·現代中國", link: `${rootUrl}/tc/hot-topics${category ? `?category=${category}` : ""}`, item: items }; } //#endregion export { route };