UNPKG

rsshub

Version:
42 lines (41 loc) 1.52 kB
import { t as rofetch } from "./ofetch-W1aeTHCo.mjs"; import { t as parseDate } from "./parse-date-CjhZE69i.mjs"; import { t as cache_default } from "./cache-CiDoUSLo.mjs"; import { t as timezone } from "./timezone-DE--ze1V.mjs"; //#region lib/routes/topbook/content.ts const route = { path: "/:id?", categories: ["new-media"], example: "/topbook", parameters: { id: "分类 id,可在对应分类页 URL 中找到,默认为最新文章" }, radar: [{ source: ["topbook.cc/content", "topbook.cc/"], target: "/:id" }], name: "文章", maintainers: ["nczitzk"], handler }; async function handler(ctx) { const { id } = ctx.req.param(); const rootUrl = "https://topbook.cc"; const items = (await rofetch(id ? `${rootUrl}/webapi/content/article/${id}/page?start=0&limit=24` : `${rootUrl}/webapi/content/article/page?start=0&limit=24&sort_type=latest`)).data.items.map((item) => ({ title: item.title, author: item.nickname, description: item.content, pubDate: timezone(parseDate(item.createTime), 8), link: `${rootUrl}/article/${item.articleId}` })); let title = "最新文章"; if (id) { const categoryUrl = `${rootUrl}/webapi/content/category/page?start=0&limit=20`; title = (await cache_default.tryGet("topbook:category", () => rofetch(categoryUrl))).data.items.find((category) => category.categoryId === Number(id))?.name ?? title; } return { title: `${title} - Topbook`, link: id ? `${rootUrl}/content/${id}` : `${rootUrl}/content`, item: items }; } //#endregion export { route };