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