rsshub
Version:
Make RSS Great Again!
364 lines (337 loc) • 14.1 kB
JavaScript
import "./esm-shims-CzJ_djXG.mjs";
import "./config-C37vj7VH.mjs";
import "./dist-BInvbO1W.mjs";
import "./logger-Czu8UMNd.mjs";
import { t as ofetch_default } from "./ofetch-BIyrKU3Y.mjs";
import "./parse-date-BrP7mxXf.mjs";
import "./render-BQo6B4tL.mjs";
import "./timezone-D8cuwzTY.mjs";
import { n as processItems, r as rootUrl, t as buildApiUrl } from "./util-BZJAO1yJ.mjs";
import { load } from "cheerio";
//#region lib/routes/aibase/discover.ts
const handler = async (ctx) => {
const { id } = ctx.req.param();
const [pid, sid] = id?.split(/-/) ?? [void 0, void 0];
const limit = Number.parseInt(ctx.req.query("limit") ?? "30", 10);
const currentUrl = new URL(`discover${id ? `/${id}` : ""}`, rootUrl).href;
const $ = load(await ofetch_default(currentUrl));
const { apiRecommListUrl, apiRecommProcUrl, apiTagProcUrl } = await buildApiUrl($);
let ptag, stag;
let isTag = !!(pid && sid);
if (isTag) {
const parentTag = ((await ofetch_default(apiRecommListUrl))?.data?.results ?? []).find((t) => String(t.Id) === pid);
const subTag = parentTag ? parentTag.sublist.find((t) => String(t.Id) === sid) : void 0;
ptag = parentTag?.tag ?? parentTag?.alias ?? void 0;
stag = subTag?.tag ?? subTag?.alias ?? void 0;
isTag = !!(ptag && stag);
}
const query = {
page: 1,
pagesize: limit,
ticket: ""
};
const { data: { results: apiProcs } } = await (isTag ? ofetch_default(apiRecommProcUrl, { query: {
...query,
ptag,
stag
} }) : ofetch_default(apiTagProcUrl, { query: {
...query,
f: "id",
o: "desc"
} }));
const items = processItems(apiProcs?.slice(0, limit) ?? []);
const image = new URL($("img.logo").prop("src"), rootUrl).href;
const author = $("title").text().split(/_/).pop();
return {
title: `${author}${isTag ? ` | ${ptag} - ${stag}` : ""}`,
description: $("meta[property=\"og:description\"]").prop("content"),
link: currentUrl,
item: items,
allowEmpty: true,
image,
author
};
};
const route = {
path: "/discover/:id?",
name: "发现",
url: "top.aibase.com",
maintainers: ["nczitzk"],
handler,
example: "/aibase/discover",
parameters: { id: "发现分类,默认为空,即全部产品,可在对应发现分类页 URL 中找到" },
description: `::: tip
若订阅 [图片背景移除](https://top.aibase.com/discover/37-49),网址为 \`https://top.aibase.com/discover/37-49\`。截取 \`https://top.aibase.com/discover/\` 到末尾的部分 \`37-49\` 作为参数填入,此时路由为 [\`/aibase/discover/37-49\`](https://rsshub.app/aibase/discover/37-49)。
:::
<details>
<summary>更多分类</summary>
#### 图像处理
| 分类 | ID |
| ----------------------------------------------------- | ------------------------------------------------- |
| [图片背景移除](https://top.aibase.com/discover/37-49) | [37-49](https://rsshub.app/aibase/discover/37-49) |
| [图片无损放大](https://top.aibase.com/discover/37-50) | [37-50](https://rsshub.app/aibase/discover/37-50) |
| [图片AI修复](https://top.aibase.com/discover/37-51) | [37-51](https://rsshub.app/aibase/discover/37-51) |
| [图像生成](https://top.aibase.com/discover/37-52) | [37-52](https://rsshub.app/aibase/discover/37-52) |
| [Ai图片拓展](https://top.aibase.com/discover/37-53) | [37-53](https://rsshub.app/aibase/discover/37-53) |
| [Ai漫画生成](https://top.aibase.com/discover/37-54) | [37-54](https://rsshub.app/aibase/discover/37-54) |
| [Ai生成写真](https://top.aibase.com/discover/37-55) | [37-55](https://rsshub.app/aibase/discover/37-55) |
| [电商图片制作](https://top.aibase.com/discover/37-83) | [37-83](https://rsshub.app/aibase/discover/37-83) |
| [Ai图像转视频](https://top.aibase.com/discover/37-86) | [37-86](https://rsshub.app/aibase/discover/37-86) |
#### 视频创作
| 分类 | ID |
| --------------------------------------------------- | ------------------------------------------------- |
| [视频剪辑](https://top.aibase.com/discover/38-56) | [38-56](https://rsshub.app/aibase/discover/38-56) |
| [生成视频](https://top.aibase.com/discover/38-57) | [38-57](https://rsshub.app/aibase/discover/38-57) |
| [Ai动画制作](https://top.aibase.com/discover/38-58) | [38-58](https://rsshub.app/aibase/discover/38-58) |
| [字幕生成](https://top.aibase.com/discover/38-84) | [38-84](https://rsshub.app/aibase/discover/38-84) |
#### 效率助手
| 分类 | ID |
| --------------------------------------------------- | ------------------------------------------------- |
| [AI文档工具](https://top.aibase.com/discover/39-59) | [39-59](https://rsshub.app/aibase/discover/39-59) |
| [PPT](https://top.aibase.com/discover/39-60) | [39-60](https://rsshub.app/aibase/discover/39-60) |
| [思维导图](https://top.aibase.com/discover/39-61) | [39-61](https://rsshub.app/aibase/discover/39-61) |
| [表格处理](https://top.aibase.com/discover/39-62) | [39-62](https://rsshub.app/aibase/discover/39-62) |
| [Ai办公助手](https://top.aibase.com/discover/39-63) | [39-63](https://rsshub.app/aibase/discover/39-63) |
#### 写作灵感
| 分类 | ID |
| ------------------------------------------------- | ------------------------------------------------- |
| [文案写作](https://top.aibase.com/discover/40-64) | [40-64](https://rsshub.app/aibase/discover/40-64) |
| [论文写作](https://top.aibase.com/discover/40-88) | [40-88](https://rsshub.app/aibase/discover/40-88) |
#### 艺术灵感
| 分类 | ID |
| --------------------------------------------------- | ------------------------------------------------- |
| [音乐创作](https://top.aibase.com/discover/41-65) | [41-65](https://rsshub.app/aibase/discover/41-65) |
| [设计创作](https://top.aibase.com/discover/41-66) | [41-66](https://rsshub.app/aibase/discover/41-66) |
| [Ai图标生成](https://top.aibase.com/discover/41-67) | [41-67](https://rsshub.app/aibase/discover/41-67) |
#### 趣味
| 分类 | ID |
| ----------------------------------------------------- | ------------------------------------------------- |
| [Ai名字生成器](https://top.aibase.com/discover/42-68) | [42-68](https://rsshub.app/aibase/discover/42-68) |
| [游戏娱乐](https://top.aibase.com/discover/42-71) | [42-71](https://rsshub.app/aibase/discover/42-71) |
| [其他](https://top.aibase.com/discover/42-72) | [42-72](https://rsshub.app/aibase/discover/42-72) |
#### 开发编程
| 分类 | ID |
| --------------------------------------------------- | ------------------------------------------------- |
| [开发编程](https://top.aibase.com/discover/43-73) | [43-73](https://rsshub.app/aibase/discover/43-73) |
| [Ai开放平台](https://top.aibase.com/discover/43-74) | [43-74](https://rsshub.app/aibase/discover/43-74) |
| [Ai算力平台](https://top.aibase.com/discover/43-75) | [43-75](https://rsshub.app/aibase/discover/43-75) |
#### 聊天机器人
| 分类 | ID |
| ------------------------------------------------- | ------------------------------------------------- |
| [智能聊天](https://top.aibase.com/discover/44-76) | [44-76](https://rsshub.app/aibase/discover/44-76) |
| [智能客服](https://top.aibase.com/discover/44-77) | [44-77](https://rsshub.app/aibase/discover/44-77) |
#### 翻译
| 分类 | ID |
| --------------------------------------------- | ------------------------------------------------- |
| [翻译](https://top.aibase.com/discover/46-79) | [46-79](https://rsshub.app/aibase/discover/46-79) |
#### 教育学习
| 分类 | ID |
| ------------------------------------------------- | ------------------------------------------------- |
| [教育学习](https://top.aibase.com/discover/47-80) | [47-80](https://rsshub.app/aibase/discover/47-80) |
#### 智能营销
| 分类 | ID |
| ------------------------------------------------- | ------------------------------------------------- |
| [智能营销](https://top.aibase.com/discover/48-81) | [48-81](https://rsshub.app/aibase/discover/48-81) |
#### 法律
| 分类 | ID |
| ----------------------------------------------- | ----------------------------------------------------- |
| [法律](https://top.aibase.com/discover/138-139) | [138-139](https://rsshub.app/aibase/discover/138-139) |
</details>
`,
categories: ["new-media"],
features: {
requireConfig: false,
requirePuppeteer: false,
antiCrawler: false,
supportRadar: true,
supportBT: false,
supportPodcast: false,
supportScihub: false
},
radar: [
{
source: ["top.aibase.com/discover/:id"],
target: (params) => {
const id = params.id;
return `/discover${id ? `/${id}` : ""}`;
}
},
{
title: "图像处理 - 图片背景移除",
source: ["top.aibase.com/discover/37-49"],
target: "/discover/37-49"
},
{
title: "图像处理 - 图片无损放大",
source: ["top.aibase.com/discover/37-50"],
target: "/discover/37-50"
},
{
title: "图像处理 - 图片AI修复",
source: ["top.aibase.com/discover/37-51"],
target: "/discover/37-51"
},
{
title: "图像处理 - 图像生成",
source: ["top.aibase.com/discover/37-52"],
target: "/discover/37-52"
},
{
title: "图像处理 - Ai图片拓展",
source: ["top.aibase.com/discover/37-53"],
target: "/discover/37-53"
},
{
title: "图像处理 - Ai漫画生成",
source: ["top.aibase.com/discover/37-54"],
target: "/discover/37-54"
},
{
title: "图像处理 - Ai生成写真",
source: ["top.aibase.com/discover/37-55"],
target: "/discover/37-55"
},
{
title: "图像处理 - 电商图片制作",
source: ["top.aibase.com/discover/37-83"],
target: "/discover/37-83"
},
{
title: "图像处理 - Ai图像转视频",
source: ["top.aibase.com/discover/37-86"],
target: "/discover/37-86"
},
{
title: "视频创作 - 视频剪辑",
source: ["top.aibase.com/discover/38-56"],
target: "/discover/38-56"
},
{
title: "视频创作 - 生成视频",
source: ["top.aibase.com/discover/38-57"],
target: "/discover/38-57"
},
{
title: "视频创作 - Ai动画制作",
source: ["top.aibase.com/discover/38-58"],
target: "/discover/38-58"
},
{
title: "视频创作 - 字幕生成",
source: ["top.aibase.com/discover/38-84"],
target: "/discover/38-84"
},
{
title: "效率助手 - AI文档工具",
source: ["top.aibase.com/discover/39-59"],
target: "/discover/39-59"
},
{
title: "效率助手 - PPT",
source: ["top.aibase.com/discover/39-60"],
target: "/discover/39-60"
},
{
title: "效率助手 - 思维导图",
source: ["top.aibase.com/discover/39-61"],
target: "/discover/39-61"
},
{
title: "效率助手 - 表格处理",
source: ["top.aibase.com/discover/39-62"],
target: "/discover/39-62"
},
{
title: "效率助手 - Ai办公助手",
source: ["top.aibase.com/discover/39-63"],
target: "/discover/39-63"
},
{
title: "写作灵感 - 文案写作",
source: ["top.aibase.com/discover/40-64"],
target: "/discover/40-64"
},
{
title: "写作灵感 - 论文写作",
source: ["top.aibase.com/discover/40-88"],
target: "/discover/40-88"
},
{
title: "艺术灵感 - 音乐创作",
source: ["top.aibase.com/discover/41-65"],
target: "/discover/41-65"
},
{
title: "艺术灵感 - 设计创作",
source: ["top.aibase.com/discover/41-66"],
target: "/discover/41-66"
},
{
title: "艺术灵感 - Ai图标生成",
source: ["top.aibase.com/discover/41-67"],
target: "/discover/41-67"
},
{
title: "趣味 - Ai名字生成器",
source: ["top.aibase.com/discover/42-68"],
target: "/discover/42-68"
},
{
title: "趣味 - 游戏娱乐",
source: ["top.aibase.com/discover/42-71"],
target: "/discover/42-71"
},
{
title: "趣味 - 其他",
source: ["top.aibase.com/discover/42-72"],
target: "/discover/42-72"
},
{
title: "开发编程 - 开发编程",
source: ["top.aibase.com/discover/43-73"],
target: "/discover/43-73"
},
{
title: "开发编程 - Ai开放平台",
source: ["top.aibase.com/discover/43-74"],
target: "/discover/43-74"
},
{
title: "开发编程 - Ai算力平台",
source: ["top.aibase.com/discover/43-75"],
target: "/discover/43-75"
},
{
title: "聊天机器人 - 智能聊天",
source: ["top.aibase.com/discover/44-76"],
target: "/discover/44-76"
},
{
title: "聊天机器人 - 智能客服",
source: ["top.aibase.com/discover/44-77"],
target: "/discover/44-77"
},
{
title: "翻译 - 翻译",
source: ["top.aibase.com/discover/46-79"],
target: "/discover/46-79"
},
{
title: "教育学习 - 教育学习",
source: ["top.aibase.com/discover/47-80"],
target: "/discover/47-80"
},
{
title: "智能营销 - 智能营销",
source: ["top.aibase.com/discover/48-81"],
target: "/discover/48-81"
},
{
title: "法律 - 法律",
source: ["top.aibase.com/discover/138-139"],
target: "/discover/138-139"
}
]
};
//#endregion
export { handler, route };