rsshub
Version:
Make RSS Great Again!
69 lines (67 loc) • 2.52 kB
JavaScript
import "./esm-shims-CzJ_djXG.mjs";
import "./config-C37vj7VH.mjs";
import "./dist-BInvbO1W.mjs";
import "./logger-Czu8UMNd.mjs";
import "./ofetch-BIyrKU3Y.mjs";
import "./helpers-DxBp0Pty.mjs";
import { t as got_default } from "./got-KxxWdaxq.mjs";
import { load } from "cheerio";
//#region lib/routes/douban/other/doulist.ts
const route = {
path: "/doulist/:id",
categories: ["social-media"],
example: "/douban/doulist/37716774",
parameters: { id: "豆列id" },
features: {
requireConfig: false,
requirePuppeteer: false,
antiCrawler: false,
supportBT: false,
supportPodcast: false,
supportScihub: false
},
name: "豆瓣豆列",
maintainers: ["LogicJake", "honue"],
handler
};
async function handler(ctx) {
const id = ctx.req.param("id");
const url = `https://www.douban.com/doulist/${id}`;
const $ = load((await got_default({
method: "get",
url,
headers: { Referer: `https://www.douban.com/doulist/${id}` }
})).data);
return {
title: $("#content h1").text().trim(),
link: url,
description: $("div.doulist-about").text().trim(),
item: $("div.doulist-item").toArray().map((item) => {
const type = $(item).find("div.source").text().trim();
let title = $(item).find("div.bd.doulist-note div.title a").text().trim();
let link = $(item).find("div.bd.doulist-note div.title a").attr("href");
let description = $(item).find("div.bd.doulist-note div.abstract").text().trim();
if (type === "来自:豆瓣广播") {
title = $(item).find("p.status-content > a").text().trim();
link = $(item).find("p.status-content a").attr("href");
description = $(item).find("span.status-recommend-text").text().trim();
}
if (type === "来自:豆瓣电影" || type === "来自:豆瓣" || type === "来自:豆瓣读书" || type === "来自:豆瓣音乐") {
title = $(item).find("div.bd.doulist-subject div.title a").text().trim();
link = $(item).find("div.bd.doulist-subject div.title a").attr("href");
description = $(item).find("div.bd.doulist-subject div.abstract").text().trim();
const ft = $(item).find("div.ft div.comment-item.content").text().trim();
description = "<div><img width=\"100\" src=\"" + $(item).find("div.post a img").attr("src") + "\"></div>" + description + "<blockquote>" + ft + "</blockquote>";
}
const date = $(item).find("div.ft div.actions time span").attr("title");
return {
title,
link,
description,
pubDate: new Date(date).toUTCString()
};
})
};
}
//#endregion
export { route };