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