rsshub
Version:
Make RSS Great Again!
54 lines (53 loc) • 2.16 kB
JavaScript
import { t as config } from "./config-CCmw1BNE.mjs";
import { t as parseDate } from "./parse-date-Cr0wQjV_.mjs";
import { t as got_default } from "./got-BTowW50G.mjs";
import { load } from "cheerio";
//#region lib/routes/civitai/discussions.ts
const route = {
path: "/discussions/:modelId",
categories: ["program-update"],
example: "/civitai/discussions/4384",
parameters: { modelId: "N" },
features: {
requireConfig: [{
name: "CIVITAI_COOKIE",
description: ""
}],
requirePuppeteer: false,
antiCrawler: false,
supportBT: false,
supportPodcast: false,
supportScihub: false,
nsfw: true
},
radar: [{ source: ["civitai.com/models/:modelId"] }],
name: "Model discussions",
maintainers: ["DIYgod"],
handler,
description: `::: warning
Need to configure \`CIVITAI_COOKIE\` to obtain image information of NSFW models.
:::`
};
async function handler(ctx) {
const params = ctx.req.param();
const modelId = Number.parseInt(params.modelId);
const { data } = await got_default(`https://civitai.com/api/trpc/review.getAll,comment.getAll?batch=1&input=${encodeURIComponent(`{"0":{"json":{"modelId":${modelId},"limit":12,"sort":"newest","cursor":null},"meta":{"values":{"cursor":["undefined"]}}},"1":{"json":{"modelId":${modelId},"limit":12,"sort":"newest","cursor":null},"meta":{"values":{"cursor":["undefined"]}}}}`)}`, { headers: {
Referer: `https://civitai.com/${modelId}`,
cookie: config.civitai.cookie
} });
const items = [...data[0].result.data.json.reviews, ...data[1].result.data.json.comments].map((item) => item.images?.length || item.content ? {
title: item.content ? load(item.content).text() : "Image",
link: `https://civitai.com/models/${params.modelId}`,
description: `${(item.images || []).map((image) => `<image src="https://imagecache.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/${image.url}/width=${image.width}/${image.id}">`).join("\n")}${item.content}`,
pubDate: parseDate(item.createdAt),
author: item.user?.username,
guid: item.id
} : null).filter(Boolean);
return {
title: `Civitai model ${params.modelId} discussions`,
link: "https://civitai.com/",
item: items
};
}
//#endregion
export { route };