UNPKG

rsshub

Version:
108 lines (106 loc) 3.04 kB
import "./esm-shims-CzJ_djXG.mjs"; import "./config-C37vj7VH.mjs"; import "./dist-BInvbO1W.mjs"; import "./logger-Czu8UMNd.mjs"; import "./ofetch-BIyrKU3Y.mjs"; import { t as cache_default } from "./cache-Bo__VnGm.mjs"; import "./helpers-DxBp0Pty.mjs"; import { t as got_default } from "./got-KxxWdaxq.mjs"; //#region lib/routes/douban/other/topic.ts const route = { path: "/topic/:id/:sort?", categories: ["social-media"], example: "/douban/topic/48823", parameters: { id: "话题id", sort: "排序方式,hot或new,默认为new" }, features: { requireConfig: false, requirePuppeteer: false, antiCrawler: false, supportBT: false, supportPodcast: false, supportScihub: false }, name: "话题", maintainers: [ "LogicJake", "pseudoyu", "haowenwu" ], handler }; async function handler(ctx) { const id = ctx.req.param("id"); const sort = ctx.req.param("sort") || "new"; const link = `https://www.douban.com/gallery/topic/${id}/?sort=${sort}`; const data = (await got_default({ method: "GET", url: `https://m.douban.com/rexxar/api/v2/gallery/topic/${id}/items?sort=${sort}&start=0&count=10&status_full_text=1`, headers: { Referer: link } })).data.items; let title = id; let description = ""; if (data[0].topic !== null) { title = data[0].topic.name; description = data[0].topic.introduction; } const out = await Promise.all(data.map(async (item) => { const type = item.target.type; let author; let date; let description$1; let link$1; let title$1; if (type === "status") { link$1 = item.target.status.sharing_url.split("&")[0]; author = item.target.status.author.name; title$1 = author + "的广播"; date = item.target.status.create_time; description$1 = item.target.status.text; const images = item.target.status.images; if (images) { let i; for (i in images) description$1 += `<br><img src="${images[i].normal.url}" />`; } } else if (type === "topic") { link$1 = item.target.sharing_url; author = item.target.author.name; title$1 = item.target.title; date = item.target.create_time; description$1 = item.target.abstract; const images = item.target.photos; if (images) { let i; for (i in images) description$1 += `<br><img src="${images[i].src}" />`; } } else { link$1 = item.target.sharing_url; author = item.target.author.name; title$1 = author + "的日记"; date = item.target.create_time; const itemUrl = `https://www.douban.com/j/note/${item.target.id}/full`; const cacheIn = await cache_default.get(link$1); if (cacheIn) return JSON.parse(cacheIn); description$1 = (await got_default.get(itemUrl)).data.html; } const single = { title: title$1, link: link$1, author, pubDate: new Date(date).toUTCString(), description: description$1 }; if (type !== "status") cache_default.set(link$1, JSON.stringify(single)); return single; })); return { title: `${title}-豆瓣话题`, description, link, item: out }; } //#endregion export { route };