rsshub
Version:
Make RSS Great Again!
75 lines (74 loc) • 1.99 kB
JavaScript
import { t as got_default } from "./got-BTowW50G.mjs";
//#region lib/routes/douban/channel/topic.ts
const route = {
path: "/channel/:id/:nav?",
categories: ["social-media"],
example: "/douban/channel/30168934/hot",
parameters: {
id: "频道id",
nav: "专题分类,可选,默认为 default"
},
features: {
requireConfig: false,
requirePuppeteer: false,
antiCrawler: false,
supportBT: false,
supportPodcast: false,
supportScihub: false
},
name: "频道专题",
maintainers: ["umm233"],
handler,
description: `| 默认 | 热门 | 最新 |
| ------- | ---- | ---- |
| default | hot | new |`
};
async function handler(ctx) {
const id = ctx.req.param("id");
const nav = ctx.req.param("nav") || "default";
const link = `https://www.douban.com/channel/${id}`;
const channel_info_response = await got_default({
method: "get",
url: `https://m.douban.com/rexxar/api/v2/elessar/channel/${id}`,
headers: { Referer: link }
});
const response = await got_default({
method: "get",
url: `https://m.douban.com/rexxar/api/v2/lembas/channel/${id}/feed?ck=null&for_mobile=1&start=0&count=20&nav=${nav}`,
headers: { Referer: link }
});
const channel_name = channel_info_response.data.title;
const data = response.data.items;
let nav_name;
switch (nav) {
case "hot":
nav_name = "热门";
break;
case "new":
nav_name = "最新";
break;
default:
nav_name = "默认";
break;
}
return {
title: `豆瓣${channel_name}频道-${nav_name}动态`,
link,
description: `豆瓣${channel_name}频道专题下的${nav_name}动态`,
item: data.map((item) => {
if (item.external_payload.items === void 0) {
const description = `作者:${item.author.name} | ${item.create_time} <br><br> ${item.abstract}">`;
return {
title: item.title,
description,
pubDate: new Date(item.create_time),
link: item.url
};
}
return null;
}).filter(Boolean),
allowEmpty: true
};
}
//#endregion
export { route };