From 1afe43eccd7868312e0c5c008ebe7bfedcd8a160 Mon Sep 17 00:00:00 2001 From: DIYgod Date: Tue, 12 Mar 2024 01:52:06 +0800 Subject: [PATCH] feat: add config description field --- lib/routes/bilibili/followers.ts | 11 ++++++++++- lib/routes/bilibili/followings-article.ts | 11 ++++++++++- lib/routes/bilibili/followings-dynamic.ts | 11 ++++++++++- lib/routes/bilibili/followings-video.ts | 11 ++++++++++- lib/routes/bilibili/followings.ts | 11 ++++++++++- lib/routes/bilibili/manga-followings.ts | 11 ++++++++++- lib/routes/bilibili/watchlater.ts | 11 ++++++++++- lib/routes/civitai/discussions.ts | 7 ++++++- lib/routes/discord/channel.ts | 7 ++++++- lib/routes/discourse/notifications.ts | 7 ++++++- lib/routes/discourse/posts.ts | 7 ++++++- lib/routes/github/notifications.ts | 7 ++++++- lib/routes/github/trending.ts | 7 ++++++- lib/routes/google/fonts.ts | 7 ++++++- lib/routes/instagram/private-api/index.ts | 8 +++++++- lib/routes/iwara/subscriptions.ts | 11 ++++++++++- lib/routes/lemmy/index.ts | 7 ++++++- lib/routes/manhuagui/subscribe.ts | 7 ++++++- lib/routes/medium/following.ts | 7 ++++++- lib/routes/medium/for-you.ts | 7 ++++++- lib/routes/medium/tag.ts | 7 ++++++- lib/routes/mihoyo/bbs/timeline.ts | 7 ++++++- lib/routes/newrank/douyin.ts | 7 ++++++- lib/routes/newrank/wechat.ts | 7 ++++++- lib/routes/notion/database.ts | 7 ++++++- lib/routes/pianyuan/app.ts | 7 ++++++- lib/routes/pixabay/search.ts | 8 +++++++- lib/routes/pixiv/illustfollow.ts | 7 ++++++- lib/routes/qweather/3days.ts | 7 ++++++- lib/routes/qweather/now.ts | 7 ++++++- lib/routes/rsshub/transform/html.ts | 7 ++++++- lib/routes/rsshub/transform/json.ts | 7 ++++++- lib/routes/sehuatang/user.ts | 7 ++++++- lib/routes/spotify/artist.ts | 11 ++++++++++- lib/routes/spotify/artists-top.ts | 15 ++++++++++++++- lib/routes/spotify/playlist.ts | 11 ++++++++++- lib/routes/spotify/saved.ts | 15 ++++++++++++++- lib/routes/spotify/show.ts | 11 ++++++++++- lib/routes/spotify/tracks-top.ts | 15 ++++++++++++++- lib/routes/tophub/index.ts | 8 +++++++- lib/routes/tophub/list.ts | 8 +++++++- lib/routes/twitter/collection.ts | 11 ++++++++++- lib/routes/twitter/followings.ts | 11 ++++++++++- lib/routes/twitter/keyword.ts | 11 ++++++++++- lib/routes/twitter/media.ts | 11 ++++++++++- lib/routes/twitter/tweet.ts | 11 ++++++++++- lib/routes/twitter/user.ts | 11 ++++++++++- lib/routes/weibo/friends.ts | 7 ++++++- lib/routes/weibo/group.ts | 7 ++++++- lib/routes/weibo/timeline.ts | 11 ++++++++++- lib/routes/ximalaya/album.ts | 7 ++++++- lib/routes/youtube/subscriptions.ts | 19 ++++++++++++++++++- lib/routes/zhihu/timeline.ts | 7 ++++++- lib/routes/zodgame/forum.ts | 7 ++++++- lib/types.ts | 8 +++++++- 55 files changed, 443 insertions(+), 55 deletions(-) diff --git a/lib/routes/bilibili/followers.ts b/lib/routes/bilibili/followers.ts index 090f83079..22c6ba678 100644 --- a/lib/routes/bilibili/followers.ts +++ b/lib/routes/bilibili/followers.ts @@ -9,7 +9,16 @@ export const route: Route = { example: '/bilibili/user/followers/2267573/3', parameters: { uid: '用户 id, 可在 UP 主主页中找到', loginUid: '用于登入的用户id,需要配置对应的 Cookie 值' }, features: { - requireConfig: ['BILIBILI_COOKIE_*'], + requireConfig: [ + { + name: 'BILIBILI_COOKIE_*', + description: `BILIBILI_COOKIE_{uid}: 用于用户关注动态系列路由,对应 uid 的 b 站用户登录后的 Cookie 值,\`{uid}\` 替换为 uid,如 \`BILIBILI_COOKIE_2267573\`,获取方式: +1. 打开 [https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/dynamic_new?uid=0&type=8](https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/dynamic_new?uid=0&type=8) +2. 打开控制台,切换到 Network 面板,刷新 +3. 点击 dynamic_new 请求,找到 Cookie +4. 视频和专栏,UP 主粉丝及关注只要求 \`SESSDATA\` 字段,动态需复制整段 Cookie`, + }, + ], requirePuppeteer: false, antiCrawler: false, supportBT: false, diff --git a/lib/routes/bilibili/followings-article.ts b/lib/routes/bilibili/followings-article.ts index 05c473793..6eab9ceb6 100644 --- a/lib/routes/bilibili/followings-article.ts +++ b/lib/routes/bilibili/followings-article.ts @@ -9,7 +9,16 @@ export const route: Route = { example: '/bilibili/followings/article/99800931', parameters: { uid: '用户 id' }, features: { - requireConfig: ['BILIBILI_COOKIE_*'], + requireConfig: [ + { + name: 'BILIBILI_COOKIE_*', + description: `BILIBILI_COOKIE_{uid}: 用于用户关注动态系列路由,对应 uid 的 b 站用户登录后的 Cookie 值,\`{uid}\` 替换为 uid,如 \`BILIBILI_COOKIE_2267573\`,获取方式: + 1. 打开 [https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/dynamic_new?uid=0&type=8](https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/dynamic_new?uid=0&type=8) + 2. 打开控制台,切换到 Network 面板,刷新 + 3. 点击 dynamic_new 请求,找到 Cookie + 4. 视频和专栏,UP 主粉丝及关注只要求 \`SESSDATA\` 字段,动态需复制整段 Cookie`, + }, + ], requirePuppeteer: false, antiCrawler: false, supportBT: false, diff --git a/lib/routes/bilibili/followings-dynamic.ts b/lib/routes/bilibili/followings-dynamic.ts index ecd202b99..5c637d98d 100644 --- a/lib/routes/bilibili/followings-dynamic.ts +++ b/lib/routes/bilibili/followings-dynamic.ts @@ -13,7 +13,16 @@ export const route: Route = { example: '/bilibili/followings/dynamic/109937383', parameters: { uid: '用户 id', routeParams: '额外参数;请参阅 [#UP 主动态](#bilibili-up-zhu-dong-tai) 的说明和表格' }, features: { - requireConfig: ['BILIBILI_COOKIE_*'], + requireConfig: [ + { + name: 'BILIBILI_COOKIE_*', + description: `BILIBILI_COOKIE_{uid}: 用于用户关注动态系列路由,对应 uid 的 b 站用户登录后的 Cookie 值,\`{uid}\` 替换为 uid,如 \`BILIBILI_COOKIE_2267573\`,获取方式: + 1. 打开 [https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/dynamic_new?uid=0&type=8](https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/dynamic_new?uid=0&type=8) + 2. 打开控制台,切换到 Network 面板,刷新 + 3. 点击 dynamic_new 请求,找到 Cookie + 4. 视频和专栏,UP 主粉丝及关注只要求 \`SESSDATA\` 字段,动态需复制整段 Cookie`, + }, + ], requirePuppeteer: false, antiCrawler: false, supportBT: false, diff --git a/lib/routes/bilibili/followings-video.ts b/lib/routes/bilibili/followings-video.ts index f43e5fcf5..50d50943a 100644 --- a/lib/routes/bilibili/followings-video.ts +++ b/lib/routes/bilibili/followings-video.ts @@ -10,7 +10,16 @@ export const route: Route = { example: '/bilibili/followings/video/2267573', parameters: { uid: '用户 id', disableEmbed: '默认为开启内嵌视频, 任意值为关闭' }, features: { - requireConfig: ['BILIBILI_COOKIE_*'], + requireConfig: [ + { + name: 'BILIBILI_COOKIE_*', + description: `BILIBILI_COOKIE_{uid}: 用于用户关注动态系列路由,对应 uid 的 b 站用户登录后的 Cookie 值,\`{uid}\` 替换为 uid,如 \`BILIBILI_COOKIE_2267573\`,获取方式: + 1. 打开 [https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/dynamic_new?uid=0&type=8](https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/dynamic_new?uid=0&type=8) + 2. 打开控制台,切换到 Network 面板,刷新 + 3. 点击 dynamic_new 请求,找到 Cookie + 4. 视频和专栏,UP 主粉丝及关注只要求 \`SESSDATA\` 字段,动态需复制整段 Cookie`, + }, + ], requirePuppeteer: false, antiCrawler: false, supportBT: false, diff --git a/lib/routes/bilibili/followings.ts b/lib/routes/bilibili/followings.ts index 7ca611c70..b9d8b6b24 100644 --- a/lib/routes/bilibili/followings.ts +++ b/lib/routes/bilibili/followings.ts @@ -9,7 +9,16 @@ export const route: Route = { example: '/bilibili/user/followings/2267573/3', parameters: { uid: '用户 id, 可在 UP 主主页中找到', loginUid: '用于登入的用户id,需要配置对应的 Cookie 值' }, features: { - requireConfig: ['BILIBILI_COOKIE_*'], + requireConfig: [ + { + name: 'BILIBILI_COOKIE_*', + description: `BILIBILI_COOKIE_{uid}: 用于用户关注动态系列路由,对应 uid 的 b 站用户登录后的 Cookie 值,\`{uid}\` 替换为 uid,如 \`BILIBILI_COOKIE_2267573\`,获取方式: + 1. 打开 [https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/dynamic_new?uid=0&type=8](https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/dynamic_new?uid=0&type=8) + 2. 打开控制台,切换到 Network 面板,刷新 + 3. 点击 dynamic_new 请求,找到 Cookie + 4. 视频和专栏,UP 主粉丝及关注只要求 \`SESSDATA\` 字段,动态需复制整段 Cookie`, + }, + ], requirePuppeteer: false, antiCrawler: false, supportBT: false, diff --git a/lib/routes/bilibili/manga-followings.ts b/lib/routes/bilibili/manga-followings.ts index 0785fb850..bd134bc78 100644 --- a/lib/routes/bilibili/manga-followings.ts +++ b/lib/routes/bilibili/manga-followings.ts @@ -9,7 +9,16 @@ export const route: Route = { example: '/bilibili/manga/followings/26009', parameters: { uid: '用户 id', limits: '抓取最近更新前多少本漫画,默认为10' }, features: { - requireConfig: ['BILIBILI_COOKIE_*'], + requireConfig: [ + { + name: 'BILIBILI_COOKIE_*', + description: `BILIBILI_COOKIE_{uid}: 用于用户关注动态系列路由,对应 uid 的 b 站用户登录后的 Cookie 值,\`{uid}\` 替换为 uid,如 \`BILIBILI_COOKIE_2267573\`,获取方式: + 1. 打开 [https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/dynamic_new?uid=0&type=8](https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/dynamic_new?uid=0&type=8) + 2. 打开控制台,切换到 Network 面板,刷新 + 3. 点击 dynamic_new 请求,找到 Cookie + 4. 视频和专栏,UP 主粉丝及关注只要求 \`SESSDATA\` 字段,动态需复制整段 Cookie`, + }, + ], requirePuppeteer: false, antiCrawler: false, supportBT: false, diff --git a/lib/routes/bilibili/watchlater.ts b/lib/routes/bilibili/watchlater.ts index bcad041dc..fe43348ee 100644 --- a/lib/routes/bilibili/watchlater.ts +++ b/lib/routes/bilibili/watchlater.ts @@ -11,7 +11,16 @@ export const route: Route = { example: '/bilibili/watchlater/2267573', parameters: { uid: '用户 id', disableEmbed: '默认为开启内嵌视频, 任意值为关闭' }, features: { - requireConfig: ['BILIBILI_COOKIE_*'], + requireConfig: [ + { + name: 'BILIBILI_COOKIE_*', + description: `BILIBILI_COOKIE_{uid}: 用于用户关注动态系列路由,对应 uid 的 b 站用户登录后的 Cookie 值,\`{uid}\` 替换为 uid,如 \`BILIBILI_COOKIE_2267573\`,获取方式: + 1. 打开 [https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/dynamic_new?uid=0&type=8](https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/dynamic_new?uid=0&type=8) + 2. 打开控制台,切换到 Network 面板,刷新 + 3. 点击 dynamic_new 请求,找到 Cookie + 4. 视频和专栏,UP 主粉丝及关注只要求 \`SESSDATA\` 字段,动态需复制整段 Cookie`, + }, + ], requirePuppeteer: false, antiCrawler: false, supportBT: false, diff --git a/lib/routes/civitai/discussions.ts b/lib/routes/civitai/discussions.ts index fa2213b7a..1846899f1 100644 --- a/lib/routes/civitai/discussions.ts +++ b/lib/routes/civitai/discussions.ts @@ -10,7 +10,12 @@ export const route: Route = { example: '/civitai/discussions/4384', parameters: { modelId: 'N' }, features: { - requireConfig: ['CIVITAI_COOKIE'], + requireConfig: [ + { + name: 'CIVITAI_COOKIE', + description: '', + }, + ], requirePuppeteer: false, antiCrawler: false, supportBT: false, diff --git a/lib/routes/discord/channel.ts b/lib/routes/discord/channel.ts index 4e7bf25d1..87d468eb3 100644 --- a/lib/routes/discord/channel.ts +++ b/lib/routes/discord/channel.ts @@ -15,7 +15,12 @@ export const route: Route = { example: '/discord/channel/950465850056536084', parameters: { channelId: 'Channel ID' }, features: { - requireConfig: ['DISCORD_AUTHORIZATION'], + requireConfig: [ + { + name: 'DISCORD_AUTHORIZATION', + description: '', + }, + ], requirePuppeteer: false, antiCrawler: false, supportBT: false, diff --git a/lib/routes/discourse/notifications.ts b/lib/routes/discourse/notifications.ts index bd0932bef..2216a50bc 100644 --- a/lib/routes/discourse/notifications.ts +++ b/lib/routes/discourse/notifications.ts @@ -9,7 +9,12 @@ export const route: Route = { example: '/discourse/0/notifications', parameters: { configId: 'Environment variable configuration id, see above', fulltext: 'Fetch the content if the notification points to a post. This is disabled by default, set it to `1` to enable it.' }, features: { - requireConfig: ['DISCOURSE_CONFIG_*'], + requireConfig: [ + { + name: 'DISCOURSE_CONFIG_*', + description: '', + }, + ], requirePuppeteer: false, antiCrawler: false, supportBT: false, diff --git a/lib/routes/discourse/posts.ts b/lib/routes/discourse/posts.ts index 805d37220..9e4f4e66f 100644 --- a/lib/routes/discourse/posts.ts +++ b/lib/routes/discourse/posts.ts @@ -9,7 +9,12 @@ export const route: Route = { example: '/discourse/0/posts', parameters: { configId: 'Environment variable configuration id, see above' }, features: { - requireConfig: ['DISCOURSE_CONFIG_*'], + requireConfig: [ + { + name: 'DISCOURSE_CONFIG_*', + description: '', + }, + ], requirePuppeteer: false, antiCrawler: false, supportBT: false, diff --git a/lib/routes/github/notifications.ts b/lib/routes/github/notifications.ts index 74e1fd106..5643499ab 100644 --- a/lib/routes/github/notifications.ts +++ b/lib/routes/github/notifications.ts @@ -11,7 +11,12 @@ export const route: Route = { example: '/github/notifications', parameters: {}, features: { - requireConfig: ['GITHUB_ACCESS_TOKEN'], + requireConfig: [ + { + name: 'GITHUB_ACCESS_TOKEN', + description: '', + }, + ], requirePuppeteer: false, antiCrawler: false, supportBT: false, diff --git a/lib/routes/github/trending.ts b/lib/routes/github/trending.ts index 0f7f7a06a..37622b0e4 100644 --- a/lib/routes/github/trending.ts +++ b/lib/routes/github/trending.ts @@ -18,7 +18,12 @@ export const route: Route = { spoken_language: "natural language, available in [Trending page](https://github.com/trending/javascript?since=monthly) 's URL", }, features: { - requireConfig: ['GITHUB_ACCESS_TOKEN'], + requireConfig: [ + { + name: 'GITHUB_ACCESS_TOKEN', + description: '', + }, + ], requirePuppeteer: false, antiCrawler: false, supportBT: false, diff --git a/lib/routes/google/fonts.ts b/lib/routes/google/fonts.ts index 919e264cc..c21ac8b49 100644 --- a/lib/routes/google/fonts.ts +++ b/lib/routes/google/fonts.ts @@ -22,7 +22,12 @@ export const route: Route = { example: '/google/fonts/date', parameters: { sort: 'Sorting type, see below, default to `date`' }, features: { - requireConfig: ['GOOGLE_FONTS_API_KEY'], + requireConfig: [ + { + name: 'GOOGLE_FONTS_API_KEY', + description: '', + }, + ], requirePuppeteer: false, antiCrawler: false, supportBT: false, diff --git a/lib/routes/instagram/private-api/index.ts b/lib/routes/instagram/private-api/index.ts index ca3312fec..ce6af2cb6 100644 --- a/lib/routes/instagram/private-api/index.ts +++ b/lib/routes/instagram/private-api/index.ts @@ -61,7 +61,13 @@ export const route: Route = { example: '/instagram/user/stefaniejoosten', parameters: { category: 'Feed category, see table above', key: 'Username / Hashtag name' }, features: { - requireConfig: ['IG_PROXY?'], + requireConfig: [ + { + name: 'IG_PROXY', + optional: true, + description: '', + }, + ], requirePuppeteer: false, antiCrawler: true, supportBT: false, diff --git a/lib/routes/iwara/subscriptions.ts b/lib/routes/iwara/subscriptions.ts index 41b725ea5..b2e116550 100644 --- a/lib/routes/iwara/subscriptions.ts +++ b/lib/routes/iwara/subscriptions.ts @@ -19,7 +19,16 @@ export const route: Route = { example: '/iwara/subscriptions', parameters: {}, features: { - requireConfig: ['IWARA_USERNAME', 'IWARA_PASSWORD'], + requireConfig: [ + { + name: 'IWARA_USERNAME', + description: '', + }, + { + name: 'IWARA_PASSWORD', + description: '', + }, + ], requirePuppeteer: false, antiCrawler: false, supportBT: false, diff --git a/lib/routes/lemmy/index.ts b/lib/routes/lemmy/index.ts index 81aee822d..256991c92 100644 --- a/lib/routes/lemmy/index.ts +++ b/lib/routes/lemmy/index.ts @@ -12,7 +12,12 @@ export const route: Route = { example: '/lemmy/technology@lemmy.world/Hot', parameters: { community: 'Lemmmy community, for example technology@lemmy.world', sort: 'Sort by, defaut to Active' }, features: { - requireConfig: ['ALLOW_USER_SUPPLY_UNSAFE_DOMAIN'], + requireConfig: [ + { + name: 'ALLOW_USER_SUPPLY_UNSAFE_DOMAIN', + description: '', + }, + ], requirePuppeteer: false, antiCrawler: false, supportBT: false, diff --git a/lib/routes/manhuagui/subscribe.ts b/lib/routes/manhuagui/subscribe.ts index 6facef217..a9c316ce0 100644 --- a/lib/routes/manhuagui/subscribe.ts +++ b/lib/routes/manhuagui/subscribe.ts @@ -16,7 +16,12 @@ export const route: Route = { example: '/manhuagui/subscribe', parameters: {}, features: { - requireConfig: ['MHGUI_COOKIE'], + requireConfig: [ + { + name: 'MHGUI_COOKIE', + description: '', + }, + ], requirePuppeteer: false, antiCrawler: false, supportBT: false, diff --git a/lib/routes/medium/following.ts b/lib/routes/medium/following.ts index 2efdd81fb..bcaded1aa 100644 --- a/lib/routes/medium/following.ts +++ b/lib/routes/medium/following.ts @@ -10,7 +10,12 @@ export const route: Route = { example: '/medium/following/imsingee', parameters: { user: 'Username' }, features: { - requireConfig: ['MEDIUM_COOKIE_*'], + requireConfig: [ + { + name: 'MEDIUM_COOKIE_*', + description: '', + }, + ], requirePuppeteer: false, antiCrawler: false, supportBT: false, diff --git a/lib/routes/medium/for-you.ts b/lib/routes/medium/for-you.ts index f0dc1cc8f..320100c14 100644 --- a/lib/routes/medium/for-you.ts +++ b/lib/routes/medium/for-you.ts @@ -10,7 +10,12 @@ export const route: Route = { example: '/medium/for-you/imsingee', parameters: { user: 'Username' }, features: { - requireConfig: ['MEDIUM_COOKIE_*'], + requireConfig: [ + { + name: 'MEDIUM_COOKIE_*', + description: '', + }, + ], requirePuppeteer: false, antiCrawler: false, supportBT: false, diff --git a/lib/routes/medium/tag.ts b/lib/routes/medium/tag.ts index 32e86995a..07ac433b5 100644 --- a/lib/routes/medium/tag.ts +++ b/lib/routes/medium/tag.ts @@ -10,7 +10,12 @@ export const route: Route = { example: '/medium/tag/imsingee/cybersecurity', parameters: { user: 'Username', tag: 'Subscribed Tag' }, features: { - requireConfig: ['MEDIUM_COOKIE_*'], + requireConfig: [ + { + name: 'MEDIUM_COOKIE_*', + description: '', + }, + ], requirePuppeteer: false, antiCrawler: false, supportBT: false, diff --git a/lib/routes/mihoyo/bbs/timeline.ts b/lib/routes/mihoyo/bbs/timeline.ts index e3396aad8..b7c2b725e 100644 --- a/lib/routes/mihoyo/bbs/timeline.ts +++ b/lib/routes/mihoyo/bbs/timeline.ts @@ -10,7 +10,12 @@ export const route: Route = { example: '/mihoyo/bbs/timeline', parameters: {}, features: { - requireConfig: ['MIHOYO_COOKIE'], + requireConfig: [ + { + name: 'MIHOYO_COOKIE', + description: '', + }, + ], requirePuppeteer: false, antiCrawler: false, supportBT: false, diff --git a/lib/routes/newrank/douyin.ts b/lib/routes/newrank/douyin.ts index 9f2cc3400..dabdae87d 100644 --- a/lib/routes/newrank/douyin.ts +++ b/lib/routes/newrank/douyin.ts @@ -9,7 +9,12 @@ export const route: Route = { example: '/newrank/douyin/110266463747', parameters: { dyid: '抖音ID,可在新榜账号详情 URL 中找到' }, features: { - requireConfig: ['NEWRANK_COOKIE'], + requireConfig: [ + { + name: 'NEWRANK_COOKIE', + description: '', + }, + ], requirePuppeteer: false, antiCrawler: true, supportBT: false, diff --git a/lib/routes/newrank/wechat.ts b/lib/routes/newrank/wechat.ts index 666da75ab..d84a5c145 100644 --- a/lib/routes/newrank/wechat.ts +++ b/lib/routes/newrank/wechat.ts @@ -11,7 +11,12 @@ export const route: Route = { example: '/newrank/wechat/chijiread', parameters: { wxid: '微信号,若微信号与新榜信息不一致,以新榜为准' }, features: { - requireConfig: ['NEWRANK_COOKIE'], + requireConfig: [ + { + name: 'NEWRANK_COOKIE', + description: '', + }, + ], requirePuppeteer: false, antiCrawler: true, supportBT: false, diff --git a/lib/routes/notion/database.ts b/lib/routes/notion/database.ts index 5b9d1ecd2..a2c21f8c2 100644 --- a/lib/routes/notion/database.ts +++ b/lib/routes/notion/database.ts @@ -19,7 +19,12 @@ export const route: Route = { example: '/notion/database/a7cc133b68454f138011f1530a13531e', parameters: { databaseId: 'Database ID' }, features: { - requireConfig: ['NOTION_TOKEN'], + requireConfig: [ + { + name: 'NOTION_TOKEN', + description: '', + }, + ], requirePuppeteer: false, antiCrawler: false, supportBT: false, diff --git a/lib/routes/pianyuan/app.ts b/lib/routes/pianyuan/app.ts index cc659f549..9b51595cd 100644 --- a/lib/routes/pianyuan/app.ts +++ b/lib/routes/pianyuan/app.ts @@ -9,7 +9,12 @@ export const route: Route = { example: '/pianyuan/index', parameters: { media: '类别,见下表,默认为首页' }, features: { - requireConfig: ['PIANYUAN_COOKIE'], + requireConfig: [ + { + name: 'PIANYUAN_COOKIE', + description: '', + }, + ], requirePuppeteer: false, antiCrawler: false, supportBT: false, diff --git a/lib/routes/pixabay/search.ts b/lib/routes/pixabay/search.ts index eac27332a..f71fa8b64 100644 --- a/lib/routes/pixabay/search.ts +++ b/lib/routes/pixabay/search.ts @@ -14,7 +14,13 @@ export const route: Route = { example: '/pixabay/search/cat', parameters: { q: 'Search term', order: 'Order, `popular` or `latest`, `latest` by default' }, features: { - requireConfig: ['PIXABAY_KEY?'], + requireConfig: [ + { + name: 'PIXABAY_KEY', + optional: true, + description: '', + }, + ], requirePuppeteer: false, antiCrawler: false, supportBT: false, diff --git a/lib/routes/pixiv/illustfollow.ts b/lib/routes/pixiv/illustfollow.ts index 061826c37..24e53a7b6 100644 --- a/lib/routes/pixiv/illustfollow.ts +++ b/lib/routes/pixiv/illustfollow.ts @@ -12,7 +12,12 @@ export const route: Route = { example: '/pixiv/user/illustfollows', parameters: {}, features: { - requireConfig: ['PIXIV_REFRESHTOKEN'], + requireConfig: [ + { + name: 'PIXIV_REFRESHTOKEN', + description: '', + }, + ], requirePuppeteer: false, antiCrawler: false, supportBT: false, diff --git a/lib/routes/qweather/3days.ts b/lib/routes/qweather/3days.ts index 5003dfa12..cd8134ae2 100644 --- a/lib/routes/qweather/3days.ts +++ b/lib/routes/qweather/3days.ts @@ -19,7 +19,12 @@ export const route: Route = { example: '/qweather/3days/广州', parameters: { location: 'N' }, features: { - requireConfig: ['HEFENG_KEY'], + requireConfig: [ + { + name: 'HEFENG_KEY', + description: '', + }, + ], requirePuppeteer: false, antiCrawler: false, supportBT: false, diff --git a/lib/routes/qweather/now.ts b/lib/routes/qweather/now.ts index 367e588ad..db57d3a08 100644 --- a/lib/routes/qweather/now.ts +++ b/lib/routes/qweather/now.ts @@ -15,7 +15,12 @@ export const route: Route = { example: '/qweather/广州', parameters: { location: 'N' }, features: { - requireConfig: ['HEFENG_KEY'], + requireConfig: [ + { + name: 'HEFENG_KEY', + description: '', + }, + ], requirePuppeteer: false, antiCrawler: false, supportBT: false, diff --git a/lib/routes/rsshub/transform/html.ts b/lib/routes/rsshub/transform/html.ts index a0ce8a63b..91889d4d8 100644 --- a/lib/routes/rsshub/transform/html.ts +++ b/lib/routes/rsshub/transform/html.ts @@ -9,7 +9,12 @@ export const route: Route = { example: '/rsshub/transform/html/https%3A%2F%2Fwechat2rss.xlab.app%2Fposts%2Flist%2F/item=div%5Bclass%3D%27post%2Dcontent%27%5D%20p%20a', parameters: { url: '`encodeURIComponent`ed URL address', routeParams: 'Transformation rules, requires URL encode' }, features: { - requireConfig: ['ALLOW_USER_SUPPLY_UNSAFE_DOMAIN'], + requireConfig: [ + { + name: 'ALLOW_USER_SUPPLY_UNSAFE_DOMAIN', + description: '', + }, + ], requirePuppeteer: false, antiCrawler: false, supportBT: false, diff --git a/lib/routes/rsshub/transform/json.ts b/lib/routes/rsshub/transform/json.ts index 67957c8d7..c61bde64b 100644 --- a/lib/routes/rsshub/transform/json.ts +++ b/lib/routes/rsshub/transform/json.ts @@ -21,7 +21,12 @@ export const route: Route = { example: '/rsshub/transform/json/https%3A%2F%2Fapi.github.com%2Frepos%2Fginuerzh%2Fgost%2Freleases/title=Gost%20releases&itemTitle=tag_name&itemLink=html_url&itemDesc=body', parameters: { url: '`encodeURIComponent`ed URL address', routeParams: 'Transformation rules, requires URL encode' }, features: { - requireConfig: ['ALLOW_USER_SUPPLY_UNSAFE_DOMAIN'], + requireConfig: [ + { + name: 'ALLOW_USER_SUPPLY_UNSAFE_DOMAIN', + description: '', + }, + ], requirePuppeteer: false, antiCrawler: false, supportBT: false, diff --git a/lib/routes/sehuatang/user.ts b/lib/routes/sehuatang/user.ts index c1edca7d3..1d4d076fe 100644 --- a/lib/routes/sehuatang/user.ts +++ b/lib/routes/sehuatang/user.ts @@ -14,7 +14,12 @@ export const route: Route = { example: '/sehuatang/user/411096', parameters: { uid: '用户 uid, 可在用户主页 URL 中找到' }, features: { - requireConfig: ['SEHUATANG_COOKIE'], + requireConfig: [ + { + name: 'SEHUATANG_COOKIE', + description: '', + }, + ], requirePuppeteer: false, antiCrawler: false, supportBT: false, diff --git a/lib/routes/spotify/artist.ts b/lib/routes/spotify/artist.ts index 5620dafa2..4d8b048d7 100644 --- a/lib/routes/spotify/artist.ts +++ b/lib/routes/spotify/artist.ts @@ -9,7 +9,16 @@ export const route: Route = { example: '/spotify/artist/6k9TBCxyr4bXwZ8Y21Kwn1', parameters: { id: 'Artist ID' }, features: { - requireConfig: ['SPOTIFY_CLIENT_ID', 'SPOTIFY_CLIENT_SECRET'], + requireConfig: [ + { + name: 'SPOTIFY_CLIENT_ID', + description: '', + }, + { + name: 'SPOTIFY_CLIENT_SECRET', + description: '', + }, + ], requirePuppeteer: false, antiCrawler: false, supportBT: false, diff --git a/lib/routes/spotify/artists-top.ts b/lib/routes/spotify/artists-top.ts index 200932da5..24e63bee8 100644 --- a/lib/routes/spotify/artists-top.ts +++ b/lib/routes/spotify/artists-top.ts @@ -8,7 +8,20 @@ export const route: Route = { example: '/spotify/top/artists', parameters: {}, features: { - requireConfig: ['SPOTIFY_CLIENT_ID', 'SPOTIFY_CLIENT_SECRET', 'SPOTIFY_REFRESHTOKEN'], + requireConfig: [ + { + name: 'SPOTIFY_CLIENT_ID', + description: '', + }, + { + name: 'SPOTIFY_CLIENT_SECRET', + description: '', + }, + { + name: 'SPOTIFY_REFRESHTOKEN', + description: '', + }, + ], requirePuppeteer: false, antiCrawler: false, supportBT: false, diff --git a/lib/routes/spotify/playlist.ts b/lib/routes/spotify/playlist.ts index f48e967d9..e7c873c19 100644 --- a/lib/routes/spotify/playlist.ts +++ b/lib/routes/spotify/playlist.ts @@ -9,7 +9,16 @@ export const route: Route = { example: '/spotify/playlist/4UBVy1LttvodwivPUuwJk2', parameters: { id: 'Playlist ID' }, features: { - requireConfig: ['SPOTIFY_CLIENT_ID', 'SPOTIFY_CLIENT_SECRET'], + requireConfig: [ + { + name: 'SPOTIFY_CLIENT_ID', + description: '', + }, + { + name: 'SPOTIFY_CLIENT_SECRET', + description: '', + }, + ], requirePuppeteer: false, antiCrawler: false, supportBT: false, diff --git a/lib/routes/spotify/saved.ts b/lib/routes/spotify/saved.ts index 82ee03306..a985dcac2 100644 --- a/lib/routes/spotify/saved.ts +++ b/lib/routes/spotify/saved.ts @@ -9,7 +9,20 @@ export const route: Route = { example: '/spotify/saved/50', parameters: { limit: 'Track count, 50 by default' }, features: { - requireConfig: ['SPOTIFY_CLIENT_ID', 'SPOTIFY_CLIENT_SECRET', 'SPOTIFY_REFRESHTOKEN'], + requireConfig: [ + { + name: 'SPOTIFY_CLIENT_ID', + description: '', + }, + { + name: 'SPOTIFY_CLIENT_SECRET', + description: '', + }, + { + name: 'SPOTIFY_REFRESHTOKEN', + description: '', + }, + ], requirePuppeteer: false, antiCrawler: false, supportBT: false, diff --git a/lib/routes/spotify/show.ts b/lib/routes/spotify/show.ts index c3cdea5b1..1c3162493 100644 --- a/lib/routes/spotify/show.ts +++ b/lib/routes/spotify/show.ts @@ -9,7 +9,16 @@ export const route: Route = { example: '/spotify/show/5CfCWKI5pZ28U0uOzXkDHe', parameters: { id: 'Show ID' }, features: { - requireConfig: ['SPOTIFY_CLIENT_ID', 'SPOTIFY_CLIENT_SECRET'], + requireConfig: [ + { + name: 'SPOTIFY_CLIENT_ID', + description: '', + }, + { + name: 'SPOTIFY_CLIENT_SECRET', + description: '', + }, + ], requirePuppeteer: false, antiCrawler: false, supportBT: false, diff --git a/lib/routes/spotify/tracks-top.ts b/lib/routes/spotify/tracks-top.ts index 46d81302f..ea7587434 100644 --- a/lib/routes/spotify/tracks-top.ts +++ b/lib/routes/spotify/tracks-top.ts @@ -8,7 +8,20 @@ export const route: Route = { example: '/spotify/top/tracks', parameters: {}, features: { - requireConfig: ['SPOTIFY_CLIENT_ID', 'SPOTIFY_CLIENT_SECRET', 'SPOTIFY_REFRESHTOKEN'], + requireConfig: [ + { + name: 'SPOTIFY_CLIENT_ID', + description: '', + }, + { + name: 'SPOTIFY_CLIENT_SECRET', + description: '', + }, + { + name: 'SPOTIFY_REFRESHTOKEN', + description: '', + }, + ], requirePuppeteer: false, antiCrawler: false, supportBT: false, diff --git a/lib/routes/tophub/index.ts b/lib/routes/tophub/index.ts index 3f7e6c443..f07028854 100644 --- a/lib/routes/tophub/index.ts +++ b/lib/routes/tophub/index.ts @@ -9,7 +9,13 @@ export const route: Route = { example: '/tophub/Om4ejxvxEN', parameters: { id: '榜单id,可在 URL 中找到' }, features: { - requireConfig: ['TOPHUB_COOKIE?'], + requireConfig: [ + { + name: 'TOPHUB_COOKIE', + optional: true, + description: '', + }, + ], requirePuppeteer: false, antiCrawler: false, supportBT: false, diff --git a/lib/routes/tophub/list.ts b/lib/routes/tophub/list.ts index d7a9d05d5..add655ab3 100644 --- a/lib/routes/tophub/list.ts +++ b/lib/routes/tophub/list.ts @@ -14,7 +14,13 @@ export const route: Route = { example: '/tophub/list/Om4ejxvxEN', parameters: { id: '榜单id,可在 URL 中找到' }, features: { - requireConfig: ['TOPHUB_COOKIE?'], + requireConfig: [ + { + name: 'TOPHUB_COOKIE', + optional: true, + description: '', + }, + ], requirePuppeteer: false, antiCrawler: false, supportBT: false, diff --git a/lib/routes/twitter/collection.ts b/lib/routes/twitter/collection.ts index 73042c491..9d2ea78d0 100644 --- a/lib/routes/twitter/collection.ts +++ b/lib/routes/twitter/collection.ts @@ -11,7 +11,16 @@ export const route: Route = { example: '/twitter/collection/DIYgod/1527857429467172864', parameters: { uid: 'username, should match the generated token', collectionId: 'collection ID, can be found in URL', routeParams: 'extra parameters, see the table above' }, features: { - requireConfig: ['TWITTER_USERNAME', 'TWITTER_PASSWORD'], + requireConfig: [ + { + name: 'TWITTER_USERNAME', + description: '', + }, + { + name: 'TWITTER_PASSWORD', + description: '', + }, + ], requirePuppeteer: false, antiCrawler: false, supportBT: false, diff --git a/lib/routes/twitter/followings.ts b/lib/routes/twitter/followings.ts index abcaf4f54..b01a8080e 100644 --- a/lib/routes/twitter/followings.ts +++ b/lib/routes/twitter/followings.ts @@ -11,7 +11,16 @@ export const route: Route = { example: '/twitter/followings/DIYgod', parameters: { id: 'username', routeParams: 'extra parameters, see the table above' }, features: { - requireConfig: ['TWITTER_USERNAME', 'TWITTER_PASSWORD'], + requireConfig: [ + { + name: 'TWITTER_USERNAME', + description: '', + }, + { + name: 'TWITTER_PASSWORD', + description: '', + }, + ], requirePuppeteer: false, antiCrawler: false, supportBT: false, diff --git a/lib/routes/twitter/keyword.ts b/lib/routes/twitter/keyword.ts index 48e3e64d6..8250089fe 100644 --- a/lib/routes/twitter/keyword.ts +++ b/lib/routes/twitter/keyword.ts @@ -7,7 +7,16 @@ export const route: Route = { example: '/twitter/keyword/RSSHub', parameters: { keyword: 'keyword', routeParams: 'extra parameters, see the table above' }, features: { - requireConfig: ['TWITTER_USERNAME', 'TWITTER_PASSWORD'], + requireConfig: [ + { + name: 'TWITTER_USERNAME', + description: '', + }, + { + name: 'TWITTER_PASSWORD', + description: '', + }, + ], requirePuppeteer: false, antiCrawler: false, supportBT: false, diff --git a/lib/routes/twitter/media.ts b/lib/routes/twitter/media.ts index 9dff361a7..a891f6727 100644 --- a/lib/routes/twitter/media.ts +++ b/lib/routes/twitter/media.ts @@ -7,7 +7,16 @@ export const route: Route = { example: '/twitter/media/DIYgod', parameters: { id: 'username; in particular, if starts with `+`, it will be recognized as a [unique ID](https://github.com/DIYgod/RSSHub/issues/12221), e.g. `+44196397`', routeParams: 'extra parameters, see the table above.' }, features: { - requireConfig: ['TWITTER_USERNAME', 'TWITTER_PASSWORD'], + requireConfig: [ + { + name: 'TWITTER_USERNAME', + description: '', + }, + { + name: 'TWITTER_PASSWORD', + description: '', + }, + ], requirePuppeteer: false, antiCrawler: false, supportBT: false, diff --git a/lib/routes/twitter/tweet.ts b/lib/routes/twitter/tweet.ts index 014b1ea87..bdd4e14c9 100644 --- a/lib/routes/twitter/tweet.ts +++ b/lib/routes/twitter/tweet.ts @@ -11,7 +11,16 @@ export const route: Route = { original: 'extra parameters, data type of return, if the value is not `0`/`false` and `config.isPackage` is `true`, return the original data of twitter', }, features: { - requireConfig: ['TWITTER_USERNAME', 'TWITTER_PASSWORD'], + requireConfig: [ + { + name: 'TWITTER_USERNAME', + description: '', + }, + { + name: 'TWITTER_PASSWORD', + description: '', + }, + ], requirePuppeteer: false, antiCrawler: false, supportBT: false, diff --git a/lib/routes/twitter/user.ts b/lib/routes/twitter/user.ts index 2c0add147..704503ecd 100644 --- a/lib/routes/twitter/user.ts +++ b/lib/routes/twitter/user.ts @@ -11,7 +11,16 @@ export const route: Route = { 'extra parameters, see the table above; particularly when `routeParams=exclude_replies`, replies are excluded; `routeParams=exclude_rts` excludes retweets,`routeParams=exclude_rts_replies` exclude replies and retweets; for default include all.', }, features: { - requireConfig: ['TWITTER_USERNAME', 'TWITTER_PASSWORD'], + requireConfig: [ + { + name: 'TWITTER_USERNAME', + description: '', + }, + { + name: 'TWITTER_PASSWORD', + description: '', + }, + ], requirePuppeteer: false, antiCrawler: false, supportBT: false, diff --git a/lib/routes/weibo/friends.ts b/lib/routes/weibo/friends.ts index f7b572070..99ad445ce 100644 --- a/lib/routes/weibo/friends.ts +++ b/lib/routes/weibo/friends.ts @@ -12,7 +12,12 @@ export const route: Route = { example: '/weibo/friends', parameters: { routeParams: '额外参数;请参阅上面的说明和表格' }, features: { - requireConfig: ['WEIBO_COOKIES'], + requireConfig: [ + { + name: 'WEIBO_COOKIES', + description: '', + }, + ], requirePuppeteer: false, antiCrawler: false, supportBT: false, diff --git a/lib/routes/weibo/group.ts b/lib/routes/weibo/group.ts index a72b1afed..6f5d102d3 100644 --- a/lib/routes/weibo/group.ts +++ b/lib/routes/weibo/group.ts @@ -12,7 +12,12 @@ export const route: Route = { example: '/weibo/group/4541216424989965', parameters: { gid: '分组id, 在网页版分组地址栏末尾`?gid=`处获取', gname: '分组显示名称; 默认为: `微博分组`', routeParams: '额外参数;请参阅上面的说明和表格' }, features: { - requireConfig: ['WEIBO_COOKIES'], + requireConfig: [ + { + name: 'WEIBO_COOKIES', + description: '', + }, + ], requirePuppeteer: false, antiCrawler: false, supportBT: false, diff --git a/lib/routes/weibo/timeline.ts b/lib/routes/weibo/timeline.ts index a4e39c699..1ad62e6f8 100644 --- a/lib/routes/weibo/timeline.ts +++ b/lib/routes/weibo/timeline.ts @@ -13,7 +13,16 @@ export const route: Route = { example: '/weibo/timeline/3306934123', parameters: { uid: '用户的uid', feature: '过滤类型ID,0:全部、1:原创、2:图片、3:视频、4:音乐,默认为0。', routeParams: '额外参数;请参阅上面的说明和表格' }, features: { - requireConfig: ['WEIBO_APP_KEY', 'WEIBO_REDIRECT_URL'], + requireConfig: [ + { + name: 'WEIBO_APP_KEY', + description: '', + }, + { + name: 'WEIBO_REDIRECT_URL', + description: '', + }, + ], requirePuppeteer: false, antiCrawler: false, supportBT: false, diff --git a/lib/routes/ximalaya/album.ts b/lib/routes/ximalaya/album.ts index ca22b919d..519d5a7e3 100644 --- a/lib/routes/ximalaya/album.ts +++ b/lib/routes/ximalaya/album.ts @@ -87,7 +87,12 @@ export const route: Route = { example: '/ximalaya/album/299146', parameters: { type: '专辑类型, 通常可以使用 `album`,可在对应专辑页面的 URL 中找到', id: '专辑 id, 可在对应专辑页面的 URL 中找到', all: '是否需要获取全部节目,填入 `1`、`true`、`all` 视为获取所有节目,填入其他则不获取。' }, features: { - requireConfig: ['XIMALAYA_TOKEN'], + requireConfig: [ + { + name: 'XIMALAYA_TOKEN', + description: '', + }, + ], requirePuppeteer: false, antiCrawler: false, supportBT: false, diff --git a/lib/routes/youtube/subscriptions.ts b/lib/routes/youtube/subscriptions.ts index 19d8b160f..9e64fff1b 100644 --- a/lib/routes/youtube/subscriptions.ts +++ b/lib/routes/youtube/subscriptions.ts @@ -11,7 +11,24 @@ export const route: Route = { example: '/youtube/subscriptions', parameters: { embed: 'Default to embed the video, set to any value to disable embedding' }, features: { - requireConfig: ['YOUTUBE_KEY', 'YOUTUBE_CLIENT_ID', 'YOUTUBE_CLIENT_SECRET', 'YOUTUBE_REFRESH_TOKEN'], + requireConfig: [ + { + name: 'YOUTUBE_KEY', + description: '', + }, + { + name: 'YOUTUBE_CLIENT_ID', + description: '', + }, + { + name: 'YOUTUBE_CLIENT_SECRET', + description: '', + }, + { + name: 'YOUTUBE_REFRESH_TOKEN', + description: '', + }, + ], requirePuppeteer: false, antiCrawler: false, supportBT: false, diff --git a/lib/routes/zhihu/timeline.ts b/lib/routes/zhihu/timeline.ts index f85e8c360..bafa3130b 100644 --- a/lib/routes/zhihu/timeline.ts +++ b/lib/routes/zhihu/timeline.ts @@ -10,7 +10,12 @@ export const route: Route = { example: '/zhihu/timeline', parameters: {}, features: { - requireConfig: ['ZHIHU_COOKIES'], + requireConfig: [ + { + name: 'ZHIHU_COOKIES', + description: '', + }, + ], requirePuppeteer: false, antiCrawler: true, supportBT: false, diff --git a/lib/routes/zodgame/forum.ts b/lib/routes/zodgame/forum.ts index a3042784f..04c5a1b30 100644 --- a/lib/routes/zodgame/forum.ts +++ b/lib/routes/zodgame/forum.ts @@ -17,7 +17,12 @@ export const route: Route = { example: '/zodgame/forum/13', parameters: { fid: 'forum id, can be found in URL' }, features: { - requireConfig: ['ZODGAME_COOKIE'], + requireConfig: [ + { + name: 'ZODGAME_COOKIE', + description: '', + }, + ], requirePuppeteer: false, antiCrawler: false, supportBT: false, diff --git a/lib/types.ts b/lib/types.ts index 40409d51b..f885cc619 100644 --- a/lib/types.ts +++ b/lib/types.ts @@ -73,7 +73,13 @@ interface RouteItem { categories?: string[]; features: { - requireConfig?: (`${string}?` | `${string}*` | string)[] | false; + requireConfig?: + | { + name: string; + optional?: boolean; + description: string; + }[] + | false; requirePuppeteer?: boolean; antiCrawler?: boolean; supportRadar?: boolean;