UNPKG

rsshub

Version:
66 lines (65 loc) 2.28 kB
import { t as parseDate } from "./parse-date-Cr0wQjV_.mjs"; import { t as cache_default } from "./cache-BkqOokyU.mjs"; import { t as got_default } from "./got-BTowW50G.mjs"; import { load } from "cheerio"; //#region lib/routes/clickme/index.ts const route = { path: "/:site/:grouping/:name", categories: ["other"], example: "/clickme/default/category/beauty", parameters: { site: "站点,`default`为普通站,`r18`为成人站,其它值默认为普通站", grouping: "分组方式,`category`为分类,`tag`为标签,其他值默认为分类", name: "分类名或标签名,分类名为英文,可以在分类 URL 中找到" }, features: { requireConfig: false, requirePuppeteer: false, antiCrawler: true, supportBT: false, supportPodcast: false, supportScihub: false }, name: "文章", maintainers: ["hoilc"], handler }; async function handler(ctx) { const site = ctx.req.param("site") === "r18" ? "r18" : ""; const grouping = ctx.req.param("grouping") === "tag" ? "tag" : "category"; const name = ctx.req.param("name"); const url = `https://${site ? "r18." : ""}clickme.net/${grouping.slice(0, 1)}/${encodeURIComponent(name)}`; const { data: response } = await got_default.post("https://api.clickme.net/article/list", { headers: { Referer: url }, searchParams: { key: "clickme" }, form: { articleType: site ? "r18" : "article", subtype: grouping, subtypeSlug: name, device: "", limit: 18, page: 1 } }); const category_name = name === "new" ? "最新" : response.data.items[0].categoryName[0].name; const displayed_name = grouping === "tag" ? name : category_name; const list = response.data.items.map((item) => ({ title: item.title, link: item.url.replace("http://", "https://"), author: item.userNick, pubDate: parseDate(item.date, "X"), category: [...item.categoryName.map((item) => item.name), ...item.tags] })); const out = await Promise.all(list.map((item) => cache_default.tryGet(item.link, async () => { const { data } = await got_default.get(item.link); item.description = load(data)(".article-detail-content").html(); return item; }))); return { title: `ClickMe ${site ? "R18 " : ""}- ${displayed_name}`, link: url, item: out }; } //#endregion export { route };