diff --git a/Dockerfile b/Dockerfile index 9089f0ca955d48..bd96cee1503489 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,6 +8,7 @@ WORKDIR /app ARG USE_CHINA_NPM_REGISTRY=0 RUN \ set -ex && \ + npm install -g corepack@latest && \ corepack enable pnpm && \ if [ "$USE_CHINA_NPM_REGISTRY" = 1 ]; then \ echo 'use npm mirror' && \ @@ -102,7 +103,8 @@ RUN \ fi; \ echo 'Downloading Chromium...' && \ unset PUPPETEER_SKIP_DOWNLOAD && \ - corepack enable pnpm && \ + npm install -g corepack@latest && \ + corepack use pnpm@latest-9 && \ pnpm add puppeteer@$(cat /app/.puppeteer_version) --save-prod && \ pnpm rb ; \ else \ diff --git a/lib/config.ts b/lib/config.ts index ae084fab5cf184..2afbce8a7e85fa 100644 --- a/lib/config.ts +++ b/lib/config.ts @@ -238,6 +238,9 @@ export type Config = { instance?: string; token?: string; }; + misskey: { + accessToken?: string; + }; mox: { cookie: string; }; @@ -669,6 +672,9 @@ const calculateValue = () => { instance: envs.MINIFLUX_INSTANCE || 'https://reader.miniflux.app', token: envs.MINIFLUX_TOKEN || '', }, + misskey: { + accessToken: envs.MISSKEY_ACCESS_TOKEN, + }, mox: { cookie: envs.MOX_COOKIE, }, diff --git a/lib/routes/005/index.ts b/lib/routes/005/index.ts index 85f9f0d4548f0f..af4785a5d47d7f 100644 --- a/lib/routes/005/index.ts +++ b/lib/routes/005/index.ts @@ -108,9 +108,9 @@ export const route: Route = { example: '/005/zx', parameters: { category: '分类,可在对应分类页 URL 中找到,默认为二次元资讯' }, description: ` - | 二次元资讯 | 慢慢说 | 道听途说 | 展会资讯 | - | ---------- | ------ | -------- | -------- | - | zx | zwh | dtts | zh | +| 二次元资讯 | 慢慢说 | 道听途说 | 展会资讯 | +| ---------- | ------ | -------- | -------- | +| zx | zwh | dtts | zh | `, categories: ['anime'], diff --git a/lib/routes/0818tuan/index.ts b/lib/routes/0818tuan/index.ts index 436d28bc786d51..d39ee8927076c8 100644 --- a/lib/routes/0818tuan/index.ts +++ b/lib/routes/0818tuan/index.ts @@ -22,8 +22,8 @@ export const route: Route = { maintainers: ['TonyRL'], handler, description: `| 最新线报 | 实测活动 | 优惠券 | - | -------- | -------- | ------ | - | 1 | 2 | 3 |`, +| -------- | -------- | ------ | +| 1 | 2 | 3 |`, }; async function handler(ctx) { diff --git a/lib/routes/10jqka/realtimenews.ts b/lib/routes/10jqka/realtimenews.ts index 2fca4ec7cf8c82..48f821d30969e9 100644 --- a/lib/routes/10jqka/realtimenews.ts +++ b/lib/routes/10jqka/realtimenews.ts @@ -84,8 +84,8 @@ export const route: Route = { 若订阅 [7×24小时要闻直播](https://news.10jqka.com.cn/realtimenews.html) 的 \`公告\` 和 \`A股\` 标签。将 \`公告,A股\` 作为标签参数填入,此时路由为 [\`/10jqka/realtimenews/公告,A股\`](https://rsshub.app/10jqka/realtimenews/公告,A股)。 ::: - | 全部 | 重要 | A股 | 港股 | 美股 | 机会 | 异动 | 公告 | - | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | +| 全部 | 重要 | A股 | 港股 | 美股 | 机会 | 异动 | 公告 | +| ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | `, categories: ['finance'], diff --git a/lib/routes/12371/zxfb.ts b/lib/routes/12371/zxfb.ts index 06d1860d08d24c..756779f6fd143b 100644 --- a/lib/routes/12371/zxfb.ts +++ b/lib/routes/12371/zxfb.ts @@ -59,6 +59,6 @@ export const route: Route = { handler, url: 'www.12371.cn', description: `| 最新发布 | - | :------: | - | zxfb |`, +| :------: | +| zxfb |`, }; diff --git a/lib/routes/163/exclusive.ts b/lib/routes/163/exclusive.ts index 3a6a6ade0f007a..715fbbf05921be 100644 --- a/lib/routes/163/exclusive.ts +++ b/lib/routes/163/exclusive.ts @@ -99,23 +99,23 @@ export const route: Route = { maintainers: ['nczitzk'], handler, description: `| 分类 | 编号 | - | -------- | ---- | - | 首页 | | - | 轻松一刻 | qsyk | - | 槽值 | cz | - | 人间 | rj | - | 大国小民 | dgxm | - | 三三有梗 | ssyg | - | 数读 | sd | - | 看客 | kk | - | 下划线 | xhx | - | 谈心社 | txs | - | 哒哒 | dd | - | 胖编怪聊 | pbgl | - | 曲一刀 | qyd | - | 今日之声 | jrzs | - | 浪潮 | lc | - | 沸点 | fd |`, +| -------- | ---- | +| 首页 | | +| 轻松一刻 | qsyk | +| 槽值 | cz | +| 人间 | rj | +| 大国小民 | dgxm | +| 三三有梗 | ssyg | +| 数读 | sd | +| 看客 | kk | +| 下划线 | xhx | +| 谈心社 | txs | +| 哒哒 | dd | +| 胖编怪聊 | pbgl | +| 曲一刀 | qyd | +| 今日之声 | jrzs | +| 浪潮 | lc | +| 沸点 | fd |`, }; async function handler(ctx) { diff --git a/lib/routes/163/news/rank.ts b/lib/routes/163/news/rank.ts index acb962191d2300..e6210c9ec12690 100644 --- a/lib/routes/163/news/rank.ts +++ b/lib/routes/163/news/rank.ts @@ -108,9 +108,9 @@ export const route: Route = { 新闻分类: - | 全站 | 新闻 | 娱乐 | 体育 | 财经 | 科技 | 汽车 | 女人 | 房产 | 游戏 | 旅游 | 教育 | - | ----- | ---- | ------------- | ------ | ----- | ---- | ---- | ---- | ----- | ---- | ------ | ---- | - | whole | news | entertainment | sports | money | tech | auto | lady | house | game | travel | edu |`, +| 全站 | 新闻 | 娱乐 | 体育 | 财经 | 科技 | 汽车 | 女人 | 房产 | 游戏 | 旅游 | 教育 | +| ----- | ---- | ------------- | ------ | ----- | ---- | ---- | ---- | ----- | ---- | ------ | ---- | +| whole | news | entertainment | sports | money | tech | auto | lady | house | game | travel | edu |`, }; async function handler(ctx) { diff --git a/lib/routes/163/news/special.ts b/lib/routes/163/news/special.ts index c80244353cfa99..0cebb6b248b983 100644 --- a/lib/routes/163/news/special.ts +++ b/lib/routes/163/news/special.ts @@ -38,8 +38,8 @@ export const route: Route = { maintainers: ['nczitzk'], handler, description: `| 轻松一刻 | 槽值 | 人间 | 大国小民 | 三三有梗 | 数读 | 看客 | 下划线 | 谈心社 | 哒哒 | 胖编怪聊 | 曲一刀 | 今日之声 | 浪潮 | 沸点 | - | -------- | ---- | ---- | -------- | -------- | ---- | ---- | ------ | ------ | ---- | -------- | ------ | -------- | ---- | ---- | - | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |`, +| -------- | ---- | ---- | -------- | -------- | ---- | ---- | ------ | ------ | ---- | -------- | ------ | -------- | ---- | ---- | +| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |`, }; async function handler(ctx) { diff --git a/lib/routes/163/renjian.ts b/lib/routes/163/renjian.ts index c7bcaa17a7902e..21437ee8383b3c 100644 --- a/lib/routes/163/renjian.ts +++ b/lib/routes/163/renjian.ts @@ -36,8 +36,8 @@ export const route: Route = { maintainers: ['nczitzk'], handler, description: `| 特写 | 记事 | 大写 | 好读 | 看客 | - | ----- | ----- | ----- | ----- | ----- | - | texie | jishi | daxie | haodu | kanke |`, +| ----- | ----- | ----- | ----- | ----- | +| texie | jishi | daxie | haodu | kanke |`, }; async function handler(ctx) { diff --git a/lib/routes/18comic/blogs.ts b/lib/routes/18comic/blogs.ts index 7d2814d72e943b..1ccfe302ca5cf6 100644 --- a/lib/routes/18comic/blogs.ts +++ b/lib/routes/18comic/blogs.ts @@ -30,9 +30,9 @@ export const route: Route = { url: 'jmcomic.group/', description: `分类 - | 全部 | 紳夜食堂 | 遊戲文庫 | JG GAMES | 模型山下 | - | ---- | -------- | -------- | -------- | -------- | - | | dinner | raiders | jg | figure |`, +| 全部 | 紳夜食堂 | 遊戲文庫 | JG GAMES | 模型山下 | +| ---- | -------- | -------- | -------- | -------- | +| | dinner | raiders | jg | figure |`, }; async function handler(ctx) { diff --git a/lib/routes/18comic/index.ts b/lib/routes/18comic/index.ts index 404038b8ee0a04..f26042f437ad98 100644 --- a/lib/routes/18comic/index.ts +++ b/lib/routes/18comic/index.ts @@ -25,26 +25,26 @@ export const route: Route = { url: 'jmcomic.group/', description: `分类 - | 全部 | 其他漫畫 | 同人 | 韓漫 | 美漫 | 短篇 | 单本 | - | ---- | -------- | ------ | ------ | ------ | ----- | ------ | - | all | another | doujin | hanman | meiman | short | single | +| 全部 | 其他漫畫 | 同人 | 韓漫 | 美漫 | 短篇 | 单本 | +| ---- | -------- | ------ | ------ | ------ | ----- | ------ | +| all | another | doujin | hanman | meiman | short | single | 时间范围 - | 全部 | 今天 | 这周 | 本月 | - | ---- | ---- | ---- | ---- | - | a | t | w | m | +| 全部 | 今天 | 这周 | 本月 | +| ---- | ---- | ---- | ---- | +| a | t | w | m | 排列顺序 - | 最新 | 最多点阅的 | 最多图片 | 最高评分 | 最多评论 | 最多爱心 | - | ---- | ---------- | -------- | -------- | -------- | -------- | - | mr | mv | mp | tr | md | tf | +| 最新 | 最多点阅的 | 最多图片 | 最高评分 | 最多评论 | 最多爱心 | +| ---- | ---------- | -------- | -------- | -------- | -------- | +| mr | mv | mp | tr | md | tf | 关键字(供参考) - | YAOI | 女性向 | NTR | 非 H | 3D | 獵奇 | - | ---- | ------ | --- | ---- | -- | ---- |`, +| YAOI | 女性向 | NTR | 非 H | 3D | 獵奇 | +| ---- | ------ | --- | ---- | -- | ---- |`, }; async function handler(ctx) { diff --git a/lib/routes/19lou/index.ts b/lib/routes/19lou/index.ts index 25b092aca0f109..5869a5f356960a 100644 --- a/lib/routes/19lou/index.ts +++ b/lib/routes/19lou/index.ts @@ -34,20 +34,20 @@ export const route: Route = { maintainers: ['nczitzk'], handler, description: `| 杭州 | 台州 | 嘉兴 | 宁波 | 湖州 | - | ---- | ------- | ------- | ------ | ------ | - | www | taizhou | jiaxing | ningbo | huzhou | +| ---- | ------- | ------- | ------ | ------ | +| www | taizhou | jiaxing | ningbo | huzhou | - | 绍兴 | 湖州 | 温州 | 金华 | 舟山 | - | -------- | ------ | ------- | ------ | -------- | - | shaoxing | huzhou | wenzhou | jinhua | zhoushan | +| 绍兴 | 湖州 | 温州 | 金华 | 舟山 | +| -------- | ------ | ------- | ------ | -------- | +| shaoxing | huzhou | wenzhou | jinhua | zhoushan | - | 衢州 | 丽水 | 义乌 | 萧山 | 余杭 | - | ------ | ------ | ---- | -------- | ------ | - | quzhou | lishui | yiwu | xiaoshan | yuhang | +| 衢州 | 丽水 | 义乌 | 萧山 | 余杭 | +| ------ | ------ | ---- | -------- | ------ | +| quzhou | lishui | yiwu | xiaoshan | yuhang | - | 临安 | 富阳 | 桐庐 | 建德 | 淳安 | - | ----- | ------ | ------ | ------ | ------ | - | linan | fuyang | tonglu | jiande | chunan |`, +| 临安 | 富阳 | 桐庐 | 建德 | 淳安 | +| ----- | ------ | ------ | ------ | ------ | +| linan | fuyang | tonglu | jiande | chunan |`, }; async function handler(ctx) { diff --git a/lib/routes/1point3acres/blog.ts b/lib/routes/1point3acres/blog.ts index 705473222769bd..3e1c0f4be0d302 100644 --- a/lib/routes/1point3acres/blog.ts +++ b/lib/routes/1point3acres/blog.ts @@ -25,8 +25,8 @@ export const route: Route = { maintainers: ['nczitzk'], handler, description: `| 留学申请 | 找工求职 | 生活攻略 | 投资理财 | 签证移民 | 时政要闻 | - | ---------- | -------- | --------- | -------- | -------- | -------- | - | studyinusa | career | lifestyle | invest | visa | news |`, +| ---------- | -------- | --------- | -------- | -------- | -------- | +| studyinusa | career | lifestyle | invest | visa | news |`, }; async function handler(ctx) { diff --git a/lib/routes/1point3acres/category.ts b/lib/routes/1point3acres/category.ts index f6daec7b6de3ea..e39a5a566d98ed 100644 --- a/lib/routes/1point3acres/category.ts +++ b/lib/routes/1point3acres/category.ts @@ -29,15 +29,15 @@ export const route: Route = { 分类 - | 热门帖子 | 最新帖子 | - | -------- | -------- | - | hot | new | +| 热门帖子 | 最新帖子 | +| -------- | -------- | +| hot | new | 排序方式 - | 最新回复 | 最新发布 | - | -------- | -------- | - | | post |`, +| 最新回复 | 最新发布 | +| -------- | -------- | +| | post |`, }; async function handler(ctx) { diff --git a/lib/routes/1point3acres/section.ts b/lib/routes/1point3acres/section.ts index 3b06513764b769..468caafb5168f1 100644 --- a/lib/routes/1point3acres/section.ts +++ b/lib/routes/1point3acres/section.ts @@ -36,28 +36,28 @@ export const route: Route = { handler, description: `分区 - | 分区 | id | - | -------- | --- | - | 留学申请 | 257 | - | 世界公民 | 379 | - | 投资理财 | 400 | - | 生活干货 | 31 | - | 职场达人 | 345 | - | 人际关系 | 391 | - | 海外求职 | 38 | - | 签证移民 | 265 | +| 分区 | id | +| -------- | --- | +| 留学申请 | 257 | +| 世界公民 | 379 | +| 投资理财 | 400 | +| 生活干货 | 31 | +| 职场达人 | 345 | +| 人际关系 | 391 | +| 海外求职 | 38 | +| 签证移民 | 265 | 分类 - | 热门帖子 | 最新帖子 | - | -------- | -------- | - | hot | new | +| 热门帖子 | 最新帖子 | +| -------- | -------- | +| hot | new | 排序方式 - | 最新回复 | 最新发布 | - | -------- | -------- | - | | post |`, +| 最新回复 | 最新发布 | +| -------- | -------- | +| | post |`, }; async function handler(ctx) { diff --git a/lib/routes/1point3acres/thread.ts b/lib/routes/1point3acres/thread.ts index 48987e0373d119..3a15a5c0bc9a9c 100644 --- a/lib/routes/1point3acres/thread.ts +++ b/lib/routes/1point3acres/thread.ts @@ -13,15 +13,15 @@ export const route: Route = { url: 'instant.1point3acres.com/', description: `分类 - | 热门帖子 | 最新帖子 | - | -------- | -------- | - | hot | new | +| 热门帖子 | 最新帖子 | +| -------- | -------- | +| hot | new | 排序方式 - | 最新回复 | 最新发布 | - | -------- | -------- | - | | post |`, +| 最新回复 | 最新发布 | +| -------- | -------- | +| | post |`, }; async function handler(ctx) { diff --git a/lib/routes/2023game/index.ts b/lib/routes/2023game/index.ts index 55d900fd096269..c54423178af74d 100644 --- a/lib/routes/2023game/index.ts +++ b/lib/routes/2023game/index.ts @@ -26,9 +26,9 @@ export const route: Route = { url: 'www.2023game.com/', description: `分类 - | PS4游戏 | switch游戏 | 3DS游戏 | PSV游戏 | Xbox360 | PS3游戏 | 世嘉MD/SS | PSP游戏 | PC周边 | 怀旧掌机 | 怀旧主机 | PS4教程 | PS4金手指 | switch金手指 | switch教程 | switch补丁 | switch主题 | switch存档 | - | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | - | ps4 | sgame | 3ds | psv | jiaocheng | ps3yx | zhuji.md | zhangji.psp | pcgame | zhangji | zhuji | ps4.psjc | ps41.ps4pkg | nsaita.cundang | nsaita.pojie | nsaita.buding | nsaita.zhutie | nsaita.zhuti |`, +| PS4游戏 | switch游戏 | 3DS游戏 | PSV游戏 | Xbox360 | PS3游戏 | 世嘉MD/SS | PSP游戏 | PC周边 | 怀旧掌机 | 怀旧主机 | PS4教程 | PS4金手指 | switch金手指 | switch教程 | switch补丁 | switch主题 | switch存档 | +| -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | +| ps4 | sgame | 3ds | psv | jiaocheng | ps3yx | zhuji.md | zhangji.psp | pcgame | zhangji | zhuji | ps4.psjc | ps41.ps4pkg | nsaita.cundang | nsaita.pojie | nsaita.buding | nsaita.zhutie | nsaita.zhuti |`, }; async function handler(ctx: Context): Promise { diff --git a/lib/routes/2048/index.ts b/lib/routes/2048/index.ts index 4aede42b464378..11e011b1aea56f 100644 --- a/lib/routes/2048/index.ts +++ b/lib/routes/2048/index.ts @@ -3,13 +3,12 @@ import { getCurrentPath } from '@/utils/helpers'; const __dirname = getCurrentPath(import.meta.url); import cache from '@/utils/cache'; -import got from '@/utils/got'; +import ofetch from '@/utils/ofetch'; import { load } from 'cheerio'; import timezone from '@/utils/timezone'; import { parseDate } from '@/utils/parse-date'; import { art } from '@/utils/render'; import path from 'node:path'; -import ofetch from '@/utils/ofetch'; export const route: Route = { path: '/:id?', @@ -28,62 +27,74 @@ export const route: Route = { maintainers: ['nczitzk'], handler, description: `| 最新合集 | 亞洲無碼 | 日本騎兵 | 歐美新片 | 國內原創 | 中字原創 | 三級寫真 | - | -------- | -------- | -------- | -------- | -------- | -------- | -------- | - | 3 | 4 | 5 | 13 | 15 | 16 | 18 | +| -------- | -------- | -------- | -------- | -------- | -------- | -------- | +| 3 | 4 | 5 | 13 | 15 | 16 | 18 | - | 有碼.HD | 亞洲 SM.HD | 日韓 VR/3D | 歐美 VR/3D | S-cute / Mywife / G-area | - | ------- | ---------- | ---------- | ---------- | ------------------------ | - | 116 | 114 | 96 | 97 | 119 | +| 有碼.HD | 亞洲 SM.HD | 日韓 VR/3D | 歐美 VR/3D | S-cute / Mywife / G-area | +| ------- | ---------- | ---------- | ---------- | ------------------------ | +| 116 | 114 | 96 | 97 | 119 | - | 網友自拍 | 亞洲激情 | 歐美激情 | 露出偷窺 | 高跟絲襪 | 卡通漫畫 | 原創达人 | - | -------- | -------- | -------- | -------- | -------- | -------- | -------- | - | 23 | 24 | 25 | 26 | 27 | 28 | 135 | +| 網友自拍 | 亞洲激情 | 歐美激情 | 露出偷窺 | 高跟絲襪 | 卡通漫畫 | 原創达人 | +| -------- | -------- | -------- | -------- | -------- | -------- | -------- | +| 23 | 24 | 25 | 26 | 27 | 28 | 135 | - | 唯美清純 | 网络正妹 | 亞洲正妹 | 素人正妹 | COSPLAY | 女优情报 | Gif 动图 | - | -------- | -------- | -------- | -------- | ------- | -------- | -------- | - | 21 | 274 | 276 | 277 | 278 | 29 | | +| 唯美清純 | 网络正妹 | 亞洲正妹 | 素人正妹 | COSPLAY | 女优情报 | Gif 动图 | +| -------- | -------- | -------- | -------- | ------- | -------- | -------- | +| 21 | 274 | 276 | 277 | 278 | 29 | | - | 獨家拍攝 | 稀有首發 | 网络见闻 | 主播實錄 | 珍稀套圖 | 名站同步 | 实用漫画 | - | -------- | -------- | -------- | -------- | -------- | -------- | -------- | - | 213 | 94 | 283 | 111 | 88 | 131 | 180 | +| 獨家拍攝 | 稀有首發 | 网络见闻 | 主播實錄 | 珍稀套圖 | 名站同步 | 实用漫画 | +| -------- | -------- | -------- | -------- | -------- | -------- | -------- | +| 213 | 94 | 283 | 111 | 88 | 131 | 180 | - | 网盘二区 | 网盘三区 | 分享福利 | 国产精选 | 高清福利 | 高清首发 | 多挂原创 | - | -------- | -------- | -------- | -------- | -------- | -------- | -------- | - | 72 | 272 | 195 | 280 | 79 | 216 | 76 | +| 网盘二区 | 网盘三区 | 分享福利 | 国产精选 | 高清福利 | 高清首发 | 多挂原创 | +| -------- | -------- | -------- | -------- | -------- | -------- | -------- | +| 72 | 272 | 195 | 280 | 79 | 216 | 76 | - | 磁链迅雷 | 正片大片 | H-GAME | 有声小说 | 在线视频 | 在线快播影院 | - | -------- | -------- | ------ | -------- | -------- | ------------ | - | 43 | 67 | 66 | 55 | 78 | 279 | +| 磁链迅雷 | 正片大片 | H-GAME | 有声小说 | 在线视频 | 在线快播影院 | +| -------- | -------- | ------ | -------- | -------- | ------------ | +| 43 | 67 | 66 | 55 | 78 | 279 | - | 综合小说 | 人妻意淫 | 乱伦迷情 | 长篇连载 | 文学作者 | TXT 小说打包 | - | -------- | -------- | -------- | -------- | -------- | ------------ | - | 48 | 103 | 50 | 54 | 100 | 109 | +| 综合小说 | 人妻意淫 | 乱伦迷情 | 长篇连载 | 文学作者 | TXT 小说打包 | +| -------- | -------- | -------- | -------- | -------- | ------------ | +| 48 | 103 | 50 | 54 | 100 | 109 | - | 聚友客栈 | 坛友自售 | - | -------- | -------- | - | 57 | 136 |`, +| 聚友客栈 | 坛友自售 | +| -------- | -------- | +| 57 | 136 |`, }; async function handler(ctx) { - const id = ctx.req.param('id') ?? '2'; + const id = ctx.req.param('id') ?? '3'; const rootUrl = 'https://hjd2048.com'; - const entranceDomain = await cache.tryGet('2048:entranceDomain', async () => { - const { data: response } = await got('https://hjd.tw', { + const domainInfo = (await cache.tryGet('2048:domainInfo', async () => { + const response = await ofetch('https://hjd.tw', { headers: { accept: '*/*', }, }); - const $ = load(response); - const targetLink = new URL($('table.group-table tr').eq(1).find('td a').eq(0).attr('href')).href; - return targetLink; + let $ = load(response); + const targetLink = new URL($('.address-list a').eq(0).attr('href'), 'https://hjd.tw').href; + const redirectResponse = await ofetch.raw(targetLink); + $ = load(redirectResponse._data); + return { + url: redirectResponse.url, + cookie: + $('script') + .text() + .match(/var safeid='(.*?)',/)?.[1] ?? '', + }; + })) as { url: string; cookie: string }; + + const currentUrl = `${domainInfo.url}thread.php?fid-${id}.html`; + + const response = await ofetch.raw(currentUrl, { + headers: { + cookie: `_safe=${domainInfo.cookie}`, + }, }); - const currentUrl = `${entranceDomain}2048/thread.php?fid-${id}.html`; - - const response = await ofetch.raw(currentUrl); - const $ = load(response._data); const currentHost = `https://${new URL(response.url).host}`; // redirected host @@ -99,7 +110,7 @@ async function handler(ctx) { return { title: item.text(), - link: `${currentHost}/2048/${item.attr('href')}`, + link: `${currentHost}/${item.attr('href')}`, guid: `${rootUrl}/2048/${item.attr('href')}`, }; }) @@ -108,12 +119,13 @@ async function handler(ctx) { const items = await Promise.all( list.map((item) => cache.tryGet(item.guid, async () => { - const detailResponse = await got({ - method: 'get', - url: item.link, + const detailResponse = await ofetch(item.link, { + headers: { + cookie: `_safe=${domainInfo.cookie}`, + }, }); - const content = load(detailResponse.data); + const content = load(detailResponse); content('.ads, .tips').remove(); @@ -126,17 +138,14 @@ async function handler(ctx) { const downloadLink = content('#read_tpc').first().find('a').last(); const copyLink = content('#copytext')?.first()?.text(); - if (downloadLink?.text()?.startsWith('http') && /down2048\.com$/.test(new URL(downloadLink.text()).hostname)) { - const torrentResponse = await got({ - method: 'get', - url: downloadLink.text(), - }); + if (downloadLink?.text()?.startsWith('http') && /bt\.azvmw\.com$/.test(new URL(downloadLink.text()).hostname)) { + const torrentResponse = await ofetch(downloadLink.text()); - const torrent = load(torrentResponse.data); + const torrent = load(torrentResponse); item.enclosure_type = 'application/x-bittorrent'; const ahref = torrent('.uk-button').last().attr('href'); - item.enclosure_url = ahref?.startsWith('http') ? ahref : `https://data.datapps.org/${ahref}`; + item.enclosure_url = ahref?.startsWith('http') ? ahref : `https://bt.azvmw.com/${ahref}`; const magnet = torrent('.uk-button').first().attr('href'); diff --git a/lib/routes/21caijing/channel.ts b/lib/routes/21caijing/channel.ts index a57b1db46f43e9..2170c569c39ffd 100644 --- a/lib/routes/21caijing/channel.ts +++ b/lib/routes/21caijing/channel.ts @@ -192,7 +192,7 @@ export const route: Route = { :::
- 更多分类 +更多分类 #### [热点](https://m.21jingji.com/#/) diff --git a/lib/routes/36kr/hot-list.ts b/lib/routes/36kr/hot-list.ts index b546d4b1437ca2..85c537670d7178 100644 --- a/lib/routes/36kr/hot-list.ts +++ b/lib/routes/36kr/hot-list.ts @@ -48,8 +48,8 @@ export const route: Route = { maintainers: ['nczitzk'], handler, description: `| 24 小时热榜 | 资讯人气榜 | 资讯综合榜 | 资讯收藏榜 | - | ----------- | ---------- | ---------- | ---------- | - | 24 | renqi | zonghe | shoucang |`, +| ----------- | ---------- | ---------- | ---------- | +| 24 | renqi | zonghe | shoucang |`, }; async function handler(ctx) { diff --git a/lib/routes/36kr/index.ts b/lib/routes/36kr/index.ts index 82b64f29bb82ef..c4cb54b447ffaf 100644 --- a/lib/routes/36kr/index.ts +++ b/lib/routes/36kr/index.ts @@ -28,8 +28,8 @@ export const route: Route = { name: '资讯, 快讯, 用户文章, 主题文章, 专题文章, 搜索文章, 搜索快讯', maintainers: ['nczitzk', 'fashioncj'], description: `| 最新资讯频道 | 快讯 | 推荐资讯 | 生活 | 房产 | 职场 | 搜索文章 | 搜索快讯 | - | ------- | -------- | -------- | -------- | -------- | --------| -------- | -------- | - | news | newsflashes | recommend | life | estate | workplace | search/articles/关键词 | search/articles/关键词 |`, +| ------- | -------- | -------- | -------- | -------- | --------| -------- | -------- | +| news | newsflashes | recommend | life | estate | workplace | search/articles/关键词 | search/articles/关键词 |`, handler, }; diff --git a/lib/routes/3dmgame/news-center.ts b/lib/routes/3dmgame/news-center.ts index b8f3b66a79c557..756e10c1583bac 100644 --- a/lib/routes/3dmgame/news-center.ts +++ b/lib/routes/3dmgame/news-center.ts @@ -28,8 +28,8 @@ export const route: Route = { maintainers: ['zhboner', 'lyqluis'], handler, description: `| 新闻推荐 | 游戏新闻 | 动漫影视 | 智能数码 | 时事焦点 | - | -------- | -------- | -------- | -------- | ----------- | - | | game | acg | next | news\_36\_1 |`, +| -------- | -------- | -------- | -------- | ----------- | +| | game | acg | next | news\_36\_1 |`, }; async function handler(ctx) { diff --git a/lib/routes/3kns/index.ts b/lib/routes/3kns/index.ts index 2167b3f66f6365..d897afc1c8e142 100644 --- a/lib/routes/3kns/index.ts +++ b/lib/routes/3kns/index.ts @@ -30,33 +30,33 @@ export const route: Route = { url: 'www.3kns.com/', description: `游戏类型(category) - | 不限 | 角色扮演 | 动作冒险 | 策略游戏 | 模拟经营 | 即时战略 | 格斗类 | 射击游戏 | 休闲益智 | 体育运动 | 街机格斗 | 无双类 | 其他游戏 | 赛车竞速 | - | ---- | -------- | -------- | -------- | -------- | -------- | ------ | -------- | -------- | -------- | -------- | ------ | -------- | -------- | - | all | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | +| 不限 | 角色扮演 | 动作冒险 | 策略游戏 | 模拟经营 | 即时战略 | 格斗类 | 射击游戏 | 休闲益智 | 体育运动 | 街机格斗 | 无双类 | 其他游戏 | 赛车竞速 | +| ---- | -------- | -------- | -------- | -------- | -------- | ------ | -------- | -------- | -------- | -------- | ------ | -------- | -------- | +| all | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 游戏语言(language) - | 不限 | 中文 | 英语 | 日语 | 其他 | 中文汉化 | 德语 | - | ---- | ---- | ---- | ---- | ---- | -------- | ---- | - | all | 1 | 2 | 3 | 4 | 5 | 6 | +| 不限 | 中文 | 英语 | 日语 | 其他 | 中文汉化 | 德语 | +| ---- | ---- | ---- | ---- | ---- | -------- | ---- | +| all | 1 | 2 | 3 | 4 | 5 | 6 | 游戏标签(tag) - | 不限 | 热门 | 多人聚会 | 僵尸 | 体感 | 大作 | 音乐 | 三国 | RPG | 格斗 | 闯关 | 横版 | 科幻 | 棋牌 | 运输 | 无双 | 卡通动漫 | 日系 | 养成 | 恐怖 | 运动 | 乙女 | 街机 | 飞行模拟 | 解谜 | 海战 | 战争 | 跑酷 | 即时策略 | 射击 | 经营 | 益智 | 沙盒 | 模拟 | 冒险 | 竞速 | 休闲 | 动作 | 生存 | 独立 | 拼图 | 魔改 xci | 卡牌 | 塔防 | - | ---- | ---- | -------- | ---- | ---- | ---- | ---- | ---- | --- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | -------- | ---- | ---- | ---- | ---- | ---- | ---- | -------- | ---- | ---- | ---- | ---- | -------- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | -------- | ---- | ---- | - | all | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | +| 不限 | 热门 | 多人聚会 | 僵尸 | 体感 | 大作 | 音乐 | 三国 | RPG | 格斗 | 闯关 | 横版 | 科幻 | 棋牌 | 运输 | 无双 | 卡通动漫 | 日系 | 养成 | 恐怖 | 运动 | 乙女 | 街机 | 飞行模拟 | 解谜 | 海战 | 战争 | 跑酷 | 即时策略 | 射击 | 经营 | 益智 | 沙盒 | 模拟 | 冒险 | 竞速 | 休闲 | 动作 | 生存 | 独立 | 拼图 | 魔改 xci | 卡牌 | 塔防 | +| ---- | ---- | -------- | ---- | ---- | ---- | ---- | ---- | --- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | -------- | ---- | ---- | ---- | ---- | ---- | ---- | -------- | ---- | ---- | ---- | ---- | -------- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | -------- | ---- | ---- | +| all | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 发售时间(pubDate) - | 不限 | 2017 年 | 2018 年 | 2019 年 | 2020 年 | 2021 年 | 2022 年 | 2023 年 | 2024 年 | - | ---- | ------- | ------- | ------- | ------- | ------- | ------- | ------- | ------- | - | all | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | +| 不限 | 2017 年 | 2018 年 | 2019 年 | 2020 年 | 2021 年 | 2022 年 | 2023 年 | 2024 年 | +| ---- | ------- | ------- | ------- | ------- | ------- | ------- | ------- | ------- | +| all | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 游戏集合(collection) - | 不限 | 舞力全开 | 马里奥 | 生化危机 | 炼金工房 | 最终幻想 | 塞尔达 | 宝可梦 | 勇者斗恶龙 | 模拟器 | 秋之回忆 | 第一方 | 体感健身 | 开放世界 | 儿童乐园 | - | ---- | -------- | ------ | -------- | -------- | -------- | ------ | ------ | ---------- | ------ | -------- | ------ | -------- | -------- | -------- | - | all | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |`, +| 不限 | 舞力全开 | 马里奥 | 生化危机 | 炼金工房 | 最终幻想 | 塞尔达 | 宝可梦 | 勇者斗恶龙 | 模拟器 | 秋之回忆 | 第一方 | 体感健身 | 开放世界 | 儿童乐园 | +| ---- | -------- | ------ | -------- | -------- | -------- | ------ | ------ | ---------- | ------ | -------- | ------ | -------- | -------- | -------- | +| all | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |`, }; async function handler(ctx: Context): Promise { diff --git a/lib/routes/423down/index.ts b/lib/routes/423down/index.ts index c7aa3d8110183f..1d18e513222757 100644 --- a/lib/routes/423down/index.ts +++ b/lib/routes/423down/index.ts @@ -130,31 +130,31 @@ export const route: Route = { 若订阅 [Android - 423Down](https://www.423down.com/apk),网址为 \`https://www.423down.com/apk\`。截取 \`https://www.423down.com/\` 到末尾的部分 \`apk\` 作为参数填入,此时路由为 [\`/423down/apk\`](https://rsshub.app/423down/apk)。 ::: - #### [安卓软件](https://www.423down.com/apk) +#### [安卓软件](https://www.423down.com/apk) - | [安卓软件](https://www.423down.com/apk) | - | --------------------------------------- | - | [apk](https://rsshub.app/423down/apk) | +| [安卓软件](https://www.423down.com/apk) | +| --------------------------------------- | +| [apk](https://rsshub.app/423down/apk) | - #### 电脑软件 +#### 电脑软件 - | [原创软件](https://www.423down.com/zd423) | [媒体播放](https://www.423down.com/multimedia) | [网页浏览](https://www.423down.com/browser) | [图形图像](https://www.423down.com/image) | [聊天软件](https://www.423down.com/im) | - | ----------------------------------------- | --------------------------------------------------- | --------------------------------------------- | ----------------------------------------- | -------------------------------------- | - | [zd423](https://rsshub.app/423down/zd423) | [multimedia](https://rsshub.app/423down/multimedia) | [browser](https://rsshub.app/423down/browser) | [image](https://rsshub.app/423down/image) | [im](https://rsshub.app/423down/im) | +| [原创软件](https://www.423down.com/zd423) | [媒体播放](https://www.423down.com/multimedia) | [网页浏览](https://www.423down.com/browser) | [图形图像](https://www.423down.com/image) | [聊天软件](https://www.423down.com/im) | +| ----------------------------------------- | --------------------------------------------------- | --------------------------------------------- | ----------------------------------------- | -------------------------------------- | +| [zd423](https://rsshub.app/423down/zd423) | [multimedia](https://rsshub.app/423down/multimedia) | [browser](https://rsshub.app/423down/browser) | [image](https://rsshub.app/423down/image) | [im](https://rsshub.app/423down/im) | - | [办公软件](https://www.423down.com/work) | [上传下载](https://www.423down.com/down) | [实用软件](https://www.423down.com/softtool) | [系统辅助](https://www.423down.com/systemsoft) | [系统必备](https://www.423down.com/systemplus) | - | ---------------------------------------- | ---------------------------------------- | ----------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | - | [work](https://rsshub.app/423down/work) | [down](https://rsshub.app/423down/down) | [softtool](https://rsshub.app/423down/softtool) | [systemsoft](https://rsshub.app/423down/systemsoft) | [systemplus](https://rsshub.app/423down/systemplus) | +| [办公软件](https://www.423down.com/work) | [上传下载](https://www.423down.com/down) | [实用软件](https://www.423down.com/softtool) | [系统辅助](https://www.423down.com/systemsoft) | [系统必备](https://www.423down.com/systemplus) | +| ---------------------------------------- | ---------------------------------------- | ----------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | +| [work](https://rsshub.app/423down/work) | [down](https://rsshub.app/423down/down) | [softtool](https://rsshub.app/423down/softtool) | [systemsoft](https://rsshub.app/423down/systemsoft) | [systemplus](https://rsshub.app/423down/systemplus) | - | [安全软件](https://www.423down.com/security) | [补丁相关](https://www.423down.com/patch) | [硬件相关](https://www.423down.com/hardware) | - | ----------------------------------------------- | ----------------------------------------- | ----------------------------------------------- | - | [security](https://rsshub.app/423down/security) | [patch](https://rsshub.app/423down/patch) | [hardware](https://rsshub.app/423down/hardware) | +| [安全软件](https://www.423down.com/security) | [补丁相关](https://www.423down.com/patch) | [硬件相关](https://www.423down.com/hardware) | +| ----------------------------------------------- | ----------------------------------------- | ----------------------------------------------- | +| [security](https://rsshub.app/423down/security) | [patch](https://rsshub.app/423down/patch) | [hardware](https://rsshub.app/423down/hardware) | - #### 操作系统 +#### 操作系统 - | [Windows 11](https://www.423down.com/win11) | [Windows 10](https://www.423down.com/win10) | [Windows 7](https://www.423down.com/win7) | [Windows XP](https://www.423down.com/win7/winxp) | [WinPE](https://www.423down.com/pe-system) | - | ------------------------------------------- | ------------------------------------------- | ----------------------------------------- | --------------------------------------------------- | ------------------------------------------------- | - | [win11](https://rsshub.app/423down/win11) | [win10](https://rsshub.app/423down/win10) | [win7](https://rsshub.app/423down/win7) | [win7/winxp](https://rsshub.app/423down/win7/winxp) | [pe-system](https://rsshub.app/423down/pe-system) | +| [Windows 11](https://www.423down.com/win11) | [Windows 10](https://www.423down.com/win10) | [Windows 7](https://www.423down.com/win7) | [Windows XP](https://www.423down.com/win7/winxp) | [WinPE](https://www.423down.com/pe-system) | +| ------------------------------------------- | ------------------------------------------- | ----------------------------------------- | --------------------------------------------------- | ------------------------------------------------- | +| [win11](https://rsshub.app/423down/win11) | [win10](https://rsshub.app/423down/win10) | [win7](https://rsshub.app/423down/win7) | [win7/winxp](https://rsshub.app/423down/win7/winxp) | [pe-system](https://rsshub.app/423down/pe-system) | `, categories: ['program-update'], diff --git a/lib/routes/4khd/article.ts b/lib/routes/4khd/article.ts new file mode 100644 index 00000000000000..c600a581ae7b78 --- /dev/null +++ b/lib/routes/4khd/article.ts @@ -0,0 +1,28 @@ +import { load } from 'cheerio'; +import { parseDate } from '@/utils/parse-date'; +import { WPPost } from './types'; + +const processImages = ($) => { + $('a').each((_, elem) => { + const $elem = $(elem); + const largePhotoUrl = $elem.attr('href').replace('i0.wp.com/pic', 'img'); + if (largePhotoUrl) { + $elem.attr('href', largePhotoUrl); + $elem.find('img').attr('src', largePhotoUrl); + } + }); +}; + +function loadArticle(item: WPPost) { + const article = load(item.content.rendered); + processImages(article); + + return { + title: item.title.rendered, + description: article.html() ?? '', + pubDate: parseDate(item.date_gmt), + link: item.link, + }; +} + +export default loadArticle; diff --git a/lib/routes/4khd/category.ts b/lib/routes/4khd/category.ts new file mode 100644 index 00000000000000..539baad8be35a9 --- /dev/null +++ b/lib/routes/4khd/category.ts @@ -0,0 +1,48 @@ +import { Route } from '@/types'; +import got from '@/utils/got'; +import { SUB_NAME_PREFIX, SUB_URL } from './const'; +import loadArticle from './article'; +import { WPPost } from './types'; + +export const route: Route = { + path: '/category/:category', + categories: ['picture'], + example: '/4khd/category/cosplay', + parameters: { category: 'Category' }, + features: { + requireConfig: false, + requirePuppeteer: false, + antiCrawler: false, + supportBT: false, + supportPodcast: false, + supportScihub: false, + }, + radar: [ + { + source: ['www.4khd.com/pages/:category'], + target: '/category/:category', + }, + ], + name: 'Category', + maintainers: ['AiraNadih'], + handler, + url: 'www.4khd.com/', +}; + +async function handler(ctx) { + const limit = Number.parseInt(ctx.req.query('limit')) || 20; + const category = ctx.req.param('category'); + const categoryUrl = `${SUB_URL}pages/${category}/`; + const slug = category === 'album' ? 'photo' : category; + + const { + data: [{ id: categoryId }], + } = await got(`${SUB_URL}wp-json/wp/v2/categories?slug=${slug}`); + const { data: posts } = await got(`${SUB_URL}wp-json/wp/v2/posts?categories=${categoryId}&per_page=${limit}`); + + return { + title: `${SUB_NAME_PREFIX} - Category: ${category}`, + link: categoryUrl, + item: posts.map((post) => loadArticle(post as WPPost)), + }; +} diff --git a/lib/routes/4khd/const.ts b/lib/routes/4khd/const.ts new file mode 100644 index 00000000000000..130430f17be0dc --- /dev/null +++ b/lib/routes/4khd/const.ts @@ -0,0 +1,4 @@ +const SUB_NAME_PREFIX = '4KHD'; +const SUB_URL = 'https://www.4khd.com/'; + +export { SUB_NAME_PREFIX, SUB_URL }; diff --git a/lib/routes/4khd/latest.ts b/lib/routes/4khd/latest.ts new file mode 100644 index 00000000000000..e718baf8bf0b66 --- /dev/null +++ b/lib/routes/4khd/latest.ts @@ -0,0 +1,41 @@ +import { Route } from '@/types'; +import got from '@/utils/got'; +import { SUB_NAME_PREFIX, SUB_URL } from './const'; +import loadArticle from './article'; +import { WPPost } from './types'; + +export const route: Route = { + path: '/', + categories: ['picture'], + example: '/4khd', + parameters: {}, + features: { + requireConfig: false, + requirePuppeteer: false, + antiCrawler: false, + supportBT: false, + supportPodcast: false, + supportScihub: false, + }, + radar: [ + { + source: ['www.4khd.com/'], + target: '', + }, + ], + name: 'Latest', + maintainers: ['AiraNadih'], + handler, + url: 'www.4khd.com/', +}; + +async function handler(ctx) { + const limit = Number.parseInt(ctx.req.query('limit')) || 20; + const { data: posts } = await got(`${SUB_URL}wp-json/wp/v2/posts?per_page=${limit}`); + + return { + title: `${SUB_NAME_PREFIX} - Latest`, + link: SUB_URL, + item: posts.map((post) => loadArticle(post as WPPost)), + }; +} diff --git a/lib/routes/4khd/namespace.ts b/lib/routes/4khd/namespace.ts new file mode 100644 index 00000000000000..c5bb29a8c2705a --- /dev/null +++ b/lib/routes/4khd/namespace.ts @@ -0,0 +1,8 @@ +import type { Namespace } from '@/types'; + +export const namespace: Namespace = { + name: '4KHD', + url: 'www.4khd.net', + description: '4KHD - HD Beautiful Girls', + lang: 'en', +}; diff --git a/lib/routes/4khd/types.ts b/lib/routes/4khd/types.ts new file mode 100644 index 00000000000000..d3ea3ac2a8cc26 --- /dev/null +++ b/lib/routes/4khd/types.ts @@ -0,0 +1,12 @@ +interface WPPost { + title: { + rendered: string; + }; + content: { + rendered: string; + }; + date_gmt: string; + link: string; +} + +export type { WPPost }; diff --git a/lib/routes/4kup/article.ts b/lib/routes/4kup/article.ts new file mode 100644 index 00000000000000..fbdbbbb52e9eac --- /dev/null +++ b/lib/routes/4kup/article.ts @@ -0,0 +1,29 @@ +import { load } from 'cheerio'; +import { parseDate } from '@/utils/parse-date'; +import { WPPost } from './types'; + +const processLazyImages = ($) => { + $('a.thumb-photo').each((_, elem) => { + const $elem = $(elem); + const largePhotoUrl = $elem.attr('href'); + if (largePhotoUrl) { + $elem.find('img').attr('src', largePhotoUrl); + } + }); + + $('.caption').remove(); +}; + +function loadArticle(item: WPPost) { + const article = load(item.content.rendered); + processLazyImages(article); + + return { + title: item.title.rendered, + description: article.html() ?? '', + pubDate: parseDate(item.date_gmt), + link: item.link, + }; +} + +export default loadArticle; diff --git a/lib/routes/4kup/category.ts b/lib/routes/4kup/category.ts new file mode 100644 index 00000000000000..9b227ec329397b --- /dev/null +++ b/lib/routes/4kup/category.ts @@ -0,0 +1,47 @@ +import { Route } from '@/types'; +import got from '@/utils/got'; +import { SUB_NAME_PREFIX, SUB_URL } from './const'; +import loadArticle from './article'; +import { WPPost } from './types'; + +export const route: Route = { + path: '/category/:category', + categories: ['picture'], + example: '/4kup/category/coser', + parameters: { category: 'Category' }, + features: { + requireConfig: false, + requirePuppeteer: false, + antiCrawler: false, + supportBT: false, + supportPodcast: false, + supportScihub: false, + }, + radar: [ + { + source: ['4kup.net/category/:category'], + target: '/category/:category', + }, + ], + name: 'Category', + maintainers: ['AiraNadih'], + handler, + url: '4kup.net/', +}; + +async function handler(ctx) { + const limit = Number.parseInt(ctx.req.query('limit')) || 20; + const category = ctx.req.param('category'); + const categoryUrl = `${SUB_URL}category/${category}/`; + + const { + data: [{ id: categoryId }], + } = await got(`${SUB_URL}wp-json/wp/v2/categories?slug=${category}`); + const { data: posts } = await got(`${SUB_URL}wp-json/wp/v2/posts?categories=${categoryId}&per_page=${limit}`); + + return { + title: `${SUB_NAME_PREFIX} - Category: ${category}`, + link: categoryUrl, + item: posts.map((post) => loadArticle(post as WPPost)), + }; +} diff --git a/lib/routes/4kup/const.ts b/lib/routes/4kup/const.ts new file mode 100644 index 00000000000000..52c67eacb74a25 --- /dev/null +++ b/lib/routes/4kup/const.ts @@ -0,0 +1,4 @@ +const SUB_NAME_PREFIX = '4KUP'; +const SUB_URL = 'https://4kup.net/'; + +export { SUB_NAME_PREFIX, SUB_URL }; diff --git a/lib/routes/4kup/latest.ts b/lib/routes/4kup/latest.ts new file mode 100644 index 00000000000000..12da303c6173c1 --- /dev/null +++ b/lib/routes/4kup/latest.ts @@ -0,0 +1,41 @@ +import { Route } from '@/types'; +import got from '@/utils/got'; +import { SUB_NAME_PREFIX, SUB_URL } from './const'; +import loadArticle from './article'; +import { WPPost } from './types'; + +export const route: Route = { + path: '/', + categories: ['picture'], + example: '/4kup', + parameters: {}, + features: { + requireConfig: false, + requirePuppeteer: false, + antiCrawler: false, + supportBT: false, + supportPodcast: false, + supportScihub: false, + }, + radar: [ + { + source: ['4kup.net/'], + target: '', + }, + ], + name: 'Latest', + maintainers: ['AiraNadih'], + handler, + url: '4kup.net/', +}; + +async function handler(ctx) { + const limit = Number.parseInt(ctx.req.query('limit')) || 20; + const { data: posts } = await got(`${SUB_URL}wp-json/wp/v2/posts?per_page=${limit}`); + + return { + title: `${SUB_NAME_PREFIX} - Latest`, + link: SUB_URL, + item: posts.map((post) => loadArticle(post as WPPost)), + }; +} diff --git a/lib/routes/4kup/namespace.ts b/lib/routes/4kup/namespace.ts new file mode 100644 index 00000000000000..41b591a0d5eb53 --- /dev/null +++ b/lib/routes/4kup/namespace.ts @@ -0,0 +1,8 @@ +import type { Namespace } from '@/types'; + +export const namespace: Namespace = { + name: '4KUP', + url: '4kup.net', + description: '4KUP - Beautiful Girls Collection', + lang: 'en', +}; diff --git a/lib/routes/4kup/popular.ts b/lib/routes/4kup/popular.ts new file mode 100644 index 00000000000000..326673d1b007ce --- /dev/null +++ b/lib/routes/4kup/popular.ts @@ -0,0 +1,81 @@ +import { Route } from '@/types'; +import got from '@/utils/got'; +import { load } from 'cheerio'; +import { SUB_NAME_PREFIX, SUB_URL } from './const'; +import loadArticle from './article'; +import { WPPost } from './types'; + +export const route: Route = { + path: '/popular/:period', + categories: ['picture'], + example: '/4kup/popular/7', + parameters: { period: 'Days' }, + features: { + requireConfig: false, + requirePuppeteer: false, + antiCrawler: false, + supportBT: false, + supportPodcast: false, + supportScihub: false, + }, + radar: [ + { + source: ['4kup.net/:period'], + target: '/popular/:period', + }, + ], + name: 'Popular', + maintainers: ['AiraNadih'], + handler, + url: '4kup.net/', +}; + +function getPeriodConfig(period) { + if (period === '7') { + return { + url: `${SUB_URL}hot-of-week/`, + range: 'last7days', + title: `${SUB_NAME_PREFIX} - Top views in 7 days`, + }; + } else if (period === '30') { + return { + url: `${SUB_URL}hot-of-month/`, + range: 'last30days', + title: `${SUB_NAME_PREFIX} - Top views in 30 days`, + }; + } + return { + url: `${SUB_URL}most-view/`, + range: `all`, + title: `${SUB_NAME_PREFIX} - Most views`, + }; +} + +async function handler(ctx) { + const limit = Number.parseInt(ctx.req.query('limit')) || 20; + const period = ctx.req.param('period'); + + const { url, range, title } = getPeriodConfig(period); + + const { data } = await got.post(`${SUB_URL}wp-json/wordpress-popular-posts/v2/widget`, { + json: { + limit, + range, + order_by: 'views', + }, + }); + + const $ = load(data.widget); + const links = $('.wpp-list li') + .toArray() + .map((post) => $(post).find('.wpp-post-title').attr('href')) + .filter((link) => link !== undefined); + const slugs = links.map((link) => link.split('/').findLast(Boolean)); + const { data: posts } = await got(`${SUB_URL}wp-json/wp/v2/posts?slug=${slugs.join(',')}&per_page=${limit}`); + + return { + title, + link: url, + item: posts.map((post) => loadArticle(post as WPPost)), + }; +} diff --git a/lib/routes/4kup/tag.ts b/lib/routes/4kup/tag.ts new file mode 100644 index 00000000000000..93acd7ec98e282 --- /dev/null +++ b/lib/routes/4kup/tag.ts @@ -0,0 +1,47 @@ +import { Route } from '@/types'; +import got from '@/utils/got'; +import { SUB_NAME_PREFIX, SUB_URL } from './const'; +import loadArticle from './article'; +import { WPPost } from './types'; + +export const route: Route = { + path: '/tag/:tag', + categories: ['picture'], + example: '/4kup/tag/asian', + parameters: { tag: 'Tag' }, + features: { + requireConfig: false, + requirePuppeteer: false, + antiCrawler: false, + supportBT: false, + supportPodcast: false, + supportScihub: false, + }, + radar: [ + { + source: ['4kup.net/tag/:tag'], + target: '/tag/:tag', + }, + ], + name: 'Tag', + maintainers: ['AiraNadih'], + handler, + url: '4kup.net/', +}; + +async function handler(ctx) { + const limit = Number.parseInt(ctx.req.query('limit')) || 20; + const tag = ctx.req.param('tag'); + const tagUrl = `${SUB_URL}tag/${tag}/`; + + const { + data: [{ id: tagId }], + } = await got(`${SUB_URL}wp-json/wp/v2/tags?slug=${tag}`); + const { data: posts } = await got(`${SUB_URL}wp-json/wp/v2/posts?tags=${tagId}&per_page=${limit}`); + + return { + title: `${SUB_NAME_PREFIX} - Tag: ${tag}`, + link: tagUrl, + item: posts.map((post) => loadArticle(post as WPPost)), + }; +} diff --git a/lib/routes/4kup/types.ts b/lib/routes/4kup/types.ts new file mode 100644 index 00000000000000..d3ea3ac2a8cc26 --- /dev/null +++ b/lib/routes/4kup/types.ts @@ -0,0 +1,12 @@ +interface WPPost { + title: { + rendered: string; + }; + content: { + rendered: string; + }; + date_gmt: string; + link: string; +} + +export type { WPPost }; diff --git a/lib/routes/56kog/class.ts b/lib/routes/56kog/class.ts index c0f495647181eb..baeacd026d5f9d 100644 --- a/lib/routes/56kog/class.ts +++ b/lib/routes/56kog/class.ts @@ -19,12 +19,12 @@ export const route: Route = { maintainers: ['nczitzk'], handler, description: `| [玄幻魔法](https://www.56kog.com/class/1_1.html) | [武侠修真](https://www.56kog.com/class/2_1.html) | [历史军事](https://www.56kog.com/class/4_1.html) | [侦探推理](https://www.56kog.com/class/5_1.html) | [网游动漫](https://www.56kog.com/class/6_1.html) | - | ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | - | 1\_1 | 2\_1 | 4\_1 | 5\_1 | 6\_1 | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| 1\_1 | 2\_1 | 4\_1 | 5\_1 | 6\_1 | - | [恐怖灵异](https://www.56kog.com/class/8_1.html) | [都市言情](https://www.56kog.com/class/3_1.html) | [科幻](https://www.56kog.com/class/7_1.html) | [女生小说](https://www.56kog.com/class/9_1.html) | [其他](https://www.56kog.com/class/10_1.html) | - | ------------------------------------------------ | ------------------------------------------------ | -------------------------------------------- | ------------------------------------------------ | --------------------------------------------- | - | 8\_1 | 3\_1 | 7\_1 | 9\_1 | 10\_1 |`, +| [恐怖灵异](https://www.56kog.com/class/8_1.html) | [都市言情](https://www.56kog.com/class/3_1.html) | [科幻](https://www.56kog.com/class/7_1.html) | [女生小说](https://www.56kog.com/class/9_1.html) | [其他](https://www.56kog.com/class/10_1.html) | +| ------------------------------------------------ | ------------------------------------------------ | -------------------------------------------- | ------------------------------------------------ | --------------------------------------------- | +| 8\_1 | 3\_1 | 7\_1 | 9\_1 | 10\_1 |`, }; async function handler(ctx) { diff --git a/lib/routes/56kog/top.ts b/lib/routes/56kog/top.ts index 0f4465f931b318..f4a2b7a9273ab4 100644 --- a/lib/routes/56kog/top.ts +++ b/lib/routes/56kog/top.ts @@ -19,8 +19,8 @@ export const route: Route = { maintainers: ['nczitzk'], handler, description: `| [周点击榜](https://www.56kog.com/top/weekvisit.html) | [总收藏榜](https://www.56kog.com/top/goodnum.html) | [最新 入库](https://www.56kog.com/top/postdate.html) | - | ---------------------------------------------------- | -------------------------------------------------- | ---------------------------------------------------- | - | weekvisit | goodnum | postdate |`, +| ---------------------------------------------------- | -------------------------------------------------- | ---------------------------------------------------- | +| weekvisit | goodnum | postdate |`, }; async function handler(ctx) { diff --git a/lib/routes/6park/index.ts b/lib/routes/6park/index.ts index c7c6bfb992f37f..f4e2ee2170b198 100644 --- a/lib/routes/6park/index.ts +++ b/lib/routes/6park/index.ts @@ -6,16 +6,21 @@ import timezone from '@/utils/timezone'; import { parseDate } from '@/utils/parse-date'; export const route: Route = { - path: '/:id?/:type?/:keyword?', + path: '/index/:id?/:type?/:keyword?', + name: '首页', + maintainers: ['nczitzk', 'cscnk52'], + handler, + example: '/6park/index', + parameters: { id: '分站,见下表,默认为史海钩沉', type: '类型,可选值为 gold、type,默认为空', keyword: '关键词,可选,默认为空' }, radar: [ { source: ['club.6parkbbs.com/:id/index.php', 'club.6parkbbs.com/'], target: '/:id?', }, ], - name: 'Unknown', - maintainers: [], - handler, + description: `| 婚姻家庭 | 魅力时尚 | 女性频道 | 生活百态 | 美食厨房 | 非常影音 | 车迷沙龙 | 游戏天地 | 卡通漫画 | 体坛纵横 | 运动健身 | 电脑前线 | 数码家电 | 旅游风向 | 摄影部落 | 奇珍异宝 | 笑口常开 | 娱乐八卦 | 吃喝玩乐 | 文化长廊 | 军事纵横 | 百家论坛 | 科技频道 | 爱子情怀 | 健康人生 | 博论天下 | 史海钩沉 | 网际谈兵 | 经济观察 | 谈股论金 | 杂论闲侃 | 唯美乐园 | 学习园地 | 命理玄机 | 宠物情缘 | 网络歌坛 | 音乐殿堂 | 情感世界 | +|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------| +| life9 | life1 | chan10 | life2 | life6 | fr | enter7 | enter3 | enter6 | enter5 | sport | know1 | chan6 | life7 | chan8 | page | enter1 | enter8 | netstar | life10 | nz | other | chan2 | chan5 | life5 | bolun | chan1 | military | finance | chan4 | pk | gz1 | gz2 | gz3 | life8 | chan7 | enter4 | life3 |`, }; async function handler(ctx) { diff --git a/lib/routes/6park/news.ts b/lib/routes/6park/news.ts index ae6c0ea1c2ea4a..1f65ce6de3ac5d 100644 --- a/lib/routes/6park/news.ts +++ b/lib/routes/6park/news.ts @@ -13,8 +13,17 @@ export const route: Route = { target: '/:id?', }, ], - name: 'Unknown', - maintainers: [], + name: '新闻栏目', + maintainers: ['nczitzk', 'cscnk52'], + parameters: { + site: '分站,可选newspark、local,默认为 newspark', + id: '栏目 id,可选,默认为空', + keyword: '关键词,可选,默认为空', + }, + description: `::: tip 提示 +若订阅 [时政](https://www.6parknews.com/newspark/index.php?type=1),其网址为 ,其中 \`newspark\` 为分站,\`1\` 为栏目 id。 +若订阅 [美国](https://local.6parknews.com/index.php?type_id=1),其网址为 ,其中 \`local\` 为分站,\`1\` 为栏目 id。 +:::`, handler, }; diff --git a/lib/routes/78dm/index.ts b/lib/routes/78dm/index.ts index 6b77121bb4813f..2db355d7e07b81 100644 --- a/lib/routes/78dm/index.ts +++ b/lib/routes/78dm/index.ts @@ -148,71 +148,71 @@ export const route: Route = { 若订阅 [精彩评测 - 变形金刚](https://www.78dm.net/eval_list/109/0/0/1.html),网址为 \`https://www.78dm.net/eval_list/109/0/0/1.html\`。截取 \`https://www.78dm.net/\` 到末尾 \`.html\` 的部分 \`eval_list/109/0/0/1\` 作为参数填入,此时路由为 [\`/78dm/eval_list/109/0/0/1\`](https://rsshub.app/78dm/eval_list/109/0/0/1)。 ::: -
- 更多分类 - - #### [新品速递](https://www.78dm.net/news) - - | 分类 | ID | - | -------------------------------------------------------------- | ---------------------------------------------------------------------- | - | [全部](https://www.78dm.net/news/0/0/0/0/0/0/0/1.html) | [news/0/0/0/0/0/0/0/1](https://rsshub.app/78dm/news/0/0/0/0/0/0/0/1) | - | [变形金刚](https://www.78dm.net/news/3/0/0/0/0/0/0/1.html) | [news/3/0/0/0/0/0/0/1](https://rsshub.app/78dm/news/3/0/0/0/0/0/0/1) | - | [高达](https://www.78dm.net/news/4/0/0/0/0/0/0/1.html) | [news/4/0/0/0/0/0/0/1](https://rsshub.app/78dm/news/4/0/0/0/0/0/0/1) | - | [圣斗士](https://www.78dm.net/news/2/0/0/0/0/0/0/1.html) | [news/2/0/0/0/0/0/0/1](https://rsshub.app/78dm/news/2/0/0/0/0/0/0/1) | - | [海贼王](https://www.78dm.net/news/8/0/0/0/0/0/0/1.html) | [news/8/0/0/0/0/0/0/1](https://rsshub.app/78dm/news/8/0/0/0/0/0/0/1) | - | [PVC 手办](https://www.78dm.net/news/0/5/0/0/0/0/0/1.html) | [news/0/5/0/0/0/0/0/1](https://rsshub.app/78dm/news/0/5/0/0/0/0/0/1) | - | [拼装模型](https://www.78dm.net/news/0/1/0/0/0/0/0/1.html) | [news/0/1/0/0/0/0/0/1](https://rsshub.app/78dm/news/0/1/0/0/0/0/0/1) | - | [机甲成品](https://www.78dm.net/news/0/2/0/0/0/0/0/1.html) | [news/0/2/0/0/0/0/0/1](https://rsshub.app/78dm/news/0/2/0/0/0/0/0/1) | - | [特摄](https://www.78dm.net/news/0/3/0/0/0/0/0/1.html) | [news/0/3/0/0/0/0/0/1](https://rsshub.app/78dm/news/0/3/0/0/0/0/0/1) | - | [美系](https://www.78dm.net/news/0/4/0/0/0/0/0/1.html) | [news/0/4/0/0/0/0/0/1](https://rsshub.app/78dm/news/0/4/0/0/0/0/0/1) | - | [GK](https://www.78dm.net/news/0/6/0/0/0/0/0/1.html) | [news/0/6/0/0/0/0/0/1](https://rsshub.app/78dm/news/0/6/0/0/0/0/0/1) | - | [扭蛋盒蛋食玩](https://www.78dm.net/news/0/7/0/0/0/0/0/1.html) | [news/0/7/0/0/0/0/0/1](https://rsshub.app/78dm/news/0/7/0/0/0/0/0/1) | - | [其他](https://www.78dm.net/news/0/8/0/0/0/0/0/1.html) | [news/0/8/0/0/0/0/0/1](https://rsshub.app/78dm/news/0/8/0/0/0/0/0/1) | - | [综合](https://www.78dm.net/news/0/9/0/0/0/0/0/1.html) | [news/0/9/0/0/0/0/0/1](https://rsshub.app/78dm/news/0/9/0/0/0/0/0/1) | - | [军模](https://www.78dm.net/news/0/10/0/0/0/0/0/1.html) | [news/0/10/0/0/0/0/0/1](https://rsshub.app/78dm/news/0/10/0/0/0/0/0/1) | - | [民用](https://www.78dm.net/news/0/11/0/0/0/0/0/1.html) | [news/0/11/0/0/0/0/0/1](https://rsshub.app/78dm/news/0/11/0/0/0/0/0/1) | - | [配件](https://www.78dm.net/news/0/12/0/0/0/0/0/1.html) | [news/0/12/0/0/0/0/0/1](https://rsshub.app/78dm/news/0/12/0/0/0/0/0/1) | - | [工具](https://www.78dm.net/news/0/13/0/0/0/0/0/1.html) | [news/0/13/0/0/0/0/0/1](https://rsshub.app/78dm/news/0/13/0/0/0/0/0/1) | - - #### [精彩评测](https://www.78dm.net/eval_list) - - | 分类 | ID | - | --------------------------------------------------------- | ------------------------------------------------------------------ | - | [全部](https://www.78dm.net/eval_list/0/0/0/1.html) | [eval_list/0/0/0/1](https://rsshub.app/78dm/eval_list/0/0/0/1) | - | [变形金刚](https://www.78dm.net/eval_list/109/0/0/1.html) | [eval_list/109/0/0/1](https://rsshub.app/78dm/eval_list/109/0/0/1) | - | [高达](https://www.78dm.net/eval_list/110/0/0/1.html) | [eval_list/110/0/0/1](https://rsshub.app/78dm/eval_list/110/0/0/1) | - | [圣斗士](https://www.78dm.net/eval_list/111/0/0/1.html) | [eval_list/111/0/0/1](https://rsshub.app/78dm/eval_list/111/0/0/1) | - | [海贼王](https://www.78dm.net/eval_list/112/0/0/1.html) | [eval_list/112/0/0/1](https://rsshub.app/78dm/eval_list/112/0/0/1) | - | [PVC 手办](https://www.78dm.net/eval_list/115/0/0/1.html) | [eval_list/115/0/0/1](https://rsshub.app/78dm/eval_list/115/0/0/1) | - | [拼装模型](https://www.78dm.net/eval_list/113/0/0/1.html) | [eval_list/113/0/0/1](https://rsshub.app/78dm/eval_list/113/0/0/1) | - | [机甲成品](https://www.78dm.net/eval_list/114/0/0/1.html) | [eval_list/114/0/0/1](https://rsshub.app/78dm/eval_list/114/0/0/1) | - | [特摄](https://www.78dm.net/eval_list/116/0/0/1.html) | [eval_list/116/0/0/1](https://rsshub.app/78dm/eval_list/116/0/0/1) | - | [美系](https://www.78dm.net/eval_list/117/0/0/1.html) | [eval_list/117/0/0/1](https://rsshub.app/78dm/eval_list/117/0/0/1) | - | [GK](https://www.78dm.net/eval_list/118/0/0/1.html) | [eval_list/118/0/0/1](https://rsshub.app/78dm/eval_list/118/0/0/1) | - | [综合](https://www.78dm.net/eval_list/120/0/0/1.html) | [eval_list/120/0/0/1](https://rsshub.app/78dm/eval_list/120/0/0/1) | - - #### [好贴推荐](https://www.78dm.net/ht_list) - - | 分类 | ID | - | ------------------------------------------------------- | -------------------------------------------------------------- | - | [全部](https://www.78dm.net/ht_list/0/0/0/1.html) | [ht_list/0/0/0/1](https://rsshub.app/78dm/ht_list/0/0/0/1) | - | [变形金刚](https://www.78dm.net/ht_list/95/0/0/1.html) | [ht_list/95/0/0/1](https://rsshub.app/78dm/ht_list/95/0/0/1) | - | [高达](https://www.78dm.net/ht_list/96/0/0/1.html) | [ht_list/96/0/0/1](https://rsshub.app/78dm/ht_list/96/0/0/1) | - | [圣斗士](https://www.78dm.net/ht_list/98/0/0/1.html) | [ht_list/98/0/0/1](https://rsshub.app/78dm/ht_list/98/0/0/1) | - | [海贼王](https://www.78dm.net/ht_list/99/0/0/1.html) | [ht_list/99/0/0/1](https://rsshub.app/78dm/ht_list/99/0/0/1) | - | [PVC 手办](https://www.78dm.net/ht_list/100/0/0/1.html) | [ht_list/100/0/0/1](https://rsshub.app/78dm/ht_list/100/0/0/1) | - | [拼装模型](https://www.78dm.net/ht_list/101/0/0/1.html) | [ht_list/101/0/0/1](https://rsshub.app/78dm/ht_list/101/0/0/1) | - | [机甲成品](https://www.78dm.net/ht_list/102/0/0/1.html) | [ht_list/102/0/0/1](https://rsshub.app/78dm/ht_list/102/0/0/1) | - | [特摄](https://www.78dm.net/ht_list/103/0/0/1.html) | [ht_list/103/0/0/1](https://rsshub.app/78dm/ht_list/103/0/0/1) | - | [美系](https://www.78dm.net/ht_list/104/0/0/1.html) | [ht_list/104/0/0/1](https://rsshub.app/78dm/ht_list/104/0/0/1) | - | [GK](https://www.78dm.net/ht_list/105/0/0/1.html) | [ht_list/105/0/0/1](https://rsshub.app/78dm/ht_list/105/0/0/1) | - | [综合](https://www.78dm.net/ht_list/107/0/0/1.html) | [ht_list/107/0/0/1](https://rsshub.app/78dm/ht_list/107/0/0/1) | - | [装甲战车](https://www.78dm.net/ht_list/131/0/0/1.html) | [ht_list/131/0/0/1](https://rsshub.app/78dm/ht_list/131/0/0/1) | - | [舰船模型](https://www.78dm.net/ht_list/132/0/0/1.html) | [ht_list/132/0/0/1](https://rsshub.app/78dm/ht_list/132/0/0/1) | - | [飞机模型](https://www.78dm.net/ht_list/133/0/0/1.html) | [ht_list/133/0/0/1](https://rsshub.app/78dm/ht_list/133/0/0/1) | - | [民用模型](https://www.78dm.net/ht_list/134/0/0/1.html) | [ht_list/134/0/0/1](https://rsshub.app/78dm/ht_list/134/0/0/1) | - | [兵人模型](https://www.78dm.net/ht_list/135/0/0/1.html) | [ht_list/135/0/0/1](https://rsshub.app/78dm/ht_list/135/0/0/1) | -
+
+更多分类 + +#### [新品速递](https://www.78dm.net/news) + +| 分类 | ID | +| -------------------------------------------------------------- | ---------------------------------------------------------------------- | +| [全部](https://www.78dm.net/news/0/0/0/0/0/0/0/1.html) | [news/0/0/0/0/0/0/0/1](https://rsshub.app/78dm/news/0/0/0/0/0/0/0/1) | +| [变形金刚](https://www.78dm.net/news/3/0/0/0/0/0/0/1.html) | [news/3/0/0/0/0/0/0/1](https://rsshub.app/78dm/news/3/0/0/0/0/0/0/1) | +| [高达](https://www.78dm.net/news/4/0/0/0/0/0/0/1.html) | [news/4/0/0/0/0/0/0/1](https://rsshub.app/78dm/news/4/0/0/0/0/0/0/1) | +| [圣斗士](https://www.78dm.net/news/2/0/0/0/0/0/0/1.html) | [news/2/0/0/0/0/0/0/1](https://rsshub.app/78dm/news/2/0/0/0/0/0/0/1) | +| [海贼王](https://www.78dm.net/news/8/0/0/0/0/0/0/1.html) | [news/8/0/0/0/0/0/0/1](https://rsshub.app/78dm/news/8/0/0/0/0/0/0/1) | +| [PVC 手办](https://www.78dm.net/news/0/5/0/0/0/0/0/1.html) | [news/0/5/0/0/0/0/0/1](https://rsshub.app/78dm/news/0/5/0/0/0/0/0/1) | +| [拼装模型](https://www.78dm.net/news/0/1/0/0/0/0/0/1.html) | [news/0/1/0/0/0/0/0/1](https://rsshub.app/78dm/news/0/1/0/0/0/0/0/1) | +| [机甲成品](https://www.78dm.net/news/0/2/0/0/0/0/0/1.html) | [news/0/2/0/0/0/0/0/1](https://rsshub.app/78dm/news/0/2/0/0/0/0/0/1) | +| [特摄](https://www.78dm.net/news/0/3/0/0/0/0/0/1.html) | [news/0/3/0/0/0/0/0/1](https://rsshub.app/78dm/news/0/3/0/0/0/0/0/1) | +| [美系](https://www.78dm.net/news/0/4/0/0/0/0/0/1.html) | [news/0/4/0/0/0/0/0/1](https://rsshub.app/78dm/news/0/4/0/0/0/0/0/1) | +| [GK](https://www.78dm.net/news/0/6/0/0/0/0/0/1.html) | [news/0/6/0/0/0/0/0/1](https://rsshub.app/78dm/news/0/6/0/0/0/0/0/1) | +| [扭蛋盒蛋食玩](https://www.78dm.net/news/0/7/0/0/0/0/0/1.html) | [news/0/7/0/0/0/0/0/1](https://rsshub.app/78dm/news/0/7/0/0/0/0/0/1) | +| [其他](https://www.78dm.net/news/0/8/0/0/0/0/0/1.html) | [news/0/8/0/0/0/0/0/1](https://rsshub.app/78dm/news/0/8/0/0/0/0/0/1) | +| [综合](https://www.78dm.net/news/0/9/0/0/0/0/0/1.html) | [news/0/9/0/0/0/0/0/1](https://rsshub.app/78dm/news/0/9/0/0/0/0/0/1) | +| [军模](https://www.78dm.net/news/0/10/0/0/0/0/0/1.html) | [news/0/10/0/0/0/0/0/1](https://rsshub.app/78dm/news/0/10/0/0/0/0/0/1) | +| [民用](https://www.78dm.net/news/0/11/0/0/0/0/0/1.html) | [news/0/11/0/0/0/0/0/1](https://rsshub.app/78dm/news/0/11/0/0/0/0/0/1) | +| [配件](https://www.78dm.net/news/0/12/0/0/0/0/0/1.html) | [news/0/12/0/0/0/0/0/1](https://rsshub.app/78dm/news/0/12/0/0/0/0/0/1) | +| [工具](https://www.78dm.net/news/0/13/0/0/0/0/0/1.html) | [news/0/13/0/0/0/0/0/1](https://rsshub.app/78dm/news/0/13/0/0/0/0/0/1) | + +#### [精彩评测](https://www.78dm.net/eval_list) + +| 分类 | ID | +| --------------------------------------------------------- | ------------------------------------------------------------------ | +| [全部](https://www.78dm.net/eval_list/0/0/0/1.html) | [eval_list/0/0/0/1](https://rsshub.app/78dm/eval_list/0/0/0/1) | +| [变形金刚](https://www.78dm.net/eval_list/109/0/0/1.html) | [eval_list/109/0/0/1](https://rsshub.app/78dm/eval_list/109/0/0/1) | +| [高达](https://www.78dm.net/eval_list/110/0/0/1.html) | [eval_list/110/0/0/1](https://rsshub.app/78dm/eval_list/110/0/0/1) | +| [圣斗士](https://www.78dm.net/eval_list/111/0/0/1.html) | [eval_list/111/0/0/1](https://rsshub.app/78dm/eval_list/111/0/0/1) | +| [海贼王](https://www.78dm.net/eval_list/112/0/0/1.html) | [eval_list/112/0/0/1](https://rsshub.app/78dm/eval_list/112/0/0/1) | +| [PVC 手办](https://www.78dm.net/eval_list/115/0/0/1.html) | [eval_list/115/0/0/1](https://rsshub.app/78dm/eval_list/115/0/0/1) | +| [拼装模型](https://www.78dm.net/eval_list/113/0/0/1.html) | [eval_list/113/0/0/1](https://rsshub.app/78dm/eval_list/113/0/0/1) | +| [机甲成品](https://www.78dm.net/eval_list/114/0/0/1.html) | [eval_list/114/0/0/1](https://rsshub.app/78dm/eval_list/114/0/0/1) | +| [特摄](https://www.78dm.net/eval_list/116/0/0/1.html) | [eval_list/116/0/0/1](https://rsshub.app/78dm/eval_list/116/0/0/1) | +| [美系](https://www.78dm.net/eval_list/117/0/0/1.html) | [eval_list/117/0/0/1](https://rsshub.app/78dm/eval_list/117/0/0/1) | +| [GK](https://www.78dm.net/eval_list/118/0/0/1.html) | [eval_list/118/0/0/1](https://rsshub.app/78dm/eval_list/118/0/0/1) | +| [综合](https://www.78dm.net/eval_list/120/0/0/1.html) | [eval_list/120/0/0/1](https://rsshub.app/78dm/eval_list/120/0/0/1) | + +#### [好贴推荐](https://www.78dm.net/ht_list) + +| 分类 | ID | +| ------------------------------------------------------- | -------------------------------------------------------------- | +| [全部](https://www.78dm.net/ht_list/0/0/0/1.html) | [ht_list/0/0/0/1](https://rsshub.app/78dm/ht_list/0/0/0/1) | +| [变形金刚](https://www.78dm.net/ht_list/95/0/0/1.html) | [ht_list/95/0/0/1](https://rsshub.app/78dm/ht_list/95/0/0/1) | +| [高达](https://www.78dm.net/ht_list/96/0/0/1.html) | [ht_list/96/0/0/1](https://rsshub.app/78dm/ht_list/96/0/0/1) | +| [圣斗士](https://www.78dm.net/ht_list/98/0/0/1.html) | [ht_list/98/0/0/1](https://rsshub.app/78dm/ht_list/98/0/0/1) | +| [海贼王](https://www.78dm.net/ht_list/99/0/0/1.html) | [ht_list/99/0/0/1](https://rsshub.app/78dm/ht_list/99/0/0/1) | +| [PVC 手办](https://www.78dm.net/ht_list/100/0/0/1.html) | [ht_list/100/0/0/1](https://rsshub.app/78dm/ht_list/100/0/0/1) | +| [拼装模型](https://www.78dm.net/ht_list/101/0/0/1.html) | [ht_list/101/0/0/1](https://rsshub.app/78dm/ht_list/101/0/0/1) | +| [机甲成品](https://www.78dm.net/ht_list/102/0/0/1.html) | [ht_list/102/0/0/1](https://rsshub.app/78dm/ht_list/102/0/0/1) | +| [特摄](https://www.78dm.net/ht_list/103/0/0/1.html) | [ht_list/103/0/0/1](https://rsshub.app/78dm/ht_list/103/0/0/1) | +| [美系](https://www.78dm.net/ht_list/104/0/0/1.html) | [ht_list/104/0/0/1](https://rsshub.app/78dm/ht_list/104/0/0/1) | +| [GK](https://www.78dm.net/ht_list/105/0/0/1.html) | [ht_list/105/0/0/1](https://rsshub.app/78dm/ht_list/105/0/0/1) | +| [综合](https://www.78dm.net/ht_list/107/0/0/1.html) | [ht_list/107/0/0/1](https://rsshub.app/78dm/ht_list/107/0/0/1) | +| [装甲战车](https://www.78dm.net/ht_list/131/0/0/1.html) | [ht_list/131/0/0/1](https://rsshub.app/78dm/ht_list/131/0/0/1) | +| [舰船模型](https://www.78dm.net/ht_list/132/0/0/1.html) | [ht_list/132/0/0/1](https://rsshub.app/78dm/ht_list/132/0/0/1) | +| [飞机模型](https://www.78dm.net/ht_list/133/0/0/1.html) | [ht_list/133/0/0/1](https://rsshub.app/78dm/ht_list/133/0/0/1) | +| [民用模型](https://www.78dm.net/ht_list/134/0/0/1.html) | [ht_list/134/0/0/1](https://rsshub.app/78dm/ht_list/134/0/0/1) | +| [兵人模型](https://www.78dm.net/ht_list/135/0/0/1.html) | [ht_list/135/0/0/1](https://rsshub.app/78dm/ht_list/135/0/0/1) | +
`, categories: ['new-media'], diff --git a/lib/routes/7mmtv/index.ts b/lib/routes/7mmtv/index.ts index c50d55e3b593f8..170f74f03038d6 100644 --- a/lib/routes/7mmtv/index.ts +++ b/lib/routes/7mmtv/index.ts @@ -27,25 +27,25 @@ export const route: Route = { handler, description: `**Language** - | English | 日本語 | 한국의 | 中文 | - | ------- | ------ | ------ | ---- | - | en | ja | ko | zh | +| English | 日本語 | 한국의 | 中文 | +| ------- | ------ | ------ | ---- | +| en | ja | ko | zh | **Category** - | Chinese subtitles AV | Censored | Amateur | Uncensored | Asian self-timer | H comics | - | -------------------- | -------------- | ---------------- | ---------------- | ---------------- | ------------ | - | chinese\_list | censored\_list | amateurjav\_list | uncensored\_list | amateur\_list | hcomic\_list | +| Chinese subtitles AV | Censored | Amateur | Uncensored | Asian self-timer | H comics | +| -------------------- | -------------- | ---------------- | ---------------- | ---------------- | ------------ | +| chinese\_list | censored\_list | amateurjav\_list | uncensored\_list | amateur\_list | hcomic\_list | - | Chinese subtitles AV random | Censored random | Amateur random | Uncensored random | Asian self-timer random | H comics random | - | --------------------------- | ---------------- | ------------------ | ------------------ | ----------------------- | --------------- | - | chinese\_random | censored\_random | amateurjav\_random | uncensored\_random | amateur\_random | hcomic\_random | +| Chinese subtitles AV random | Censored random | Amateur random | Uncensored random | Asian self-timer random | H comics random | +| --------------------------- | ---------------- | ------------------ | ------------------ | ----------------------- | --------------- | +| chinese\_random | censored\_random | amateurjav\_random | uncensored\_random | amateur\_random | hcomic\_random | **Server** - | All Server | fembed(Full DL) | streamsb(Full DL) | doodstream | streamtape(Full DL) | avgle | embedgram | videovard(Full DL) | - | ---------- | --------------- | ----------------- | ---------- | ------------------- | ----- | --------- | ------------------ | - | all | 21 | 30 | 28 | 29 | 17 | 34 | 33 |`, +| All Server | fembed(Full DL) | streamsb(Full DL) | doodstream | streamtape(Full DL) | avgle | embedgram | videovard(Full DL) | +| ---------- | --------------- | ----------------- | ---------- | ------------------- | ----- | --------- | ------------------ | +| all | 21 | 30 | 28 | 29 | 17 | 34 | 33 |`, }; async function handler(ctx) { diff --git a/lib/routes/8264/list.ts b/lib/routes/8264/list.ts index 9ac5d4883a3a60..acdb6ff2bc1a1f 100644 --- a/lib/routes/8264/list.ts +++ b/lib/routes/8264/list.ts @@ -32,57 +32,57 @@ export const route: Route = { | 751 | 238 | 204 |
- 更多列表 +更多列表 - #### 热门推荐 +#### 热门推荐 - | 业界 | 国际 | 专访 | 图说 | 户外 | 登山 | 攀岩 | - | ---- | ---- | ---- | ---- | ---- | ---- | ---- | - | 489 | 733 | 746 | 902 | 914 | 934 | 935 | +| 业界 | 国际 | 专访 | 图说 | 户外 | 登山 | 攀岩 | +| ---- | ---- | ---- | ---- | ---- | ---- | ---- | +| 489 | 733 | 746 | 902 | 914 | 934 | 935 | - #### 户外知识 +#### 户外知识 - | 徒步 | 露营 | 安全急救 | 领队 | 登雪山 | - | ---- | ---- | -------- | ---- | ------ | - | 242 | 950 | 931 | 920 | 915 | +| 徒步 | 露营 | 安全急救 | 领队 | 登雪山 | +| ---- | ---- | -------- | ---- | ------ | +| 242 | 950 | 931 | 920 | 915 | - | 攀岩 | 骑行 | 跑步 | 滑雪 | 水上运动 | - | ---- | ---- | ---- | ---- | -------- | - | 916 | 917 | 918 | 919 | 921 | +| 攀岩 | 骑行 | 跑步 | 滑雪 | 水上运动 | +| ---- | ---- | ---- | ---- | -------- | +| 916 | 917 | 918 | 919 | 921 | - | 钓鱼 | 潜水 | 攀冰 | 冲浪 | 网球 | - | ---- | ---- | ---- | ---- | ---- | - | 951 | 952 | 953 | 966 | 967 | +| 钓鱼 | 潜水 | 攀冰 | 冲浪 | 网球 | +| ---- | ---- | ---- | ---- | ---- | +| 951 | 952 | 953 | 966 | 967 | - | 绳索知识 | 高尔夫 | 马术 | 户外摄影 | 羽毛球 | - | -------- | ------ | ---- | -------- | ------ | - | 968 | 969 | 970 | 973 | 971 | +| 绳索知识 | 高尔夫 | 马术 | 户外摄影 | 羽毛球 | +| -------- | ------ | ---- | -------- | ------ | +| 968 | 969 | 970 | 973 | 971 | - | 游泳 | 溯溪 | 健身 | 瑜伽 | - | ---- | ---- | ---- | ---- | - | 974 | 975 | 976 | 977 | +| 游泳 | 溯溪 | 健身 | 瑜伽 | +| ---- | ---- | ---- | ---- | +| 974 | 975 | 976 | 977 | - #### 户外装备 +#### 户外装备 - | 服装 | 冲锋衣 | 抓绒衣 | 皮肤衣 | 速干衣 | - | ---- | ------ | ------ | ------ | ------ | - | 209 | 923 | 924 | 925 | 926 | +| 服装 | 冲锋衣 | 抓绒衣 | 皮肤衣 | 速干衣 | +| ---- | ------ | ------ | ------ | ------ | +| 209 | 923 | 924 | 925 | 926 | - | 羽绒服 | 软壳 | 户外鞋 | 登山鞋 | 徒步鞋 | - | ------ | ---- | ------ | ------ | ------ | - | 927 | 929 | 211 | 928 | 930 | +| 羽绒服 | 软壳 | 户外鞋 | 登山鞋 | 徒步鞋 | +| ------ | ---- | ------ | ------ | ------ | +| 927 | 929 | 211 | 928 | 930 | - | 越野跑鞋 | 溯溪鞋 | 登山杖 | 帐篷 | 睡袋 | - | -------- | ------ | ------ | ---- | ---- | - | 933 | 932 | 220 | 208 | 212 | +| 越野跑鞋 | 溯溪鞋 | 登山杖 | 帐篷 | 睡袋 | +| -------- | ------ | ------ | ---- | ---- | +| 933 | 932 | 220 | 208 | 212 | - | 炉具 | 灯具 | 水具 | 面料 | 背包 | - | ---- | ---- | ---- | ---- | ---- | - | 792 | 218 | 219 | 222 | 207 | +| 炉具 | 灯具 | 水具 | 面料 | 背包 | +| ---- | ---- | ---- | ---- | ---- | +| 792 | 218 | 219 | 222 | 207 | - | 防潮垫 | 电子导航 | 冰岩绳索 | 综合装备 | - | ------ | -------- | -------- | -------- | - | 214 | 216 | 215 | 223 | +| 防潮垫 | 电子导航 | 冰岩绳索 | 综合装备 | +| ------ | -------- | -------- | -------- | +| 214 | 216 | 215 | 223 |
`, }; diff --git a/lib/routes/91porn/index.ts b/lib/routes/91porn/index.ts index e704db6ae970e6..43548beeb8bfa0 100644 --- a/lib/routes/91porn/index.ts +++ b/lib/routes/91porn/index.ts @@ -34,8 +34,8 @@ export const route: Route = { handler, url: '91porn.com/index.php', description: `| English | 简体中文 | 繁體中文 | - | ------- | -------- | -------- | - | en\_US | cn\_CN | zh\_ZH |`, +| ------- | -------- | -------- | +| en\_US | cn\_CN | zh\_ZH |`, }; async function handler(ctx) { diff --git a/lib/routes/95mm/category.ts b/lib/routes/95mm/category.ts index 13e57d6e71e7fc..877995e83a2231 100644 --- a/lib/routes/95mm/category.ts +++ b/lib/routes/95mm/category.ts @@ -24,8 +24,8 @@ export const route: Route = { handler, url: '95mm.org/', description: `| 清纯唯美 | 摄影私房 | 明星写真 | 三次元 | 异域美景 | 性感妖姬 | 游戏主题 | 美女壁纸 | - | -------- | -------- | -------- | ------ | -------- | -------- | -------- | -------- | - | 1 | 2 | 4 | 5 | 6 | 7 | 9 | 11 |`, +| -------- | -------- | -------- | ------ | -------- | -------- | -------- | -------- | +| 1 | 2 | 4 | 5 | 6 | 7 | 9 | 11 |`, }; async function handler(ctx) { diff --git a/lib/routes/95mm/tab.ts b/lib/routes/95mm/tab.ts index e5bdb711bb3abd..41b6eb18f521e1 100644 --- a/lib/routes/95mm/tab.ts +++ b/lib/routes/95mm/tab.ts @@ -24,7 +24,7 @@ export const route: Route = { handler, url: '95mm.org/', description: `| 最新 | 热门 | 校花 | 森系 | 清纯 | 童颜 | 嫩模 | 少女 | - | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- |`, +| ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- |`, }; async function handler(ctx) { diff --git a/lib/routes/a9vg/index.ts b/lib/routes/a9vg/index.ts index aef81aed772bd1..a8921d6423c5cb 100644 --- a/lib/routes/a9vg/index.ts +++ b/lib/routes/a9vg/index.ts @@ -133,17 +133,17 @@ export const route: Route = { 若订阅 [PS4](http://www.a9vg.com/list/news/PS4),网址为 \`http://www.a9vg.com/list/news/PS4\`。截取 \`http://www.a9vg.com/list\` 到末尾的部分 \`news/PS4\` 作为参数填入,此时路由为 [\`/a9vg/news/PS4\`](https://rsshub.app/a9vg/news/PS4)。 ::: - | 分类 | ID | - | -------------------------------------------------- | ------------------------------------------------------ | - | [All](https://www.a9vg.com/list/news/All) | [news/All](https://rsshub.app/a9vg/news/All) | - | [PS4](https://www.a9vg.com/list/news/PS4) | [news/PS4](https://rsshub.app/a9vg/news/PS4) | - | [PS5](https://www.a9vg.com/list/news/PS5) | [news/PS5](https://rsshub.app/a9vg/news/PS5) | - | [Switch](https://www.a9vg.com/list/news/Switch) | [news/Switch](https://rsshub.app/a9vg/news/Switch) | - | [Xbox One](https://www.a9vg.com/list/news/XboxOne) | [news/XboxOne](https://rsshub.app/a9vg/news/XboxOne) | - | [XSX](https://www.a9vg.com/list/news/XSX) | [news/XSX](https://rsshub.app/a9vg/news/XSX) | - | [PC](https://www.a9vg.com/list/news/PC) | [news/PC](https://rsshub.app/a9vg/news/PC) | - | [业界](https://www.a9vg.com/list/news/Industry) | [news/Industry](https://rsshub.app/a9vg/news/Industry) | - | [厂商](https://www.a9vg.com/list/news/Factory) | [news/Factory](https://rsshub.app/a9vg/news/Factory) | +| 分类 | ID | +| -------------------------------------------------- | ------------------------------------------------------ | +| [All](https://www.a9vg.com/list/news/All) | [news/All](https://rsshub.app/a9vg/news/All) | +| [PS4](https://www.a9vg.com/list/news/PS4) | [news/PS4](https://rsshub.app/a9vg/news/PS4) | +| [PS5](https://www.a9vg.com/list/news/PS5) | [news/PS5](https://rsshub.app/a9vg/news/PS5) | +| [Switch](https://www.a9vg.com/list/news/Switch) | [news/Switch](https://rsshub.app/a9vg/news/Switch) | +| [Xbox One](https://www.a9vg.com/list/news/XboxOne) | [news/XboxOne](https://rsshub.app/a9vg/news/XboxOne) | +| [XSX](https://www.a9vg.com/list/news/XSX) | [news/XSX](https://rsshub.app/a9vg/news/XSX) | +| [PC](https://www.a9vg.com/list/news/PC) | [news/PC](https://rsshub.app/a9vg/news/PC) | +| [业界](https://www.a9vg.com/list/news/Industry) | [news/Industry](https://rsshub.app/a9vg/news/Industry) | +| [厂商](https://www.a9vg.com/list/news/Factory) | [news/Factory](https://rsshub.app/a9vg/news/Factory) | `, categories: ['game'], diff --git a/lib/routes/aamacau/index.ts b/lib/routes/aamacau/index.ts index 9932af8ff0e37d..23f8821d902dce 100644 --- a/lib/routes/aamacau/index.ts +++ b/lib/routes/aamacau/index.ts @@ -27,8 +27,8 @@ export const route: Route = { handler, url: 'aamacau.com/', description: `| 即時報道 | 每週專題 | 藝文爛鬼樓 | 論盡紙本 | 新聞事件 | 特別企劃 | - | ------------ | ----------- | ---------- | -------- | -------- | -------- | - | breakingnews | weeklytopic | culture | press | case | special | +| ------------ | ----------- | ---------- | -------- | -------- | -------- | +| breakingnews | weeklytopic | culture | press | case | special | ::: tip 除了直接订阅分类全部文章(如 [每週專題](https://aamacau.com/topics/weeklytopic) 的对应路由为 [/aamacau/weeklytopic](https://rsshub.app/aamacau/weeklytopic)),你也可以订阅特定的专题,如 [【9-12】2021 澳門立法會選舉](https://aamacau.com/topics/【9-12】2021澳門立法會選舉) 的对应路由为 [/【9-12】2021 澳門立法會選舉](https://rsshub.app/aamacau/【9-12】2021澳門立法會選舉)。 diff --git a/lib/routes/accessbriefing/index.ts b/lib/routes/accessbriefing/index.ts index 42b829eccabcb2..76ffeec9a34e07 100644 --- a/lib/routes/accessbriefing/index.ts +++ b/lib/routes/accessbriefing/index.ts @@ -127,25 +127,25 @@ export const route: Route = { If you subscribe to [Latest News](https://www.accessbriefing.com/latest/news),where the URL is \`https://www.accessbriefing.com/latest/news\`, extract the part \`https://www.accessbriefing.com/\` to the end, and use it as the parameter to fill in. Therefore, the route will be [\`/accessbriefing/latest/news\`](https://rsshub.app/accessbriefing/latest/news). ::: - #### Latest - - | Category | ID | - | -------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | - | [News](https://www.accessbriefing.com/latest/news) | [latest/news](https://rsshub.app/target/site/latest/news) | - | [Products & Technology](https://www.accessbriefing.com/latest/products-and-technology) | [latest/products-and-technology](https://rsshub.app/target/site/latest/products-and-technology) | - | [Rental News](https://www.accessbriefing.com/latest/rental-news) | [latest/rental-news](https://rsshub.app/target/site/latest/rental-news) | - | [People](https://www.accessbriefing.com/latest/people) | [latest/people](https://rsshub.app/target/site/latest/people) | - | [Regualtions & Safety](https://www.accessbriefing.com/latest/regualtions-safety) | [latest/regualtions-safety](https://rsshub.app/target/site/latest/regualtions-safety) | - | [Finance](https://www.accessbriefing.com/latest/finance) | [latest/finance](https://rsshub.app/target/site/latest/finance) | - | [Sustainability](https://www.accessbriefing.com/latest/sustainability) | [latest/sustainability](https://rsshub.app/target/site/latest/sustainability) | - - #### Insight - - | Category | ID | - | --------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | - | [Interviews](https://www.accessbriefing.com/insight/interviews) | [insight/interviews](https://rsshub.app/target/site/insight/interviews) | - | [Longer reads](https://www.accessbriefing.com/insight/longer-reads) | [insight/longer-reads](https://rsshub.app/target/site/insight/longer-reads) | - | [Videos and podcasts](https://www.accessbriefing.com/insight/videos-and-podcasts) | [insight/videos-and-podcasts](https://rsshub.app/target/site/insight/videos-and-podcasts) | +#### Latest + +| Category | ID | +| -------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | +| [News](https://www.accessbriefing.com/latest/news) | [latest/news](https://rsshub.app/target/site/latest/news) | +| [Products & Technology](https://www.accessbriefing.com/latest/products-and-technology) | [latest/products-and-technology](https://rsshub.app/target/site/latest/products-and-technology) | +| [Rental News](https://www.accessbriefing.com/latest/rental-news) | [latest/rental-news](https://rsshub.app/target/site/latest/rental-news) | +| [People](https://www.accessbriefing.com/latest/people) | [latest/people](https://rsshub.app/target/site/latest/people) | +| [Regualtions & Safety](https://www.accessbriefing.com/latest/regualtions-safety) | [latest/regualtions-safety](https://rsshub.app/target/site/latest/regualtions-safety) | +| [Finance](https://www.accessbriefing.com/latest/finance) | [latest/finance](https://rsshub.app/target/site/latest/finance) | +| [Sustainability](https://www.accessbriefing.com/latest/sustainability) | [latest/sustainability](https://rsshub.app/target/site/latest/sustainability) | + +#### Insight + +| Category | ID | +| --------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | +| [Interviews](https://www.accessbriefing.com/insight/interviews) | [insight/interviews](https://rsshub.app/target/site/insight/interviews) | +| [Longer reads](https://www.accessbriefing.com/insight/longer-reads) | [insight/longer-reads](https://rsshub.app/target/site/insight/longer-reads) | +| [Videos and podcasts](https://www.accessbriefing.com/insight/videos-and-podcasts) | [insight/videos-and-podcasts](https://rsshub.app/target/site/insight/videos-and-podcasts) | `, categories: ['new-media'], diff --git a/lib/routes/acfun/article.ts b/lib/routes/acfun/article.ts index 597e3acefb73a5..f6e4de7a40412a 100644 --- a/lib/routes/acfun/article.ts +++ b/lib/routes/acfun/article.ts @@ -78,16 +78,16 @@ export const route: Route = { maintainers: ['TonyRL'], handler, description: `| 二次元画师 | 综合 | 生活情感 | 游戏 | 动漫文化 | 漫画文学 | - | ---------- | ---- | -------- | ---- | -------- | -------- | - | 184 | 110 | 73 | 164 | 74 | 75 | +| ---------- | ---- | -------- | ---- | -------- | -------- | +| 184 | 110 | 73 | 164 | 74 | 75 | - | 最新发表 | 最新动态 | 最热文章 | - | ---------- | --------------- | -------- | - | createTime | lastCommentTime | hotScore | +| 最新发表 | 最新动态 | 最热文章 | +| ---------- | --------------- | -------- | +| createTime | lastCommentTime | hotScore | - | 时间不限 | 24 小时 | 三天 | 一周 | 一个月 | - | -------- | ------- | -------- | ------- | -------- | - | all | oneDay | threeDay | oneWeek | oneMonth |`, +| 时间不限 | 24 小时 | 三天 | 一周 | 一个月 | +| -------- | ------- | -------- | ------- | -------- | +| all | oneDay | threeDay | oneWeek | oneMonth |`, }; async function handler(ctx) { diff --git a/lib/routes/afdian/explore.ts b/lib/routes/afdian/explore.ts index 1f51c1d57cd6e0..e212ca4066c320 100644 --- a/lib/routes/afdian/explore.ts +++ b/lib/routes/afdian/explore.ts @@ -35,15 +35,15 @@ export const route: Route = { maintainers: ['sanmmm'], description: `分类 - | 推荐 | 最热 | - | ---- | ---- | - | rec | hot | +| 推荐 | 最热 | +| ---- | ---- | +| rec | hot | 目录类型 - | 所有 | 绘画 | 视频 | 写作 | 游戏 | 音乐 | 播客 | 摄影 | 技术 | Vtuber | 舞蹈 | 体育 | 旅游 | 美食 | 时尚 | 数码 | 动画 | 其他 | - | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ------ | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | - | 所有 | 绘画 | 视频 | 写作 | 游戏 | 音乐 | 播客 | 摄影 | 技术 | Vtuber | 舞蹈 | 体育 | 旅游 | 美食 | 时尚 | 数码 | 动画 | 其他 |`, +| 所有 | 绘画 | 视频 | 写作 | 游戏 | 音乐 | 播客 | 摄影 | 技术 | Vtuber | 舞蹈 | 体育 | 旅游 | 美食 | 时尚 | 数码 | 动画 | 其他 | +| ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ------ | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | +| 所有 | 绘画 | 视频 | 写作 | 游戏 | 音乐 | 播客 | 摄影 | 技术 | Vtuber | 舞蹈 | 体育 | 旅游 | 美食 | 时尚 | 数码 | 动画 | 其他 |`, handler, }; diff --git a/lib/routes/agirls/z-index.ts b/lib/routes/agirls/z-index.ts index 71a9d2aaeb125a..55092777767df5 100644 --- a/lib/routes/agirls/z-index.ts +++ b/lib/routes/agirls/z-index.ts @@ -27,8 +27,8 @@ export const route: Route = { maintainers: ['TonyRL'], handler, description: `| App 评测 | 手机开箱 | 笔电开箱 | 3C 周边 | 教学小技巧 | 科技情报 | - | -------- | -------- | -------- | ----------- | ---------- | -------- | - | app | phone | computer | accessories | tutorial | techlife |`, +| -------- | -------- | -------- | ----------- | ---------- | -------- | +| app | phone | computer | accessories | tutorial | techlife |`, }; async function handler(ctx) { diff --git a/lib/routes/agora0/index.ts b/lib/routes/agora0/index.ts index 63b81e780b4628..dc287a6a3ffa2b 100644 --- a/lib/routes/agora0/index.ts +++ b/lib/routes/agora0/index.ts @@ -27,8 +27,8 @@ export const route: Route = { maintainers: ['nczitzk'], handler, description: `| muitinⒾ | aidemnⒾ | srettaⓂ | qⓅ | sucoⓋ | - | ------- | ------- | -------- | -- | ----- | - | initium | inmedia | matters | pq | vocus |`, +| ------- | ------- | -------- | -- | ----- | +| initium | inmedia | matters | pq | vocus |`, }; async function handler(ctx) { diff --git a/lib/routes/agri/index.ts b/lib/routes/agri/index.ts index 7efa575fca3eef..e77a8820aef0f6 100644 --- a/lib/routes/agri/index.ts +++ b/lib/routes/agri/index.ts @@ -115,58 +115,58 @@ export const route: Route = { 若订阅 [最新发布](http://www.agri.cn/zx/zxfb/),网址为 \`http://www.agri.cn/zx/zxfb/\`。截取 \`https://www.agri.cn/\` 到末尾的部分 \`zx/zxfb\` 作为参数填入,此时路由为 [\`/agri/zx/zxfb\`](https://rsshub.app/agri/zx/zxfb)。 ::: - #### [机构](http://www.agri.cn/jg/) - - | 分类 | ID | - | --------------------------------------- | ------------------------------------------ | - | [成果展示](http://www.agri.cn/jg/cgzs/) | [jg/cgzs](https://rsshub.app/agri/jg/cgzs) | - - #### [资讯](http://www.agri.cn/zx/) - - | 分类 | ID | - | ------------------------------------------- | ------------------------------------------ | - | [最新发布](http://www.agri.cn/zx/zxfb/) | [zx/zxfb](https://rsshub.app/agri/zx/zxfb) | - | [农业要闻](http://www.agri.cn/zx/nyyw/) | [zx/nyyw](https://rsshub.app/agri/zx/nyyw) | - | [中心动态](http://www.agri.cn/zx/zxdt/) | [zx/zxdt](https://rsshub.app/agri/zx/zxdt) | - | [通知公告](http://www.agri.cn/zx/hxgg/) | [zx/hxgg](https://rsshub.app/agri/zx/hxgg) | - | [全国信息联播](http://www.agri.cn/zx/xxlb/) | [zx/xxlb](https://rsshub.app/agri/zx/xxlb) | - - #### [生产](http://www.agri.cn/sc/) - - | 分类 | ID | - | --------------------------------------- | ------------------------------------------ | - | [生产动态](http://www.agri.cn/sc/scdt/) | [sc/scdt](https://rsshub.app/agri/sc/scdt) | - | [农业品种](http://www.agri.cn/sc/nypz/) | [sc/nypz](https://rsshub.app/agri/sc/nypz) | - | [农事指导](http://www.agri.cn/sc/nszd/) | [sc/nszd](https://rsshub.app/agri/sc/nszd) | - | [农业气象](http://www.agri.cn/sc/nyqx/) | [sc/nyqx](https://rsshub.app/agri/sc/nyqx) | - | [专项监测](http://www.agri.cn/sc/zxjc/) | [sc/zxjc](https://rsshub.app/agri/sc/zxjc) | - - #### [数据](http://www.agri.cn/sj/) - - | 分类 | ID | - | --------------------------------------- | ------------------------------------------ | - | [市场动态](http://www.agri.cn/sj/scdt/) | [sj/scdt](https://rsshub.app/agri/sj/scdt) | - | [供需形势](http://www.agri.cn/sj/gxxs/) | [sj/gxxs](https://rsshub.app/agri/sj/gxxs) | - | [监测预警](http://www.agri.cn/sj/jcyj/) | [sj/jcyj](https://rsshub.app/agri/sj/jcyj) | - - #### [信息化](http://www.agri.cn/xxh/) - - | 分类 | ID | - | ---------------------------------------------- | ------------------------------------------------ | - | [智慧农业](http://www.agri.cn/xxh/zhny/) | [xxh/zhny](https://rsshub.app/agri/xxh/zhny) | - | [信息化标准](http://www.agri.cn/xxh/xxhbz/) | [xxh/xxhbz](https://rsshub.app/agri/xxh/xxhbz) | - | [中国乡村资讯](http://www.agri.cn/xxh/zgxczx/) | [xxh/zgxczx](https://rsshub.app/agri/xxh/zgxczx) | - - #### [视频](http://www.agri.cn/video/) - - | 分类 | ID | - | -------------------------------------------------- | ---------------------------------------------------------------- | - | [新闻资讯](http://www.agri.cn/video/xwzx/nyxw/) | [video/xwzx/nyxw](https://rsshub.app/agri/video/xwzx/nyxw) | - | [致富天地](http://www.agri.cn/video/zftd/) | [video/zftd](https://rsshub.app/agri/video/zftd) | - | [地方农业](http://www.agri.cn/video/dfny/beijing/) | [video/dfny/beijing](https://rsshub.app/agri/video/dfny/beijing) | - | [气象农业](http://www.agri.cn/video/qxny/) | [video/qxny](https://rsshub.app/agri/video/qxny) | - | [讲座培训](http://www.agri.cn/video/jzpx/) | [video/jzpx](https://rsshub.app/agri/video/jzpx) | - | [文化生活](http://www.agri.cn/video/whsh/) | [video/whsh](https://rsshub.app/agri/video/whsh) | +#### [机构](http://www.agri.cn/jg/) + +| 分类 | ID | +| --------------------------------------- | ------------------------------------------ | +| [成果展示](http://www.agri.cn/jg/cgzs/) | [jg/cgzs](https://rsshub.app/agri/jg/cgzs) | + +#### [资讯](http://www.agri.cn/zx/) + +| 分类 | ID | +| ------------------------------------------- | ------------------------------------------ | +| [最新发布](http://www.agri.cn/zx/zxfb/) | [zx/zxfb](https://rsshub.app/agri/zx/zxfb) | +| [农业要闻](http://www.agri.cn/zx/nyyw/) | [zx/nyyw](https://rsshub.app/agri/zx/nyyw) | +| [中心动态](http://www.agri.cn/zx/zxdt/) | [zx/zxdt](https://rsshub.app/agri/zx/zxdt) | +| [通知公告](http://www.agri.cn/zx/hxgg/) | [zx/hxgg](https://rsshub.app/agri/zx/hxgg) | +| [全国信息联播](http://www.agri.cn/zx/xxlb/) | [zx/xxlb](https://rsshub.app/agri/zx/xxlb) | + +#### [生产](http://www.agri.cn/sc/) + +| 分类 | ID | +| --------------------------------------- | ------------------------------------------ | +| [生产动态](http://www.agri.cn/sc/scdt/) | [sc/scdt](https://rsshub.app/agri/sc/scdt) | +| [农业品种](http://www.agri.cn/sc/nypz/) | [sc/nypz](https://rsshub.app/agri/sc/nypz) | +| [农事指导](http://www.agri.cn/sc/nszd/) | [sc/nszd](https://rsshub.app/agri/sc/nszd) | +| [农业气象](http://www.agri.cn/sc/nyqx/) | [sc/nyqx](https://rsshub.app/agri/sc/nyqx) | +| [专项监测](http://www.agri.cn/sc/zxjc/) | [sc/zxjc](https://rsshub.app/agri/sc/zxjc) | + +#### [数据](http://www.agri.cn/sj/) + +| 分类 | ID | +| --------------------------------------- | ------------------------------------------ | +| [市场动态](http://www.agri.cn/sj/scdt/) | [sj/scdt](https://rsshub.app/agri/sj/scdt) | +| [供需形势](http://www.agri.cn/sj/gxxs/) | [sj/gxxs](https://rsshub.app/agri/sj/gxxs) | +| [监测预警](http://www.agri.cn/sj/jcyj/) | [sj/jcyj](https://rsshub.app/agri/sj/jcyj) | + +#### [信息化](http://www.agri.cn/xxh/) + +| 分类 | ID | +| ---------------------------------------------- | ------------------------------------------------ | +| [智慧农业](http://www.agri.cn/xxh/zhny/) | [xxh/zhny](https://rsshub.app/agri/xxh/zhny) | +| [信息化标准](http://www.agri.cn/xxh/xxhbz/) | [xxh/xxhbz](https://rsshub.app/agri/xxh/xxhbz) | +| [中国乡村资讯](http://www.agri.cn/xxh/zgxczx/) | [xxh/zgxczx](https://rsshub.app/agri/xxh/zgxczx) | + +#### [视频](http://www.agri.cn/video/) + +| 分类 | ID | +| -------------------------------------------------- | ---------------------------------------------------------------- | +| [新闻资讯](http://www.agri.cn/video/xwzx/nyxw/) | [video/xwzx/nyxw](https://rsshub.app/agri/video/xwzx/nyxw) | +| [致富天地](http://www.agri.cn/video/zftd/) | [video/zftd](https://rsshub.app/agri/video/zftd) | +| [地方农业](http://www.agri.cn/video/dfny/beijing/) | [video/dfny/beijing](https://rsshub.app/agri/video/dfny/beijing) | +| [气象农业](http://www.agri.cn/video/qxny/) | [video/qxny](https://rsshub.app/agri/video/qxny) | +| [讲座培训](http://www.agri.cn/video/jzpx/) | [video/jzpx](https://rsshub.app/agri/video/jzpx) | +| [文化生活](http://www.agri.cn/video/whsh/) | [video/whsh](https://rsshub.app/agri/video/whsh) | `, categories: ['new-media'], diff --git a/lib/routes/aibase/discover.ts b/lib/routes/aibase/discover.ts index 8d7a6cd1c67049..09dca068ac730b 100644 --- a/lib/routes/aibase/discover.ts +++ b/lib/routes/aibase/discover.ts @@ -90,104 +90,104 @@ export const route: Route = { 若订阅 [图片背景移除](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)。 ::: -
- 更多分类 +
+更多分类 - #### 图像处理 +#### 图像处理 - | 分类 | 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/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 | +| --------------------------------------------------- | ------------------------------------------------- | +| [视频剪辑](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 | +| --------------------------------------------------- | ------------------------------------------------- | +| [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/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 | +| --------------------------------------------------- | ------------------------------------------------- | +| [音乐创作](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 | +| ----------------------------------------------------- | ------------------------------------------------- | +| [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/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/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/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/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/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) | -
+| 分类 | ID | +| ----------------------------------------------- | ----------------------------------------------------- | +| [法律](https://top.aibase.com/discover/138-139) | [138-139](https://rsshub.app/aibase/discover/138-139) | +
`, categories: ['new-media', 'popular'], diff --git a/lib/routes/aibase/topic.ts b/lib/routes/aibase/topic.ts index aca184ec28f0d8..3a9e4171791b3a 100644 --- a/lib/routes/aibase/topic.ts +++ b/lib/routes/aibase/topic.ts @@ -64,31 +64,31 @@ export const route: Route = { 此处查看 [全部标签](https://top.aibase.com/topic) ::: -
- 更多标签 +
+更多标签 - | [AI](https://top.aibase.com/topic/AI) | [人工智能](https://top.aibase.com/topic/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD) | [图像生成](https://top.aibase.com/topic/%E5%9B%BE%E5%83%8F%E7%94%9F%E6%88%90) | [自动化](https://top.aibase.com/topic/%E8%87%AA%E5%8A%A8%E5%8C%96) | [AI 助手](https://top.aibase.com/topic/AI%E5%8A%A9%E6%89%8B) | - | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | - | [聊天机器人](https://top.aibase.com/topic/%E8%81%8A%E5%A4%A9%E6%9C%BA%E5%99%A8%E4%BA%BA) | [个性化](https://top.aibase.com/topic/%E4%B8%AA%E6%80%A7%E5%8C%96) | [社交媒体](https://top.aibase.com/topic/%E7%A4%BE%E4%BA%A4%E5%AA%92%E4%BD%93) | [图像处理](https://top.aibase.com/topic/%E5%9B%BE%E5%83%8F%E5%A4%84%E7%90%86) | [数据分析](https://top.aibase.com/topic/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90) | - | [自然语言处理](https://top.aibase.com/topic/%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%A4%84%E7%90%86) | [聊天](https://top.aibase.com/topic/%E8%81%8A%E5%A4%A9) | [机器学习](https://top.aibase.com/topic/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0) | [教育](https://top.aibase.com/topic/%E6%95%99%E8%82%B2) | [内容创作](https://top.aibase.com/topic/%E5%86%85%E5%AE%B9%E5%88%9B%E4%BD%9C) | - | [生产力](https://top.aibase.com/topic/%E7%94%9F%E4%BA%A7%E5%8A%9B) | [设计](https://top.aibase.com/topic/%E8%AE%BE%E8%AE%A1) | [ChatGPT](https://top.aibase.com/topic/ChatGPT) | [创意](https://top.aibase.com/topic/%E5%88%9B%E6%84%8F) | [开源](https://top.aibase.com/topic/%E5%BC%80%E6%BA%90) | - | [写作](https://top.aibase.com/topic/%E5%86%99%E4%BD%9C) | [效率助手](https://top.aibase.com/topic/%E6%95%88%E7%8E%87%E5%8A%A9%E6%89%8B) | [学习](https://top.aibase.com/topic/%E5%AD%A6%E4%B9%A0) | [插件](https://top.aibase.com/topic/%E6%8F%92%E4%BB%B6) | [翻译](https://top.aibase.com/topic/%E7%BF%BB%E8%AF%91) | - | [团队协作](https://top.aibase.com/topic/%E5%9B%A2%E9%98%9F%E5%8D%8F%E4%BD%9C) | [SEO](https://top.aibase.com/topic/SEO) | [营销](https://top.aibase.com/topic/%E8%90%A5%E9%94%80) | [内容生成](https://top.aibase.com/topic/%E5%86%85%E5%AE%B9%E7%94%9F%E6%88%90) | [AI 技术](https://top.aibase.com/topic/AI%E6%8A%80%E6%9C%AF) | - | [AI 工具](https://top.aibase.com/topic/AI%E5%B7%A5%E5%85%B7) | [智能助手](https://top.aibase.com/topic/%E6%99%BA%E8%83%BD%E5%8A%A9%E6%89%8B) | [深度学习](https://top.aibase.com/topic/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0) | [多语言支持](https://top.aibase.com/topic/%E5%A4%9A%E8%AF%AD%E8%A8%80%E6%94%AF%E6%8C%81) | [视频](https://top.aibase.com/topic/%E8%A7%86%E9%A2%91) | - | [艺术](https://top.aibase.com/topic/%E8%89%BA%E6%9C%AF) | [文本生成](https://top.aibase.com/topic/%E6%96%87%E6%9C%AC%E7%94%9F%E6%88%90) | [开发编程](https://top.aibase.com/topic/%E5%BC%80%E5%8F%91%E7%BC%96%E7%A8%8B) | [协作](https://top.aibase.com/topic/%E5%8D%8F%E4%BD%9C) | [语言模型](https://top.aibase.com/topic/%E8%AF%AD%E8%A8%80%E6%A8%A1%E5%9E%8B) | - | [工具](https://top.aibase.com/topic/%E5%B7%A5%E5%85%B7) | [销售](https://top.aibase.com/topic/%E9%94%80%E5%94%AE) | [生产力工具](https://top.aibase.com/topic/%E7%94%9F%E4%BA%A7%E5%8A%9B%E5%B7%A5%E5%85%B7) | [AI 写作](https://top.aibase.com/topic/AI%E5%86%99%E4%BD%9C) | [创作](https://top.aibase.com/topic/%E5%88%9B%E4%BD%9C) | - | [工作效率](https://top.aibase.com/topic/%E5%B7%A5%E4%BD%9C%E6%95%88%E7%8E%87) | [无代码](https://top.aibase.com/topic/%E6%97%A0%E4%BB%A3%E7%A0%81) | [隐私保护](https://top.aibase.com/topic/%E9%9A%90%E7%A7%81%E4%BF%9D%E6%8A%A4) | [视频编辑](https://top.aibase.com/topic/%E8%A7%86%E9%A2%91%E7%BC%96%E8%BE%91) | [摘要](https://top.aibase.com/topic/%E6%91%98%E8%A6%81) | - | [多语言](https://top.aibase.com/topic/%E5%A4%9A%E8%AF%AD%E8%A8%80) | [求职](https://top.aibase.com/topic/%E6%B1%82%E8%81%8C) | [GPT](https://top.aibase.com/topic/GPT) | [音乐](https://top.aibase.com/topic/%E9%9F%B3%E4%B9%90) | [视频创作](https://top.aibase.com/topic/%E8%A7%86%E9%A2%91%E5%88%9B%E4%BD%9C) | - | [设计工具](https://top.aibase.com/topic/%E8%AE%BE%E8%AE%A1%E5%B7%A5%E5%85%B7) | [搜索](https://top.aibase.com/topic/%E6%90%9C%E7%B4%A2) | [写作工具](https://top.aibase.com/topic/%E5%86%99%E4%BD%9C%E5%B7%A5%E5%85%B7) | [视频生成](https://top.aibase.com/topic/%E8%A7%86%E9%A2%91%E7%94%9F%E6%88%90) | [招聘](https://top.aibase.com/topic/%E6%8B%9B%E8%81%98) | - | [代码生成](https://top.aibase.com/topic/%E4%BB%A3%E7%A0%81%E7%94%9F%E6%88%90) | [大型语言模型](https://top.aibase.com/topic/%E5%A4%A7%E5%9E%8B%E8%AF%AD%E8%A8%80%E6%A8%A1%E5%9E%8B) | [语音识别](https://top.aibase.com/topic/%E8%AF%AD%E9%9F%B3%E8%AF%86%E5%88%AB) | [编程](https://top.aibase.com/topic/%E7%BC%96%E7%A8%8B) | [在线工具](https://top.aibase.com/topic/%E5%9C%A8%E7%BA%BF%E5%B7%A5%E5%85%B7) | - | [API](https://top.aibase.com/topic/API) | [趣味](https://top.aibase.com/topic/%E8%B6%A3%E5%91%B3) | [客户支持](https://top.aibase.com/topic/%E5%AE%A2%E6%88%B7%E6%94%AF%E6%8C%81) | [语音合成](https://top.aibase.com/topic/%E8%AF%AD%E9%9F%B3%E5%90%88%E6%88%90) | [图像](https://top.aibase.com/topic/%E5%9B%BE%E5%83%8F) | - | [电子商务](https://top.aibase.com/topic/%E7%94%B5%E5%AD%90%E5%95%86%E5%8A%A1) | [SEO 优化](https://top.aibase.com/topic/SEO%E4%BC%98%E5%8C%96) | [AI 辅助](https://top.aibase.com/topic/AI%E8%BE%85%E5%8A%A9) | [AI 生成](https://top.aibase.com/topic/AI%E7%94%9F%E6%88%90) | [创作工具](https://top.aibase.com/topic/%E5%88%9B%E4%BD%9C%E5%B7%A5%E5%85%B7) | - | [免费](https://top.aibase.com/topic/%E5%85%8D%E8%B4%B9) | [LinkedIn](https://top.aibase.com/topic/LinkedIn) | [博客](https://top.aibase.com/topic/%E5%8D%9A%E5%AE%A2) | [写作助手](https://top.aibase.com/topic/%E5%86%99%E4%BD%9C%E5%8A%A9%E6%89%8B) | [助手](https://top.aibase.com/topic/%E5%8A%A9%E6%89%8B) | - | [智能](https://top.aibase.com/topic/%E6%99%BA%E8%83%BD) | [健康](https://top.aibase.com/topic/%E5%81%A5%E5%BA%B7) | [多模态](https://top.aibase.com/topic/%E5%A4%9A%E6%A8%A1%E6%80%81) | [任务管理](https://top.aibase.com/topic/%E4%BB%BB%E5%8A%A1%E7%AE%A1%E7%90%86) | [电子邮件](https://top.aibase.com/topic/%E7%94%B5%E5%AD%90%E9%82%AE%E4%BB%B6) | - | [笔记](https://top.aibase.com/topic/%E7%AC%94%E8%AE%B0) | [搜索引擎](https://top.aibase.com/topic/%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E) | [计算机视觉](https://top.aibase.com/topic/%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%86%E8%A7%89) | [社区](https://top.aibase.com/topic/%E7%A4%BE%E5%8C%BA) | [效率](https://top.aibase.com/topic/%E6%95%88%E7%8E%87) | - | [知识管理](https://top.aibase.com/topic/%E7%9F%A5%E8%AF%86%E7%AE%A1%E7%90%86) | [LLM](https://top.aibase.com/topic/LLM) | [智能聊天](https://top.aibase.com/topic/%E6%99%BA%E8%83%BD%E8%81%8A%E5%A4%A9) | [社交](https://top.aibase.com/topic/%E7%A4%BE%E4%BA%A4) | [语言学习](https://top.aibase.com/topic/%E8%AF%AD%E8%A8%80%E5%AD%A6%E4%B9%A0) | - | [娱乐](https://top.aibase.com/topic/%E5%A8%B1%E4%B9%90) | [简历](https://top.aibase.com/topic/%E7%AE%80%E5%8E%86) | [OpenAI](https://top.aibase.com/topic/OpenAI) | [客户服务](https://top.aibase.com/topic/%E5%AE%A2%E6%88%B7%E6%9C%8D%E5%8A%A1) | [室内设计](https://top.aibase.com/topic/%E5%AE%A4%E5%86%85%E8%AE%BE%E8%AE%A1) | -
+| [AI](https://top.aibase.com/topic/AI) | [人工智能](https://top.aibase.com/topic/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD) | [图像生成](https://top.aibase.com/topic/%E5%9B%BE%E5%83%8F%E7%94%9F%E6%88%90) | [自动化](https://top.aibase.com/topic/%E8%87%AA%E5%8A%A8%E5%8C%96) | [AI 助手](https://top.aibase.com/topic/AI%E5%8A%A9%E6%89%8B) | +| --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | +| [聊天机器人](https://top.aibase.com/topic/%E8%81%8A%E5%A4%A9%E6%9C%BA%E5%99%A8%E4%BA%BA) | [个性化](https://top.aibase.com/topic/%E4%B8%AA%E6%80%A7%E5%8C%96) | [社交媒体](https://top.aibase.com/topic/%E7%A4%BE%E4%BA%A4%E5%AA%92%E4%BD%93) | [图像处理](https://top.aibase.com/topic/%E5%9B%BE%E5%83%8F%E5%A4%84%E7%90%86) | [数据分析](https://top.aibase.com/topic/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90) | +| [自然语言处理](https://top.aibase.com/topic/%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%A4%84%E7%90%86) | [聊天](https://top.aibase.com/topic/%E8%81%8A%E5%A4%A9) | [机器学习](https://top.aibase.com/topic/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0) | [教育](https://top.aibase.com/topic/%E6%95%99%E8%82%B2) | [内容创作](https://top.aibase.com/topic/%E5%86%85%E5%AE%B9%E5%88%9B%E4%BD%9C) | +| [生产力](https://top.aibase.com/topic/%E7%94%9F%E4%BA%A7%E5%8A%9B) | [设计](https://top.aibase.com/topic/%E8%AE%BE%E8%AE%A1) | [ChatGPT](https://top.aibase.com/topic/ChatGPT) | [创意](https://top.aibase.com/topic/%E5%88%9B%E6%84%8F) | [开源](https://top.aibase.com/topic/%E5%BC%80%E6%BA%90) | +| [写作](https://top.aibase.com/topic/%E5%86%99%E4%BD%9C) | [效率助手](https://top.aibase.com/topic/%E6%95%88%E7%8E%87%E5%8A%A9%E6%89%8B) | [学习](https://top.aibase.com/topic/%E5%AD%A6%E4%B9%A0) | [插件](https://top.aibase.com/topic/%E6%8F%92%E4%BB%B6) | [翻译](https://top.aibase.com/topic/%E7%BF%BB%E8%AF%91) | +| [团队协作](https://top.aibase.com/topic/%E5%9B%A2%E9%98%9F%E5%8D%8F%E4%BD%9C) | [SEO](https://top.aibase.com/topic/SEO) | [营销](https://top.aibase.com/topic/%E8%90%A5%E9%94%80) | [内容生成](https://top.aibase.com/topic/%E5%86%85%E5%AE%B9%E7%94%9F%E6%88%90) | [AI 技术](https://top.aibase.com/topic/AI%E6%8A%80%E6%9C%AF) | +| [AI 工具](https://top.aibase.com/topic/AI%E5%B7%A5%E5%85%B7) | [智能助手](https://top.aibase.com/topic/%E6%99%BA%E8%83%BD%E5%8A%A9%E6%89%8B) | [深度学习](https://top.aibase.com/topic/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0) | [多语言支持](https://top.aibase.com/topic/%E5%A4%9A%E8%AF%AD%E8%A8%80%E6%94%AF%E6%8C%81) | [视频](https://top.aibase.com/topic/%E8%A7%86%E9%A2%91) | +| [艺术](https://top.aibase.com/topic/%E8%89%BA%E6%9C%AF) | [文本生成](https://top.aibase.com/topic/%E6%96%87%E6%9C%AC%E7%94%9F%E6%88%90) | [开发编程](https://top.aibase.com/topic/%E5%BC%80%E5%8F%91%E7%BC%96%E7%A8%8B) | [协作](https://top.aibase.com/topic/%E5%8D%8F%E4%BD%9C) | [语言模型](https://top.aibase.com/topic/%E8%AF%AD%E8%A8%80%E6%A8%A1%E5%9E%8B) | +| [工具](https://top.aibase.com/topic/%E5%B7%A5%E5%85%B7) | [销售](https://top.aibase.com/topic/%E9%94%80%E5%94%AE) | [生产力工具](https://top.aibase.com/topic/%E7%94%9F%E4%BA%A7%E5%8A%9B%E5%B7%A5%E5%85%B7) | [AI 写作](https://top.aibase.com/topic/AI%E5%86%99%E4%BD%9C) | [创作](https://top.aibase.com/topic/%E5%88%9B%E4%BD%9C) | +| [工作效率](https://top.aibase.com/topic/%E5%B7%A5%E4%BD%9C%E6%95%88%E7%8E%87) | [无代码](https://top.aibase.com/topic/%E6%97%A0%E4%BB%A3%E7%A0%81) | [隐私保护](https://top.aibase.com/topic/%E9%9A%90%E7%A7%81%E4%BF%9D%E6%8A%A4) | [视频编辑](https://top.aibase.com/topic/%E8%A7%86%E9%A2%91%E7%BC%96%E8%BE%91) | [摘要](https://top.aibase.com/topic/%E6%91%98%E8%A6%81) | +| [多语言](https://top.aibase.com/topic/%E5%A4%9A%E8%AF%AD%E8%A8%80) | [求职](https://top.aibase.com/topic/%E6%B1%82%E8%81%8C) | [GPT](https://top.aibase.com/topic/GPT) | [音乐](https://top.aibase.com/topic/%E9%9F%B3%E4%B9%90) | [视频创作](https://top.aibase.com/topic/%E8%A7%86%E9%A2%91%E5%88%9B%E4%BD%9C) | +| [设计工具](https://top.aibase.com/topic/%E8%AE%BE%E8%AE%A1%E5%B7%A5%E5%85%B7) | [搜索](https://top.aibase.com/topic/%E6%90%9C%E7%B4%A2) | [写作工具](https://top.aibase.com/topic/%E5%86%99%E4%BD%9C%E5%B7%A5%E5%85%B7) | [视频生成](https://top.aibase.com/topic/%E8%A7%86%E9%A2%91%E7%94%9F%E6%88%90) | [招聘](https://top.aibase.com/topic/%E6%8B%9B%E8%81%98) | +| [代码生成](https://top.aibase.com/topic/%E4%BB%A3%E7%A0%81%E7%94%9F%E6%88%90) | [大型语言模型](https://top.aibase.com/topic/%E5%A4%A7%E5%9E%8B%E8%AF%AD%E8%A8%80%E6%A8%A1%E5%9E%8B) | [语音识别](https://top.aibase.com/topic/%E8%AF%AD%E9%9F%B3%E8%AF%86%E5%88%AB) | [编程](https://top.aibase.com/topic/%E7%BC%96%E7%A8%8B) | [在线工具](https://top.aibase.com/topic/%E5%9C%A8%E7%BA%BF%E5%B7%A5%E5%85%B7) | +| [API](https://top.aibase.com/topic/API) | [趣味](https://top.aibase.com/topic/%E8%B6%A3%E5%91%B3) | [客户支持](https://top.aibase.com/topic/%E5%AE%A2%E6%88%B7%E6%94%AF%E6%8C%81) | [语音合成](https://top.aibase.com/topic/%E8%AF%AD%E9%9F%B3%E5%90%88%E6%88%90) | [图像](https://top.aibase.com/topic/%E5%9B%BE%E5%83%8F) | +| [电子商务](https://top.aibase.com/topic/%E7%94%B5%E5%AD%90%E5%95%86%E5%8A%A1) | [SEO 优化](https://top.aibase.com/topic/SEO%E4%BC%98%E5%8C%96) | [AI 辅助](https://top.aibase.com/topic/AI%E8%BE%85%E5%8A%A9) | [AI 生成](https://top.aibase.com/topic/AI%E7%94%9F%E6%88%90) | [创作工具](https://top.aibase.com/topic/%E5%88%9B%E4%BD%9C%E5%B7%A5%E5%85%B7) | +| [免费](https://top.aibase.com/topic/%E5%85%8D%E8%B4%B9) | [LinkedIn](https://top.aibase.com/topic/LinkedIn) | [博客](https://top.aibase.com/topic/%E5%8D%9A%E5%AE%A2) | [写作助手](https://top.aibase.com/topic/%E5%86%99%E4%BD%9C%E5%8A%A9%E6%89%8B) | [助手](https://top.aibase.com/topic/%E5%8A%A9%E6%89%8B) | +| [智能](https://top.aibase.com/topic/%E6%99%BA%E8%83%BD) | [健康](https://top.aibase.com/topic/%E5%81%A5%E5%BA%B7) | [多模态](https://top.aibase.com/topic/%E5%A4%9A%E6%A8%A1%E6%80%81) | [任务管理](https://top.aibase.com/topic/%E4%BB%BB%E5%8A%A1%E7%AE%A1%E7%90%86) | [电子邮件](https://top.aibase.com/topic/%E7%94%B5%E5%AD%90%E9%82%AE%E4%BB%B6) | +| [笔记](https://top.aibase.com/topic/%E7%AC%94%E8%AE%B0) | [搜索引擎](https://top.aibase.com/topic/%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E) | [计算机视觉](https://top.aibase.com/topic/%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%86%E8%A7%89) | [社区](https://top.aibase.com/topic/%E7%A4%BE%E5%8C%BA) | [效率](https://top.aibase.com/topic/%E6%95%88%E7%8E%87) | +| [知识管理](https://top.aibase.com/topic/%E7%9F%A5%E8%AF%86%E7%AE%A1%E7%90%86) | [LLM](https://top.aibase.com/topic/LLM) | [智能聊天](https://top.aibase.com/topic/%E6%99%BA%E8%83%BD%E8%81%8A%E5%A4%A9) | [社交](https://top.aibase.com/topic/%E7%A4%BE%E4%BA%A4) | [语言学习](https://top.aibase.com/topic/%E8%AF%AD%E8%A8%80%E5%AD%A6%E4%B9%A0) | +| [娱乐](https://top.aibase.com/topic/%E5%A8%B1%E4%B9%90) | [简历](https://top.aibase.com/topic/%E7%AE%80%E5%8E%86) | [OpenAI](https://top.aibase.com/topic/OpenAI) | [客户服务](https://top.aibase.com/topic/%E5%AE%A2%E6%88%B7%E6%9C%8D%E5%8A%A1) | [室内设计](https://top.aibase.com/topic/%E5%AE%A4%E5%86%85%E8%AE%BE%E8%AE%A1) | +
`, categories: ['new-media', 'popular'], diff --git a/lib/routes/aiea/index.ts b/lib/routes/aiea/index.ts index 687c75a7e9614f..0d4a110969f912 100644 --- a/lib/routes/aiea/index.ts +++ b/lib/routes/aiea/index.ts @@ -18,10 +18,10 @@ export const route: Route = { maintainers: ['zxx-457'], handler, description: `| Time frame | - | ---------- | - | upcoming | - | past | - | both |`, +| ---------- | +| upcoming | +| past | +| both |`, }; async function handler(ctx) { diff --git a/lib/routes/aijishu/index.ts b/lib/routes/aijishu/index.ts index bb2f261105f2a9..522ad7d888e949 100644 --- a/lib/routes/aijishu/index.ts +++ b/lib/routes/aijishu/index.ts @@ -20,10 +20,10 @@ export const route: Route = { maintainers: [], handler, description: `| type | 说明 | - | ------- | ---- | - | channel | 频道 | - | blog | 专栏 | - | u | 用户 |`, +| ------- | ---- | +| channel | 频道 | +| blog | 专栏 | +| u | 用户 |`, }; async function handler(ctx) { diff --git a/lib/routes/aisixiang/thinktank.ts b/lib/routes/aisixiang/thinktank.ts index 12239370e75d55..0d618a8403f536 100644 --- a/lib/routes/aisixiang/thinktank.ts +++ b/lib/routes/aisixiang/thinktank.ts @@ -23,7 +23,7 @@ export const route: Route = { maintainers: ['hoilc', 'nczitzk'], handler, description: `| 论文 | 时评 | 随笔 | 演讲 | 访谈 | 著作 | 读书 | 史论 | 译作 | 诗歌 | 书信 | 科学 | - | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- |`, +| ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- |`, }; async function handler(ctx) { diff --git a/lib/routes/aisixiang/toplist.ts b/lib/routes/aisixiang/toplist.ts index 77b123db889a76..0e9e2990e92b2c 100644 --- a/lib/routes/aisixiang/toplist.ts +++ b/lib/routes/aisixiang/toplist.ts @@ -12,8 +12,8 @@ export const route: Route = { maintainers: ['HenryQW', 'nczitzk'], handler, description: `| 文章点击排行 | 最近更新文章 | 文章推荐排行 | - | ------------ | ------------ | ------------ | - | 1 | 10 | 11 |`, +| ------------ | ------------ | ------------ | +| 1 | 10 | 11 |`, }; async function handler(ctx) { diff --git a/lib/routes/ali213/news.ts b/lib/routes/ali213/news.ts index e5afb903aa66a8..0d0ecba9d92e31 100644 --- a/lib/routes/ali213/news.ts +++ b/lib/routes/ali213/news.ts @@ -133,10 +133,10 @@ export const handler = async (ctx: Context): Promise => { .filter((_): _ is { url: string; type: string; content_html: string } => true); return { + ...item, title, description, pubDate: timezone(parseDate($$('div.newstag_l').text().split(/\s/)[0]), +8), - author: item.author, content: { html: description, text: $$('div#Content').html() ?? '', diff --git a/lib/routes/aliresearch/information.ts b/lib/routes/aliresearch/information.ts index a98eb99d788bc6..ba7654cd048a3f 100644 --- a/lib/routes/aliresearch/information.ts +++ b/lib/routes/aliresearch/information.ts @@ -28,7 +28,7 @@ export const route: Route = { handler, url: 'aliresearch.com/cn/information', description: `| 新闻 | 观点 | 案例 | - | ---- | ---- | ---- |`, +| ---- | ---- | ---- |`, }; async function handler(ctx) { diff --git a/lib/routes/alistapart/topic.ts b/lib/routes/alistapart/topic.ts index 13fad6b4c1bf1d..5dbe0d1e7dec6d 100644 --- a/lib/routes/alistapart/topic.ts +++ b/lib/routes/alistapart/topic.ts @@ -26,51 +26,51 @@ export const route: Route = { url: 'alistapart.com/articles/', description: `You have the option to utilize the main heading or use individual categories as topics for the path. - | **Code** | *code* | - | --------------------------- | ------------------------- | - | **Application Development** | *application-development* | - | **Browsers** | *browsers* | - | **CSS** | *css* | - | **HTML** | *html* | - | **JavaScript** | *javascript* | - | **The Server Side** | *the-server-side* | +| **Code** | *code* | +| --------------------------- | ------------------------- | +| **Application Development** | *application-development* | +| **Browsers** | *browsers* | +| **CSS** | *css* | +| **HTML** | *html* | +| **JavaScript** | *javascript* | +| **The Server Side** | *the-server-side* | - | **Content** | *content* | - | -------------------- | ------------------ | - | **Community** | *community* | - | **Content Strategy** | *content-strategy* | - | **Writing** | *writing* | +| **Content** | *content* | +| -------------------- | ------------------ | +| **Community** | *community* | +| **Content Strategy** | *content-strategy* | +| **Writing** | *writing* | - | **Design** | *design* | - | -------------------------- | ---------------------- | - | **Brand Identity** | *brand-identity* | - | **Graphic Design** | *graphic-design* | - | **Layout & Grids** | *layout-grids* | - | **Mobile/Multidevice** | *mobile-multidevice* | - | **Responsive Design** | *responsive-design* | - | **Typography & Web Fonts** | *typography-web-fonts* | +| **Design** | *design* | +| -------------------------- | ---------------------- | +| **Brand Identity** | *brand-identity* | +| **Graphic Design** | *graphic-design* | +| **Layout & Grids** | *layout-grids* | +| **Mobile/Multidevice** | *mobile-multidevice* | +| **Responsive Design** | *responsive-design* | +| **Typography & Web Fonts** | *typography-web-fonts* | - | **Industry & Business** | *industry-business* | - | ----------------------- | ------------------- | - | **Business** | *business* | - | **Career** | *career* | - | **Industry** | *industry* | - | **State of the Web** | *state-of-the-web* | +| **Industry & Business** | *industry-business* | +| ----------------------- | ------------------- | +| **Business** | *business* | +| **Career** | *career* | +| **Industry** | *industry* | +| **State of the Web** | *state-of-the-web* | - | **Process** | *process* | - | ---------------------- | -------------------- | - | **Creativity** | *creativity* | - | **Project Management** | *project-management* | - | **Web Strategy** | *web-strategy* | - | **Workflow & Tools** | *workflow-tools* | +| **Process** | *process* | +| ---------------------- | -------------------- | +| **Creativity** | *creativity* | +| **Project Management** | *project-management* | +| **Web Strategy** | *web-strategy* | +| **Workflow & Tools** | *workflow-tools* | - | **User Experience** | *user-experience* | - | ---------------------------- | -------------------------- | - | **Accessibility** | *accessibility* | - | **Information Architecture** | *information-architecture* | - | **Interaction Design** | *interaction-design* | - | **Usability** | *usability* | - | **User Research** | *user-research* |`, +| **User Experience** | *user-experience* | +| ---------------------------- | -------------------------- | +| **Accessibility** | *accessibility* | +| **Information Architecture** | *information-architecture* | +| **Interaction Design** | *interaction-design* | +| **Usability** | *usability* | +| **User Research** | *user-research* |`, }; async function handler(ctx) { diff --git a/lib/routes/aliyun/notice.ts b/lib/routes/aliyun/notice.ts index d897de5b18126c..a7f62130a569aa 100644 --- a/lib/routes/aliyun/notice.ts +++ b/lib/routes/aliyun/notice.ts @@ -34,12 +34,12 @@ export const route: Route = { maintainers: ['muzea'], handler, description: `| 类型 | type | - | -------- | ---- | - | 全部 | | - | 升级公告 | 1 | - | 安全公告 | 2 | - | 备案公告 | 3 | - | 其他 | 4 |`, +| -------- | ---- | +| 全部 | | +| 升级公告 | 1 | +| 安全公告 | 2 | +| 备案公告 | 3 | +| 其他 | 4 |`, }; async function handler(ctx) { diff --git a/lib/routes/anquanke/category.ts b/lib/routes/anquanke/category.ts index 1554e1d8251300..dbc4e5f7f4c1ea 100644 --- a/lib/routes/anquanke/category.ts +++ b/lib/routes/anquanke/category.ts @@ -22,8 +22,8 @@ export const route: Route = { maintainers: ['qwertyuiop6'], handler, description: `| 360 网络安全周报 | 活动 | 知识 | 资讯 | 招聘 | 工具 | - | ---------------- | -------- | --------- | ---- | ---- | ---- | - | week | activity | knowledge | news | job | tool |`, +| ---------------- | -------- | --------- | ---- | ---- | ---- | +| week | activity | knowledge | news | job | tool |`, }; async function handler(ctx) { diff --git a/lib/routes/appleinsider/index.ts b/lib/routes/appleinsider/index.ts index bcafb0e3b69f45..5fb118e3487b84 100644 --- a/lib/routes/appleinsider/index.ts +++ b/lib/routes/appleinsider/index.ts @@ -27,8 +27,8 @@ export const route: Route = { maintainers: ['nczitzk'], handler, description: `| News | Reviews | How-tos | - | ---- | ------- | ------- | - | | reviews | how-to |`, +| ---- | ------- | ------- | +| | reviews | how-to |`, }; async function handler(ctx) { diff --git a/lib/routes/arcteryx/new-arrivals.ts b/lib/routes/arcteryx/new-arrivals.ts index 9d3a74a19c157f..bc7e486091a518 100644 --- a/lib/routes/arcteryx/new-arrivals.ts +++ b/lib/routes/arcteryx/new-arrivals.ts @@ -30,15 +30,15 @@ export const route: Route = { handler, description: `Country - | United States | Canada | United Kingdom | - | ------------- | ------ | -------------- | - | us | ca | gb | +| United States | Canada | United Kingdom | +| ------------- | ------ | -------------- | +| us | ca | gb | gender - | male | female | - | ---- | ------ | - | mens | womens | +| male | female | +| ---- | ------ | +| mens | womens | ::: tip Parameter \`country\` can be found within the url of \`Arcteryx\` website. diff --git a/lib/routes/arcteryx/outlet.ts b/lib/routes/arcteryx/outlet.ts index 3a4d02775c48eb..897cb35d4afbff 100644 --- a/lib/routes/arcteryx/outlet.ts +++ b/lib/routes/arcteryx/outlet.ts @@ -30,15 +30,15 @@ export const route: Route = { handler, description: `Country - | United States | Canada | United Kingdom | - | ------------- | ------ | -------------- | - | us | ca | gb | +| United States | Canada | United Kingdom | +| ------------- | ------ | -------------- | +| us | ca | gb | gender - | male | female | - | ---- | ------ | - | mens | womens | +| male | female | +| ---- | ------ | +| mens | womens | ::: tip Parameter \`country\` can be found within the url of \`Arcteryx\` website. diff --git a/lib/routes/atcoder/contest.ts b/lib/routes/atcoder/contest.ts index ebaf26a377d833..7e29b3ff5f6c92 100644 --- a/lib/routes/atcoder/contest.ts +++ b/lib/routes/atcoder/contest.ts @@ -22,23 +22,23 @@ export const route: Route = { handler, description: `Rated Range - | ABC Class (Rated for \~1999) | ARC Class (Rated for \~2799) | AGC Class (Rated for \~9999) | - | ---------------------------- | ---------------------------- | ---------------------------- | - | 1 | 2 | 3 | +| ABC Class (Rated for \~1999) | ARC Class (Rated for \~2799) | AGC Class (Rated for \~9999) | +| ---------------------------- | ---------------------------- | ---------------------------- | +| 1 | 2 | 3 | Category - | All | AtCoder Typical Contest | PAST Archive | Unofficial(unrated) | - | --- | ----------------------- | ------------ | ------------------- | - | 0 | 6 | 50 | 101 | +| All | AtCoder Typical Contest | PAST Archive | Unofficial(unrated) | +| --- | ----------------------- | ------------ | ------------------- | +| 0 | 6 | 50 | 101 | - | JOI Archive | Sponsored Tournament | Sponsored Parallel(rated) | - | ----------- | -------------------- | ------------------------- | - | 200 | 1000 | 1001 | +| JOI Archive | Sponsored Tournament | Sponsored Parallel(rated) | +| ----------- | -------------------- | ------------------------- | +| 200 | 1000 | 1001 | - | Sponsored Parallel(unrated) | Optimization Contest | - | --------------------------- | -------------------- | - | 1002 | 1200 |`, +| Sponsored Parallel(unrated) | Optimization Contest | +| --------------------------- | -------------------- | +| 1002 | 1200 |`, }; async function handler(ctx) { diff --git a/lib/routes/auto-stats/index.ts b/lib/routes/auto-stats/index.ts index 87d4089fd5a16c..350de7136b7ab0 100644 --- a/lib/routes/auto-stats/index.ts +++ b/lib/routes/auto-stats/index.ts @@ -23,8 +23,8 @@ export const route: Route = { maintainers: ['nczitzk'], handler, description: `| 信息快递 | 工作动态 | 专题分析 | - | -------- | -------- | -------- | - | xxkd | gzdt | ztfx |`, +| -------- | -------- | -------- | +| xxkd | gzdt | ztfx |`, }; async function handler(ctx) { diff --git a/lib/routes/baidu/tieba/search.ts b/lib/routes/baidu/tieba/search.ts index 2b0e57c2db6c56..a8fc04f9578a76 100644 --- a/lib/routes/baidu/tieba/search.ts +++ b/lib/routes/baidu/tieba/search.ts @@ -27,11 +27,11 @@ export const route: Route = { maintainers: ['JimenezLi'], handler, description: `| 键 | 含义 | 接受的值 | 默认值 | - | ------------ | ---------------------------------------------------------- | ------------- | ------ | - | kw | 在名为 kw 的贴吧中搜索 | 任意名称 / 无 | 无 | - | only_thread | 只看主题帖,默认为 0 关闭 | 0/1 | 0 | - | rn | 返回条目的数量 | 1-20 | 20 | - | sm | 排序方式,0 为按时间顺序,1 为按时间倒序,2 为按相关性顺序 | 0/1/2 | 1 | +| ------------ | ---------------------------------------------------------- | ------------- | ------ | +| kw | 在名为 kw 的贴吧中搜索 | 任意名称 / 无 | 无 | +| only_thread | 只看主题帖,默认为 0 关闭 | 0/1 | 0 | +| rn | 返回条目的数量 | 1-20 | 20 | +| sm | 排序方式,0 为按时间顺序,1 为按时间倒序,2 为按相关性顺序 | 0/1/2 | 1 | 用例:\`/baidu/tieba/search/neuro/kw=neurosama&only_thread=1&sm=2\``, }; diff --git a/lib/routes/baidu/top.ts b/lib/routes/baidu/top.ts index 1da3cdc20e4c57..74feafc99d2c6b 100644 --- a/lib/routes/baidu/top.ts +++ b/lib/routes/baidu/top.ts @@ -24,8 +24,8 @@ export const route: Route = { maintainers: ['xyqfer'], handler, description: `| 热搜榜 | 小说榜 | 电影榜 | 电视剧榜 | 汽车榜 | 游戏榜 | - | -------- | ------ | ------ | -------- | ------ | ------ | - | realtime | novel | movie | teleplay | car | game |`, +| -------- | ------ | ------ | -------- | ------ | ------ | +| realtime | novel | movie | teleplay | car | game |`, }; async function handler(ctx) { diff --git a/lib/routes/bdys/index.ts b/lib/routes/bdys/index.ts index 5c541d877cc8ab..4b0aa0106bf8f6 100644 --- a/lib/routes/bdys/index.ts +++ b/lib/routes/bdys/index.ts @@ -40,63 +40,63 @@ export const route: Route = { handler, description: `#### 资源分类 - | 不限 | 电影 | 电视剧 | - | ---- | ---- | ------ | - | all | 0 | 1 | +| 不限 | 电影 | 电视剧 | +| ---- | ---- | ------ | +| all | 0 | 1 | - #### 影视类型 +#### 影视类型 - | 不限 | 动作 | 爱情 | 喜剧 | 科幻 | 恐怖 | - | ---- | ------- | ------ | ---- | ------ | ------ | - | all | dongzuo | aiqing | xiju | kehuan | kongbu | +| 不限 | 动作 | 爱情 | 喜剧 | 科幻 | 恐怖 | +| ---- | ------- | ------ | ---- | ------ | ------ | +| all | dongzuo | aiqing | xiju | kehuan | kongbu | - | 战争 | 武侠 | 魔幻 | 剧情 | 动画 | 惊悚 | - | --------- | ----- | ------ | ------ | ------- | -------- | - | zhanzheng | wuxia | mohuan | juqing | donghua | jingsong | +| 战争 | 武侠 | 魔幻 | 剧情 | 动画 | 惊悚 | +| --------- | ----- | ------ | ------ | ------- | -------- | +| zhanzheng | wuxia | mohuan | juqing | donghua | jingsong | - | 3D | 灾难 | 悬疑 | 警匪 | 文艺 | 青春 | - | -- | ------ | ------ | ------- | ----- | -------- | - | 3D | zainan | xuanyi | jingfei | wenyi | qingchun | +| 3D | 灾难 | 悬疑 | 警匪 | 文艺 | 青春 | +| -- | ------ | ------ | ------- | ----- | -------- | +| 3D | zainan | xuanyi | jingfei | wenyi | qingchun | - | 冒险 | 犯罪 | 纪录 | 古装 | 奇幻 | 国语 | - | ------- | ------ | ---- | -------- | ------ | ----- | - | maoxian | fanzui | jilu | guzhuang | qihuan | guoyu | +| 冒险 | 犯罪 | 纪录 | 古装 | 奇幻 | 国语 | +| ------- | ------ | ---- | -------- | ------ | ----- | +| maoxian | fanzui | jilu | guzhuang | qihuan | guoyu | - | 综艺 | 历史 | 运动 | 原创压制 | - | ------ | ----- | ------- | ---------- | - | zongyi | lishi | yundong | yuanchuang | +| 综艺 | 历史 | 运动 | 原创压制 | +| ------ | ----- | ------- | ---------- | +| zongyi | lishi | yundong | yuanchuang | - | 美剧 | 韩剧 | 国产电视剧 | 日剧 | 英剧 | 德剧 | - | ----- | ----- | ---------- | ---- | ------ | ---- | - | meiju | hanju | guoju | riju | yingju | deju | +| 美剧 | 韩剧 | 国产电视剧 | 日剧 | 英剧 | 德剧 | +| ----- | ----- | ---------- | ---- | ------ | ---- | +| meiju | hanju | guoju | riju | yingju | deju | - | 俄剧 | 巴剧 | 加剧 | 西剧 | 意大利剧 | 泰剧 | - | ---- | ---- | ----- | ------- | -------- | ----- | - | eju | baju | jiaju | spanish | yidaliju | taiju | +| 俄剧 | 巴剧 | 加剧 | 西剧 | 意大利剧 | 泰剧 | +| ---- | ---- | ----- | ------- | -------- | ----- | +| eju | baju | jiaju | spanish | yidaliju | taiju | - | 港台剧 | 法剧 | 澳剧 | - | --------- | ---- | ---- | - | gangtaiju | faju | aoju | +| 港台剧 | 法剧 | 澳剧 | +| --------- | ---- | ---- | +| gangtaiju | faju | aoju | - #### 制片地区 +#### 制片地区 - | 大陆 | 中国香港 | 中国台湾 | - | ---- | -------- | -------- | +| 大陆 | 中国香港 | 中国台湾 | +| ---- | -------- | -------- | - | 美国 | 英国 | 日本 | 韩国 | 法国 | - | ---- | ---- | ---- | ---- | ---- | +| 美国 | 英国 | 日本 | 韩国 | 法国 | +| ---- | ---- | ---- | ---- | ---- | - | 印度 | 德国 | 西班牙 | 意大利 | 澳大利亚 | - | ---- | ---- | ------ | ------ | -------- | +| 印度 | 德国 | 西班牙 | 意大利 | 澳大利亚 | +| ---- | ---- | ------ | ------ | -------- | - | 比利时 | 瑞典 | 荷兰 | 丹麦 | 加拿大 | 俄罗斯 | - | ------ | ---- | ---- | ---- | ------ | ------ | +| 比利时 | 瑞典 | 荷兰 | 丹麦 | 加拿大 | 俄罗斯 | +| ------ | ---- | ---- | ---- | ------ | ------ | - #### 影视排序 +#### 影视排序 - | 更新时间 | 豆瓣评分 | - | -------- | -------- | - | 0 | 1 |`, +| 更新时间 | 豆瓣评分 | +| -------- | -------- | +| 0 | 1 |`, }; async function handler(ctx) { diff --git a/lib/routes/beijingprice/index.ts b/lib/routes/beijingprice/index.ts index a2a147b2cd408a..8004d50b567c60 100644 --- a/lib/routes/beijingprice/index.ts +++ b/lib/routes/beijingprice/index.ts @@ -112,17 +112,17 @@ export const route: Route = { 若订阅 [新闻资讯](https://www.beijingprice.cn/jgzx/xwzx/),网址为 \`https://www.beijingprice.cn/jgzx/xwzx/\`。截取 \`https://beijingprice.cn/\` 到末尾 \`/\` 的部分 \`jgzx/xwzx\` 作为参数填入,此时路由为 [\`/beijingprice/jgzx/xwzx\`](https://rsshub.app/beijingprice/jgzx/xwzx)。 ::: - #### [价格资讯](https://www.beijingprice.cn/jgzx/xwzx/) +#### [价格资讯](https://www.beijingprice.cn/jgzx/xwzx/) - | [新闻资讯](https://www.beijingprice.cn/jgzx/xwzx/) | [工作动态](https://www.beijingprice.cn/jgzx/gzdt/) | [各区动态](https://www.beijingprice.cn/jgzx/gqdt/) | [通知公告](https://www.beijingprice.cn/jgzx/tzgg/) | [价格早报](https://www.beijingprice.cn/jgzx/jgzb/) | - | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | - | [jgzx/xwzx](https://rsshub.app/beijingprice/jgzx/xwzx) | [jgzx/gzdt](https://rsshub.app/beijingprice/jgzx/gzdt) | [jgzx/gqdt](https://rsshub.app/beijingprice/jgzx/gqdt) | [jgzx/tzgg](https://rsshub.app/beijingprice/jgzx/tzgg) | [jgzx/jgzb](https://rsshub.app/beijingprice/jgzx/jgzb) | +| [新闻资讯](https://www.beijingprice.cn/jgzx/xwzx/) | [工作动态](https://www.beijingprice.cn/jgzx/gzdt/) | [各区动态](https://www.beijingprice.cn/jgzx/gqdt/) | [通知公告](https://www.beijingprice.cn/jgzx/tzgg/) | [价格早报](https://www.beijingprice.cn/jgzx/jgzb/) | +| ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | +| [jgzx/xwzx](https://rsshub.app/beijingprice/jgzx/xwzx) | [jgzx/gzdt](https://rsshub.app/beijingprice/jgzx/gzdt) | [jgzx/gqdt](https://rsshub.app/beijingprice/jgzx/gqdt) | [jgzx/tzgg](https://rsshub.app/beijingprice/jgzx/tzgg) | [jgzx/jgzb](https://rsshub.app/beijingprice/jgzx/jgzb) | - #### [综合信息](https://www.beijingprice.cn/zhxx/cbjs/) +#### [综合信息](https://www.beijingprice.cn/zhxx/cbjs/) - | [价格听证](https://www.beijingprice.cn/zhxx/jgtz/) | [价格监测定点单位名单](https://www.beijingprice.cn/zhxx/jgjcdddwmd/) | [部门预算决算](https://www.beijingprice.cn/bmys/) | - | ------------------------------------------------------ | -------------------------------------------------------------------- | ------------------------------------------------- | - | [zhxx/jgtz](https://rsshub.app/beijingprice/zhxx/jgtz) | [zhxx/jgjcdddwmd](https://rsshub.app/beijingprice/zhxx/jgjcdddwmd) | [bmys](https://rsshub.app/beijingprice/bmys) | +| [价格听证](https://www.beijingprice.cn/zhxx/jgtz/) | [价格监测定点单位名单](https://www.beijingprice.cn/zhxx/jgjcdddwmd/) | [部门预算决算](https://www.beijingprice.cn/bmys/) | +| ------------------------------------------------------ | -------------------------------------------------------------------- | ------------------------------------------------- | +| [zhxx/jgtz](https://rsshub.app/beijingprice/zhxx/jgtz) | [zhxx/jgjcdddwmd](https://rsshub.app/beijingprice/zhxx/jgjcdddwmd) | [bmys](https://rsshub.app/beijingprice/bmys) | `, categories: ['government'], diff --git a/lib/routes/bendibao/news.ts b/lib/routes/bendibao/news.ts index bca4a37467f281..0f5404bcf99df7 100644 --- a/lib/routes/bendibao/news.ts +++ b/lib/routes/bendibao/news.ts @@ -30,11 +30,11 @@ export const route: Route = { handler, url: 'bendibao.com/', description: `| 城市名 | 缩写 | - | ------ | ---- | - | 北京 | bj | - | 上海 | sh | - | 广州 | gz | - | 深圳 | sz | +| ------ | ---- | +| 北京 | bj | +| 上海 | sh | +| 广州 | gz | +| 深圳 | sz | 更多城市请参见 [这里](http://www.bendibao.com/city.htm) diff --git a/lib/routes/bilibili/cache.ts b/lib/routes/bilibili/cache.ts index 395f1b0f9a9454..0bd54c3bac9ac7 100644 --- a/lib/routes/bilibili/cache.ts +++ b/lib/routes/bilibili/cache.ts @@ -169,15 +169,15 @@ const getLiveIDFromShortID = (shortID) => { }); }; -const getUsernameFromLiveID = (liveID) => { - const key = `bili-username-from-liveID-${liveID}`; +const getUserInfoFromLiveID = (liveID) => { + const key = `bili-userinfo-from-liveID-${liveID}`; return cache.tryGet(key, async () => { const { data: nameResponse } = await got(`https://api.live.bilibili.com/live_user/v1/UserInfo/get_anchor_in_room?roomid=${liveID}`, { headers: { Referer: `https://live.bilibili.com/${liveID}`, }, }); - return nameResponse.data.info.uname; + return nameResponse.data.info; }); }; @@ -280,7 +280,7 @@ export default { getUsernameFromUID, getUsernameAndFaceFromUID, getLiveIDFromShortID, - getUsernameFromLiveID, + getUserInfoFromLiveID, getVideoNameFromId, getCidFromId, getAidFromBvid, diff --git a/lib/routes/bilibili/live-room.ts b/lib/routes/bilibili/live-room.ts index 35a50c5f168170..7285da7adf9468 100644 --- a/lib/routes/bilibili/live-room.ts +++ b/lib/routes/bilibili/live-room.ts @@ -1,6 +1,9 @@ -import { Route } from '@/types'; -import got from '@/utils/got'; +import { DataItem, Route } from '@/types'; +import ofetch from '@/utils/ofetch'; import cache from './cache'; +import { decodeHTML } from 'entities'; +import { parseDate } from '@/utils/parse-date'; +import timezone from '@/utils/timezone'; export const route: Route = { path: '/live/room/:roomID', @@ -32,33 +35,32 @@ async function handler(ctx) { if (Number.parseInt(roomID, 10) < 10000) { roomID = await cache.getLiveIDFromShortID(roomID); } - const name = await cache.getUsernameFromLiveID(roomID); + const info = await cache.getUserInfoFromLiveID(roomID); - const response = await got({ - method: 'get', - url: `https://api.live.bilibili.com/room/v1/Room/get_info?room_id=${roomID}&from=room`, + const response = await ofetch(`https://api.live.bilibili.com/room/v1/Room/get_info?room_id=${roomID}&from=room`, { headers: { Referer: `https://live.bilibili.com/${roomID}`, }, }); - const data = response.data.data; + const data = response.data; - const liveItem = []; + const liveItem: DataItem[] = []; if (data.live_status === 1) { liveItem.push({ title: `${data.title} ${data.live_time}`, - description: `${data.title}
${data.description}`, - pubDate: new Date(data.live_time.replace(' ', 'T') + '+08:00').toUTCString(), + description: `
${decodeHTML(data.description)}`, + pubDate: timezone(parseDate(data.live_time), 8), guid: `https://live.bilibili.com/${roomID} ${data.live_time}`, link: `https://live.bilibili.com/${roomID}`, }); } return { - title: `${name} 直播间开播状态`, + title: `${info.uname} 直播间开播状态`, link: `https://live.bilibili.com/${roomID}`, - description: `${name} 直播间开播状态`, + description: `${info.uname} 直播间开播状态`, + image: info.face, item: liveItem, allowEmpty: true, }; diff --git a/lib/routes/bilibili/mall-new.ts b/lib/routes/bilibili/mall-new.ts index 5176e535eee576..0552e1588c37c1 100644 --- a/lib/routes/bilibili/mall-new.ts +++ b/lib/routes/bilibili/mall-new.ts @@ -18,8 +18,8 @@ export const route: Route = { maintainers: ['DIYgod'], handler, description: `| 全部 | 手办 | 魔力赏 | 周边 | 游戏 | - | ---- | ---- | ------ | ---- | ---- | - | 0 | 1 | 7 | 3 | 6 |`, +| ---- | ---- | ------ | ---- | ---- | +| 0 | 1 | 7 | 3 | 6 |`, }; async function handler(ctx) { diff --git a/lib/routes/bilibili/partion.ts b/lib/routes/bilibili/partion.ts index ccb37d8310ffcc..043d0897ac6503 100644 --- a/lib/routes/bilibili/partion.ts +++ b/lib/routes/bilibili/partion.ts @@ -20,117 +20,117 @@ export const route: Route = { handler, description: `动画 - | MAD·AMV | MMD·3D | 短片・手书・配音 | 特摄 | 综合 | - | ------- | ------ | ---------------- | ---- | ---- | - | 24 | 25 | 47 | 86 | 27 | +| MAD·AMV | MMD·3D | 短片・手书・配音 | 特摄 | 综合 | +| ------- | ------ | ---------------- | ---- | ---- | +| 24 | 25 | 47 | 86 | 27 | 番剧 - | 连载动画 | 完结动画 | 资讯 | 官方延伸 | - | -------- | -------- | ---- | -------- | - | 33 | 32 | 51 | 152 | +| 连载动画 | 完结动画 | 资讯 | 官方延伸 | +| -------- | -------- | ---- | -------- | +| 33 | 32 | 51 | 152 | 国创 - | 国产动画 | 国产原创相关 | 布袋戏 | 动态漫・广播剧 | 资讯 | - | -------- | ------------ | ------ | -------------- | ---- | - | 153 | 168 | 169 | 195 | 170 | +| 国产动画 | 国产原创相关 | 布袋戏 | 动态漫・广播剧 | 资讯 | +| -------- | ------------ | ------ | -------------- | ---- | +| 153 | 168 | 169 | 195 | 170 | 音乐 - | 原创音乐 | 翻唱 | VOCALOID·UTAU | 电音 | 演奏 | MV | 音乐现场 | 音乐综合 | ~~OP/ED/OST~~ | - | -------- | ---- | ------------- | ---- | ---- | --- | -------- | -------- | ------------- | - | 28 | 31 | 30 | 194 | 59 | 193 | 29 | 130 | 54 | +| 原创音乐 | 翻唱 | VOCALOID·UTAU | 电音 | 演奏 | MV | 音乐现场 | 音乐综合 | ~~OP/ED/OST~~ | +| -------- | ---- | ------------- | ---- | ---- | --- | -------- | -------- | ------------- | +| 28 | 31 | 30 | 194 | 59 | 193 | 29 | 130 | 54 | 舞蹈 - | 宅舞 | 街舞 | 明星舞蹈 | 中国舞 | 舞蹈综合 | 舞蹈教程 | - | ---- | ---- | -------- | ------ | -------- | -------- | - | 20 | 198 | 199 | 200 | 154 | 156 | +| 宅舞 | 街舞 | 明星舞蹈 | 中国舞 | 舞蹈综合 | 舞蹈教程 | +| ---- | ---- | -------- | ------ | -------- | -------- | +| 20 | 198 | 199 | 200 | 154 | 156 | 游戏 - | 单机游戏 | 电子竞技 | 手机游戏 | 网络游戏 | 桌游棋牌 | GMV | 音游 | Mugen | - | -------- | -------- | -------- | -------- | -------- | --- | ---- | ----- | - | 17 | 171 | 172 | 65 | 173 | 121 | 136 | 19 | +| 单机游戏 | 电子竞技 | 手机游戏 | 网络游戏 | 桌游棋牌 | GMV | 音游 | Mugen | +| -------- | -------- | -------- | -------- | -------- | --- | ---- | ----- | +| 17 | 171 | 172 | 65 | 173 | 121 | 136 | 19 | 知识 - | 科学科普 | 社科人文 | 财经 | 校园学习 | 职业职场 | 野生技术协会 | - | -------- | -------- | ---- | -------- | -------- | ------------ | - | 201 | 124 | 207 | 208 | 209 | 122 | +| 科学科普 | 社科人文 | 财经 | 校园学习 | 职业职场 | 野生技术协会 | +| -------- | -------- | ---- | -------- | -------- | ------------ | +| 201 | 124 | 207 | 208 | 209 | 122 | ~~科技~~ - | ~~演讲・公开课~~ | ~~星海~~ | ~~机械~~ | ~~汽车~~ | - | ---------------- | -------- | -------- | -------- | - | 39 | 96 | 98 | 176 | +| ~~演讲・公开课~~ | ~~星海~~ | ~~机械~~ | ~~汽车~~ | +| ---------------- | -------- | -------- | -------- | +| 39 | 96 | 98 | 176 | 数码 - | 手机平板 | 电脑装机 | 摄影摄像 | 影音智能 | - | -------- | -------- | -------- | -------- | - | 95 | 189 | 190 | 191 | +| 手机平板 | 电脑装机 | 摄影摄像 | 影音智能 | +| -------- | -------- | -------- | -------- | +| 95 | 189 | 190 | 191 | 生活 - | 搞笑 | 日常 | 美食圈 | 动物圈 | 手工 | 绘画 | 运动 | 汽车 | 其他 | ~~ASMR~~ | - | ---- | ---- | ------ | ------ | ---- | ---- | ---- | ---- | ---- | -------- | - | 138 | 21 | 76 | 75 | 161 | 162 | 163 | 176 | 174 | 175 | +| 搞笑 | 日常 | 美食圈 | 动物圈 | 手工 | 绘画 | 运动 | 汽车 | 其他 | ~~ASMR~~ | +| ---- | ---- | ------ | ------ | ---- | ---- | ---- | ---- | ---- | -------- | +| 138 | 21 | 76 | 75 | 161 | 162 | 163 | 176 | 174 | 175 | 鬼畜 - | 鬼畜调教 | 音 MAD | 人力 VOCALOID | 教程演示 | - | -------- | ------ | ------------- | -------- | - | 22 | 26 | 126 | 127 | +| 鬼畜调教 | 音 MAD | 人力 VOCALOID | 教程演示 | +| -------- | ------ | ------------- | -------- | +| 22 | 26 | 126 | 127 | 时尚 - | 美妆 | 服饰 | 健身 | T 台 | 风向标 | - | ---- | ---- | ---- | ---- | ------ | - | 157 | 158 | 164 | 159 | 192 | +| 美妆 | 服饰 | 健身 | T 台 | 风向标 | +| ---- | ---- | ---- | ---- | ------ | +| 157 | 158 | 164 | 159 | 192 | ~~广告~~ - | ~~广告~~ | - | -------- | - | 166 | +| ~~广告~~ | +| -------- | +| 166 | 资讯 - | 热点 | 环球 | 社会 | 综合 | - | ---- | ---- | ---- | ---- | - | 203 | 204 | 205 | 206 | +| 热点 | 环球 | 社会 | 综合 | +| ---- | ---- | ---- | ---- | +| 203 | 204 | 205 | 206 | 娱乐 - | 综艺 | 明星 | Korea 相关 | - | ---- | ---- | ---------- | - | 71 | 137 | 131 | +| 综艺 | 明星 | Korea 相关 | +| ---- | ---- | ---------- | +| 71 | 137 | 131 | 影视 - | 影视杂谈 | 影视剪辑 | 短片 | 预告・资讯 | - | -------- | -------- | ---- | ---------- | - | 182 | 183 | 85 | 184 | +| 影视杂谈 | 影视剪辑 | 短片 | 预告・资讯 | +| -------- | -------- | ---- | ---------- | +| 182 | 183 | 85 | 184 | 纪录片 - | 全部 | 人文・历史 | 科学・探索・自然 | 军事 | 社会・美食・旅行 | - | ---- | ---------- | ---------------- | ---- | ---------------- | - | 177 | 37 | 178 | 179 | 180 | +| 全部 | 人文・历史 | 科学・探索・自然 | 军事 | 社会・美食・旅行 | +| ---- | ---------- | ---------------- | ---- | ---------------- | +| 177 | 37 | 178 | 179 | 180 | 电影 - | 全部 | 华语电影 | 欧美电影 | 日本电影 | 其他国家 | - | ---- | -------- | -------- | -------- | -------- | - | 23 | 147 | 145 | 146 | 83 | +| 全部 | 华语电影 | 欧美电影 | 日本电影 | 其他国家 | +| ---- | -------- | -------- | -------- | -------- | +| 23 | 147 | 145 | 146 | 83 | 电视剧 - | 全部 | 国产剧 | 海外剧 | - | ---- | ------ | ------ | - | 11 | 185 | 187 |`, +| 全部 | 国产剧 | 海外剧 | +| ---- | ------ | ------ | +| 11 | 185 | 187 |`, }; async function handler(ctx) { diff --git a/lib/routes/bilibili/user-collection.ts b/lib/routes/bilibili/user-collection.ts index 3b66debad8bd1a..5dab48de714d4f 100644 --- a/lib/routes/bilibili/user-collection.ts +++ b/lib/routes/bilibili/user-collection.ts @@ -3,6 +3,7 @@ import got from '@/utils/got'; import cache from './cache'; import utils from './utils'; import { parseDate } from '@/utils/parse-date'; +import { queryToBoolean } from '@/utils/readable-social'; const notFoundData = { title: '此 bilibili 频道不存在', @@ -35,7 +36,7 @@ export const route: Route = { async function handler(ctx) { const uid = Number.parseInt(ctx.req.param('uid')); const sid = Number.parseInt(ctx.req.param('sid')); - const embed = !ctx.req.param('embed'); + const embed = queryToBoolean(ctx.req.param('embed') || 'true'); const sortReverse = Number.parseInt(ctx.req.param('sortReverse')) === 1; const page = ctx.req.param('page') ? Number.parseInt(ctx.req.param('page')) : 1; const limit = ctx.req.query('limit') ?? 25; diff --git a/lib/routes/bilibili/vsearch.ts b/lib/routes/bilibili/vsearch.ts index 955f45e2fda3a0..401f80eb47f46d 100644 --- a/lib/routes/bilibili/vsearch.ts +++ b/lib/routes/bilibili/vsearch.ts @@ -37,9 +37,9 @@ export const route: Route = { handler, description: `分区 id 的取值请参考下表: - | 全部分区 | 动画 | 番剧 | 国创 | 音乐 | 舞蹈 | 游戏 | 知识 | 科技 | 运动 | 汽车 | 生活 | 美食 | 动物圈 | 鬼畜 | 时尚 | 资讯 | 娱乐 | 影视 | 纪录片 | 电影 | 电视剧 | - | -------- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ------ | ---- | ---- | ---- | ---- | ---- | ------ | ---- | ------ | - | 0 | 1 | 13 | 167 | 3 | 129 | 4 | 36 | 188 | 234 | 223 | 160 | 211 | 217 | 119 | 155 | 202 | 5 | 181 | 177 | 23 | 11 |`, +| 全部分区 | 动画 | 番剧 | 国创 | 音乐 | 舞蹈 | 游戏 | 知识 | 科技 | 运动 | 汽车 | 生活 | 美食 | 动物圈 | 鬼畜 | 时尚 | 资讯 | 娱乐 | 影视 | 纪录片 | 电影 | 电视剧 | +| -------- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ------ | ---- | ---- | ---- | ---- | ---- | ------ | ---- | ------ | +| 0 | 1 | 13 | 167 | 3 | 129 | 4 | 36 | 188 | 234 | 223 | 160 | 211 | 217 | 119 | 155 | 202 | 5 | 181 | 177 | 23 | 11 |`, }; const getIframe = (data, embed: boolean = true) => { diff --git a/lib/routes/bjfu/it/index.ts b/lib/routes/bjfu/it/index.ts index 619540d9790409..4da69a4659d91f 100644 --- a/lib/routes/bjfu/it/index.ts +++ b/lib/routes/bjfu/it/index.ts @@ -27,8 +27,8 @@ export const route: Route = { maintainers: ['wzc-blog'], handler, description: `| 学院新闻 | 科研动态 | 本科生培养 | 研究生培养 | - | -------- | -------- | ---------- | ---------- | - | xyxw | kydt | pydt | pydt2 |`, +| -------- | -------- | ---------- | ---------- | +| xyxw | kydt | pydt | pydt2 |`, }; async function handler(ctx) { diff --git a/lib/routes/bjfu/jwc/index.ts b/lib/routes/bjfu/jwc/index.ts index 14f01020448ecd..6061aa69d386dd 100644 --- a/lib/routes/bjfu/jwc/index.ts +++ b/lib/routes/bjfu/jwc/index.ts @@ -26,8 +26,8 @@ export const route: Route = { maintainers: ['markmingjie'], handler, description: `| 教务快讯 | 考试信息 | 课程信息 | 教改动态 | 图片新闻 | - | -------- | -------- | -------- | -------- | -------- | - | jwkx | ksxx | kcxx | jgdt | tpxw |`, +| -------- | -------- | -------- | -------- | -------- | +| jwkx | ksxx | kcxx | jgdt | tpxw |`, }; async function handler(ctx) { diff --git a/lib/routes/bjfu/news/index.ts b/lib/routes/bjfu/news/index.ts index 588743899b1fcf..1e6edb77473ef2 100644 --- a/lib/routes/bjfu/news/index.ts +++ b/lib/routes/bjfu/news/index.ts @@ -27,8 +27,8 @@ export const route: Route = { maintainers: ['markmingjie'], handler, description: `| 绿色要闻 | 校园动态 | 教学科研 | 党建思政 | 一周排行 | - | -------- | -------- | -------- | -------- | -------- | - | lsyw | xydt | jxky | djsz | yzph |`, +| -------- | -------- | -------- | -------- | -------- | +| lsyw | xydt | jxky | djsz | yzph |`, }; async function handler(ctx) { diff --git a/lib/routes/bjsk/keti.ts b/lib/routes/bjsk/keti.ts index 8139ae535cd95b..fef951a68414df 100644 --- a/lib/routes/bjsk/keti.ts +++ b/lib/routes/bjsk/keti.ts @@ -28,8 +28,8 @@ export const route: Route = { handler, url: 'keti.bjsk.org.cn/indexAction!to_index.action', description: `| 通知公告 | 资料下载 | - | -------------------------------- | -------------------------------- | - | 402881027cbb8c6f017cbb8e17710002 | 2c908aee818e04f401818e08645c0002 |`, +| -------------------------------- | -------------------------------- | +| 402881027cbb8c6f017cbb8e17710002 | 2c908aee818e04f401818e08645c0002 |`, }; async function handler(ctx) { diff --git a/lib/routes/bjtu/gs.ts b/lib/routes/bjtu/gs.ts index 75c3474d5f8e60..e702c0b0111c97 100644 --- a/lib/routes/bjtu/gs.ts +++ b/lib/routes/bjtu/gs.ts @@ -169,24 +169,24 @@ export const route: Route = { maintainers: ['E1nzbern'], handler, description: ` - | 文章来源 | 参数 | - | ----------------- | ------------ | - | 通知公告_招生 | noti_zs | - | 通知公告 | noti | - | 新闻动态 | news | - | 招生宣传 | zsxc | - | 培养 | py | - | 招生 | zs | - | 学位 | xw | - | 研工部 | ygb | - | 通知公告 - 研工部 | ygbtzgg | - | 新闻动态 - 研工部 | ygbnews | - | 新闻封面 - 研工部 | ygbnewscover | - | 文章列表 | all | - | 博士招生 - 招生专题 | bszs_zszt | - | 硕士招生 - 招生专题 | sszs_zszt | - | 招生简章 - 招生专题 | zsjz_zszt | - | 政策法规 - 招生专题 | zcfg_zszt | +| 文章来源 | 参数 | +| ----------------- | ------------ | +| 通知公告_招生 | noti_zs | +| 通知公告 | noti | +| 新闻动态 | news | +| 招生宣传 | zsxc | +| 培养 | py | +| 招生 | zs | +| 学位 | xw | +| 研工部 | ygb | +| 通知公告 - 研工部 | ygbtzgg | +| 新闻动态 - 研工部 | ygbnews | +| 新闻封面 - 研工部 | ygbnewscover | +| 文章列表 | all | +| 博士招生 - 招生专题 | bszs_zszt | +| 硕士招生 - 招生专题 | sszs_zszt | +| 招生简章 - 招生专题 | zsjz_zszt | +| 政策法规 - 招生专题 | zcfg_zszt | ::: tip 文章来源的命名均来自研究生院网站标题。 diff --git a/lib/routes/bjwxdxh/index.ts b/lib/routes/bjwxdxh/index.ts index a39b263ad78771..c1c27c1989bf5f 100644 --- a/lib/routes/bjwxdxh/index.ts +++ b/lib/routes/bjwxdxh/index.ts @@ -22,8 +22,8 @@ export const route: Route = { maintainers: ['Misaka13514'], handler, description: `| 协会活动 | 公告通知 | 会议情况 | 简报 | 政策法规 | 学习园地 | 业余无线电服务中心 | 经验交流 | 新技术推介 | 活动通知 | 爱好者园地 | 结果查询 | 资料下载 | 会员之家 | 会员简介 | 会员风采 | 活动报道 | - | -------- | -------- | -------- | ---- | -------- | -------- | ------------------ | -------- | ---------- | -------- | ---------- | -------- | -------- | -------- | -------- | -------- | -------- | - | 86 | 99 | 102 | 103 | 106 | 107 | 108 | 111 | 112 | 114 | 115 | 116 | 118 | 119 | 120 | 121 | 122 |`, +| -------- | -------- | -------- | ---- | -------- | -------- | ------------------ | -------- | ---------- | -------- | ---------- | -------- | -------- | -------- | -------- | -------- | -------- | +| 86 | 99 | 102 | 103 | 106 | 107 | 108 | 111 | 112 | 114 | 115 | 116 | 118 | 119 | 120 | 121 | 122 |`, }; async function handler(ctx) { diff --git a/lib/routes/bjx/fd.ts b/lib/routes/bjx/fd.ts index fb172ddbe03e36..9d6c4d68138613 100644 --- a/lib/routes/bjx/fd.ts +++ b/lib/routes/bjx/fd.ts @@ -21,7 +21,7 @@ export const route: Route = { maintainers: ['hualiong'], description: `\`:type\` 类型可选如下 - | 要闻 | 政策 | 数据 | 市场 | 企业 | 招标 | 技术 | 报道 | +| 要闻 | 政策 | 数据 | 市场 | 企业 | 招标 | 技术 | 报道 | | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | | yw | zc | sj | sc | mq | zb | js | bd |`, handler: async (ctx) => { diff --git a/lib/routes/bjx/types.ts b/lib/routes/bjx/types.ts index 90d6a9a3b1ca1e..e7e36a6016ae16 100644 --- a/lib/routes/bjx/types.ts +++ b/lib/routes/bjx/types.ts @@ -21,9 +21,9 @@ export const route: Route = { handler, description: `\`:type\` 类型可选如下 - | 要闻 | 政策 | 市场行情 | 企业动态 | 独家观点 | 项目工程 | 招标采购 | 财经 | 国际行情 | 价格趋势 | 技术跟踪 | - | ---- | ---- | -------- | -------- | -------- | -------- | -------- | ---- | -------- | -------- | -------- | - | yw | zc | sc | mq | dj | xm | zb | cj | gj | sj | js |`, +| 要闻 | 政策 | 市场行情 | 企业动态 | 独家观点 | 项目工程 | 招标采购 | 财经 | 国际行情 | 价格趋势 | 技术跟踪 | +| ---- | ---- | -------- | -------- | -------- | -------- | -------- | ---- | -------- | -------- | -------- | +| yw | zc | sc | mq | dj | xm | zb | cj | gj | sj | js |`, }; async function handler(ctx) { diff --git a/lib/routes/blizzard/news.ts b/lib/routes/blizzard/news.ts index 66c66a80f16eb4..4d083bc4018991 100644 --- a/lib/routes/blizzard/news.ts +++ b/lib/routes/blizzard/news.ts @@ -21,43 +21,43 @@ export const route: Route = { handler, description: `Categories - | Category | Slug | - | ---------------------- | ------------------- | - | All News | | - | Diablo II: Resurrected | diablo2 | - | Diablo III | diablo3 | - | Diablo IV | diablo4 | - | Diablo Immortal | diablo-immortal | - | Hearthstone | hearthstone | - | Heroes of the Storm | heroes-of-the-storm | - | Overwatch 2 | overwatch | - | StarCraft: Remastered | starcraft | - | StarCraft II | starcraft2 | - | World of Warcraft | world-of-warcraft | - | Warcraft 3: Reforged | warcraft3 | - | Warcraft Rumble | warcraft-rumble | - | Battle.net | battlenet | - | BlizzCon | blizzcon | - | Inside Blizzard | blizzard | +| Category | Slug | +| ---------------------- | ------------------- | +| All News | | +| Diablo II: Resurrected | diablo2 | +| Diablo III | diablo3 | +| Diablo IV | diablo4 | +| Diablo Immortal | diablo-immortal | +| Hearthstone | hearthstone | +| Heroes of the Storm | heroes-of-the-storm | +| Overwatch 2 | overwatch | +| StarCraft: Remastered | starcraft | +| StarCraft II | starcraft2 | +| World of Warcraft | world-of-warcraft | +| Warcraft 3: Reforged | warcraft3 | +| Warcraft Rumble | warcraft-rumble | +| Battle.net | battlenet | +| BlizzCon | blizzcon | +| Inside Blizzard | blizzard | Language codes - | Language | Code | - | ------------------ | ----- | - | Deutsch | de-de | - | English (US) | en-us | - | English (EU) | en-gb | - | Español (EU) | es-es | - | Español (Latino) | es-mx | - | Français | fr-fr | - | Italiano | it-it | - | Português (Brasil) | pt-br | - | Polski | pl-pl | - | Русский | ru-ru | - | 한국어 | ko-kr | - | ภาษาไทย | th-th | - | 日本語 | ja-jp | - | 繁體中文 | zh-tw |`, +| Language | Code | +| ------------------ | ----- | +| Deutsch | de-de | +| English (US) | en-us | +| English (EU) | en-gb | +| Español (EU) | es-es | +| Español (Latino) | es-mx | +| Français | fr-fr | +| Italiano | it-it | +| Português (Brasil) | pt-br | +| Polski | pl-pl | +| Русский | ru-ru | +| 한국어 | ko-kr | +| ภาษาไทย | th-th | +| 日本語 | ja-jp | +| 繁體中文 | zh-tw |`, }; const GAME_MAP = { diff --git a/lib/routes/bloomberg/index.ts b/lib/routes/bloomberg/index.ts index 778a865fd92467..46f6a7d8d7abb4 100644 --- a/lib/routes/bloomberg/index.ts +++ b/lib/routes/bloomberg/index.ts @@ -37,20 +37,20 @@ export const route: Route = { name: 'Bloomberg Site', maintainers: ['bigfei'], description: ` - | Site ID | Title | - | ------------ | ------------ | - | / | News | - | bpol | Politics | - | bbiz | Business | - | markets | Markets | - | technology | Technology | - | green | Green | - | wealth | Wealth | - | pursuits | Pursuits | - | bview | Opinion | - | equality | Equality | - | businessweek | Businessweek | - | citylab | CityLab | +| Site ID | Title | +| ------------ | ------------ | +| / | News | +| bpol | Politics | +| bbiz | Business | +| markets | Markets | +| technology | Technology | +| green | Green | +| wealth | Wealth | +| pursuits | Pursuits | +| bview | Opinion | +| equality | Equality | +| businessweek | Businessweek | +| citylab | CityLab | `, handler, }; diff --git a/lib/routes/bnu/bs.ts b/lib/routes/bnu/bs.ts index 1a21e02541c9e5..fa2bcdc9e8587d 100644 --- a/lib/routes/bnu/bs.ts +++ b/lib/routes/bnu/bs.ts @@ -27,8 +27,8 @@ export const route: Route = { maintainers: ['nczitzk'], handler, description: `| 学院新闻 | 通知公告 | 学术成果 | 学术讲座 | 教师观点 | 人才招聘 | - | -------- | -------- | -------- | -------- | -------- | -------- | - | xw | zytzyyg | xzcg | xzjz | xz | bshzs |`, +| -------- | -------- | -------- | -------- | -------- | -------- | +| xw | zytzyyg | xzcg | xzjz | xz | bshzs |`, }; async function handler(ctx) { diff --git a/lib/routes/bnu/mba.ts b/lib/routes/bnu/mba.ts index 8e1106cabc9a23..e42435d0e300e1 100644 --- a/lib/routes/bnu/mba.ts +++ b/lib/routes/bnu/mba.ts @@ -88,35 +88,35 @@ export const route: Route = { 若订阅 [新闻聚焦](https://mba.bnu.edu.cn/xwdt/index.html),网址为 \`https://mba.bnu.edu.cn/xwdt/index.html\`。截取 \`https://mba.bnu.edu.cn/\` 到末尾 \`/index.html\` 的部分 \`xwdt\` 作为参数填入,此时路由为 [\`/bnu/mba/xwdt\`](https://rsshub.app/bnu/mba/xwdt)。 ::: - #### [主页](https://mba.bnu.edu.cn) +#### [主页](https://mba.bnu.edu.cn) - | [新闻聚焦](https://mba.bnu.edu.cn/xwdt/index.html) | [通知公告](https://mba.bnu.edu.cn/tzgg/index.html) | [MBA 系列讲座](https://mba.bnu.edu.cn/mbaxljz/index.html) | - | -------------------------------------------------- | -------------------------------------------------- | --------------------------------------------------------- | - | [xwdt](https://rsshub.app/bnu/mba/xwdt) | [tzgg](https://rsshub.app/bnu/mba/tzgg) | [mbaxljz](https://rsshub.app/bnu/mba/mbaxljz) | +| [新闻聚焦](https://mba.bnu.edu.cn/xwdt/index.html) | [通知公告](https://mba.bnu.edu.cn/tzgg/index.html) | [MBA 系列讲座](https://mba.bnu.edu.cn/mbaxljz/index.html) | +| -------------------------------------------------- | -------------------------------------------------- | --------------------------------------------------------- | +| [xwdt](https://rsshub.app/bnu/mba/xwdt) | [tzgg](https://rsshub.app/bnu/mba/tzgg) | [mbaxljz](https://rsshub.app/bnu/mba/mbaxljz) | - #### [招生动态](https://mba.bnu.edu.cn/zsdt/zsjz/index.html) +#### [招生动态](https://mba.bnu.edu.cn/zsdt/zsjz/index.html) - | [下载专区](https://mba.bnu.edu.cn/zsdt/cjwt/index.html) | - | ------------------------------------------------------- | - | [zsdt/cjwt](https://rsshub.app/bnu/mba/zsdt/cjwt) | +| [下载专区](https://mba.bnu.edu.cn/zsdt/cjwt/index.html) | +| ------------------------------------------------------- | +| [zsdt/cjwt](https://rsshub.app/bnu/mba/zsdt/cjwt) | - #### [国际视野](https://mba.bnu.edu.cn/gjhz/hwjd/index.html) +#### [国际视野](https://mba.bnu.edu.cn/gjhz/hwjd/index.html) - | [海外基地](https://mba.bnu.edu.cn/gjhz/hwjd/index.html) | [学位合作](https://mba.bnu.edu.cn/gjhz/xwhz/index.html) | [长期交换](https://mba.bnu.edu.cn/gjhz/zqjh/index.html) | [短期项目](https://mba.bnu.edu.cn/gjhz/dqxm/index.html) | - | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | - | [gjhz/hwjd](https://rsshub.app/bnu/mba/gjhz/hwjd) | [gjhz/xwhz](https://rsshub.app/bnu/mba/gjhz/xwhz) | [gjhz/zqjh](https://rsshub.app/bnu/mba/gjhz/zqjh) | [gjhz/dqxm](https://rsshub.app/bnu/mba/gjhz/dqxm) | +| [海外基地](https://mba.bnu.edu.cn/gjhz/hwjd/index.html) | [学位合作](https://mba.bnu.edu.cn/gjhz/xwhz/index.html) | [长期交换](https://mba.bnu.edu.cn/gjhz/zqjh/index.html) | [短期项目](https://mba.bnu.edu.cn/gjhz/dqxm/index.html) | +| ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | +| [gjhz/hwjd](https://rsshub.app/bnu/mba/gjhz/hwjd) | [gjhz/xwhz](https://rsshub.app/bnu/mba/gjhz/xwhz) | [gjhz/zqjh](https://rsshub.app/bnu/mba/gjhz/zqjh) | [gjhz/dqxm](https://rsshub.app/bnu/mba/gjhz/dqxm) | - #### [校园生活](https://mba.bnu.edu.cn/xysh/xszz/index.html) +#### [校园生活](https://mba.bnu.edu.cn/xysh/xszz/index.html) - | [学生组织](https://mba.bnu.edu.cn/xysh/xszz/index.html) | - | ------------------------------------------------------- | - | [xysh/xszz](https://rsshub.app/bnu/mba/xysh/xszz) | +| [学生组织](https://mba.bnu.edu.cn/xysh/xszz/index.html) | +| ------------------------------------------------------- | +| [xysh/xszz](https://rsshub.app/bnu/mba/xysh/xszz) | - #### [职业发展](https://mba.bnu.edu.cn/zyfz/xwds/index.html) +#### [职业发展](https://mba.bnu.edu.cn/zyfz/xwds/index.html) - | [校外导师](https://mba.bnu.edu.cn/zyfz/xwds/index.html) | [企业实践](https://mba.bnu.edu.cn/zyfz/zycp/index.html) | [就业创业](https://mba.bnu.edu.cn/zyfz/jycy/index.html) | - | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | - | [zyfz/xwds](https://rsshub.app/bnu/mba/zyfz/xwds) | [zyfz/zycp](https://rsshub.app/bnu/mba/zyfz/zycp) | [zyfz/jycy](https://rsshub.app/bnu/mba/zyfz/jycy) | +| [校外导师](https://mba.bnu.edu.cn/zyfz/xwds/index.html) | [企业实践](https://mba.bnu.edu.cn/zyfz/zycp/index.html) | [就业创业](https://mba.bnu.edu.cn/zyfz/jycy/index.html) | +| ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | +| [zyfz/xwds](https://rsshub.app/bnu/mba/zyfz/xwds) | [zyfz/zycp](https://rsshub.app/bnu/mba/zyfz/zycp) | [zyfz/jycy](https://rsshub.app/bnu/mba/zyfz/jycy) | `, categories: ['university'], diff --git a/lib/routes/boc/whpj.ts b/lib/routes/boc/whpj.ts index 8e79b1e542bc7b..e167d847311d14 100644 --- a/lib/routes/boc/whpj.ts +++ b/lib/routes/boc/whpj.ts @@ -26,8 +26,8 @@ export const route: Route = { handler, url: 'boc.cn/sourcedb/whpj', description: `| 短格式 | 中行折算价 | 现汇买卖 | 现钞买卖 | 现汇买入 | 现汇卖出 | 现钞买入 | 现钞卖出 | - | ------ | ---------- | -------- | -------- | -------- | -------- | -------- | -------- | - | short | zs | xh | xc | xhmr | xhmc | xcmr | xcmc |`, +| ------ | ---------- | -------- | -------- | -------- | -------- | -------- | -------- | +| short | zs | xh | xc | xhmr | xhmc | xcmr | xcmc |`, }; async function handler(ctx) { diff --git a/lib/routes/bookfere/category.ts b/lib/routes/bookfere/category.ts index b8e895bcf93c44..db31ffbe7b0852 100644 --- a/lib/routes/bookfere/category.ts +++ b/lib/routes/bookfere/category.ts @@ -32,8 +32,8 @@ export const route: Route = { maintainers: ['OdinZhang'], handler, description: `| 每周一书 | 使用技巧 | 图书推荐 | 新闻速递 | 精选短文 | - | -------- | -------- | -------- | -------- | -------- | - | weekly | skills | books | news | essay |`, +| -------- | -------- | -------- | -------- | -------- | +| weekly | skills | books | news | essay |`, }; async function handler(ctx) { diff --git a/lib/routes/bossdesign/index.ts b/lib/routes/bossdesign/index.ts index 6b82474986c247..84c3fc16f125e4 100644 --- a/lib/routes/bossdesign/index.ts +++ b/lib/routes/bossdesign/index.ts @@ -20,8 +20,8 @@ export const route: Route = { maintainers: ['TonyRL'], handler, description: `| Boss 笔记 | 电脑日志 | 素材资源 | 设计师神器 | 设计教程 | 设计资讯 | - | --------- | --------------- | ---------------- | --------------- | --------------- | ------------------- | - | note | computer-skills | design-resources | design-software | design-tutorial | design\_information |`, +| --------- | --------------- | ---------------- | --------------- | --------------- | ------------------- | +| note | computer-skills | design-resources | design-software | design-tutorial | design\_information |`, }; async function handler(ctx) { diff --git a/lib/routes/bse/index.ts b/lib/routes/bse/index.ts index ea7befb77b3806..58c4fffcbcbf4b 100644 --- a/lib/routes/bse/index.ts +++ b/lib/routes/bse/index.ts @@ -143,24 +143,24 @@ export const route: Route = { handler, url: 'bse.cn/', description: `| 本所要闻 | 人才招聘 | 采购信息 | 业务通知 | - | --------------- | -------- | -------- | ---------- | - | important\_news | recruit | purchase | news\_list | +| --------------- | -------- | -------- | ---------- | +| important\_news | recruit | purchase | news\_list | - | 法律法规 | 公开征求意见 | 部门规章 | 发行融资 | - | --------- | --------------- | ---------------- | ---------- | - | law\_list | public\_opinion | regulation\_list | fxrz\_list | +| 法律法规 | 公开征求意见 | 部门规章 | 发行融资 | +| --------- | --------------- | ---------------- | ---------- | +| law\_list | public\_opinion | regulation\_list | fxrz\_list | - | 持续监管 | 交易管理 | 市场管理 | 上市委会议公告 | - | ---------- | ---------- | ---------- | --------------- | - | cxjg\_list | jygl\_list | scgl\_list | meeting\_notice | +| 持续监管 | 交易管理 | 市场管理 | 上市委会议公告 | +| ---------- | ---------- | ---------- | --------------- | +| cxjg\_list | jygl\_list | scgl\_list | meeting\_notice | - | 上市委会议结果公告 | 上市委会议变更公告 | 并购重组委会议公告 | - | ------------------ | ------------------ | ------------------ | - | meeting\_result | meeting\_change | bgcz\_notice | +| 上市委会议结果公告 | 上市委会议变更公告 | 并购重组委会议公告 | +| ------------------ | ------------------ | ------------------ | +| meeting\_result | meeting\_change | bgcz\_notice | - | 并购重组委会议结果公告 | 并购重组委会议变更公告 | 终止审核 | 注册结果 | - | ---------------------- | ---------------------- | ------------------ | ------------- | - | bgcz\_result | bgcz\_change | termination\_audit | audit\_result |`, +| 并购重组委会议结果公告 | 并购重组委会议变更公告 | 终止审核 | 注册结果 | +| ---------------------- | ---------------------- | ------------------ | ------------- | +| bgcz\_result | bgcz\_change | termination\_audit | audit\_result |`, }; async function handler(ctx) { diff --git a/lib/routes/btzj/index.ts b/lib/routes/btzj/index.ts index f7a6f01fdd09bc..b665838cd533fd 100644 --- a/lib/routes/btzj/index.ts +++ b/lib/routes/btzj/index.ts @@ -43,21 +43,21 @@ export const route: Route = { 基础分类如下: - | 交流 | 电影 | 剧集 | 高清电影 | - | ------------------- | ------------------- | ------------------- | -------------------- | - | forum-index-fid-975 | forum-index-fid-951 | forum-index-fid-950 | forum-index-fid-1183 | +| 交流 | 电影 | 剧集 | 高清电影 | +| ------------------- | ------------------- | ------------------- | -------------------- | +| forum-index-fid-975 | forum-index-fid-951 | forum-index-fid-950 | forum-index-fid-1183 | - | 音乐 | 动漫 | 游戏 | 综艺 | - | ------------------- | ------------------- | ------------------- | -------------------- | - | forum-index-fid-953 | forum-index-fid-981 | forum-index-fid-955 | forum-index-fid-1106 | +| 音乐 | 动漫 | 游戏 | 综艺 | +| ------------------- | ------------------- | ------------------- | -------------------- | +| forum-index-fid-953 | forum-index-fid-981 | forum-index-fid-955 | forum-index-fid-1106 | - | 图书 | 美图 | 站务 | 科技 | - | -------------------- | ------------------- | ----------------- | ------------------- | - | forum-index-fid-1151 | forum-index-fid-957 | forum-index-fid-2 | forum-index-fid-952 | +| 图书 | 美图 | 站务 | 科技 | +| -------------------- | ------------------- | ----------------- | ------------------- | +| forum-index-fid-1151 | forum-index-fid-957 | forum-index-fid-2 | forum-index-fid-952 | - | 求助 | 音轨字幕 | - | -------------------- | -------------------- | - | forum-index-fid-1187 | forum-index-fid-1191 | +| 求助 | 音轨字幕 | +| -------------------- | -------------------- | +| forum-index-fid-1187 | forum-index-fid-1191 | ::: tip BT 之家的域名会变更,本路由以 \`https://www.btbtt20.com\` 为默认域名,若该域名无法访问,可以通过在路由后方加上 \`?domain=<域名>\` 指定路由访问的域名。如指定域名为 \`https://www.btbtt15.com\`,则在 \`/btzj\` 后加上 \`?domain=btbtt15.com\` 即可,此时路由为 [\`/btzj?domain=btbtt15.com\`](https://rsshub.app/btzj?domain=btbtt15.com) diff --git a/lib/routes/buaa/news/index.ts b/lib/routes/buaa/news/index.ts index e6f7a4ecf439ca..3389d086aa14fc 100644 --- a/lib/routes/buaa/news/index.ts +++ b/lib/routes/buaa/news/index.ts @@ -23,8 +23,8 @@ export const route: Route = { maintainers: ['AlanDecode'], handler, description: `| 综合新闻 | 信息公告 | 学术文化 | 校园风采 | 科教在线 | 媒体北航 | 专题新闻 | 北航人物 | - | -------- | -------- | ----------- | -------- | -------- | -------- | -------- | -------- | - | zhxw | xxgg_new | xsjwhhd_new | xyfc_new | kjzx_new | mtbh_new | ztxw | bhrw |`, +| -------- | -------- | ----------- | -------- | -------- | -------- | -------- | -------- | +| zhxw | xxgg_new | xsjwhhd_new | xyfc_new | kjzx_new | mtbh_new | ztxw | bhrw |`, }; async function handler(ctx: Context): Promise { diff --git a/lib/routes/buct/cist.ts b/lib/routes/buct/cist.ts new file mode 100644 index 00000000000000..c482373d424568 --- /dev/null +++ b/lib/routes/buct/cist.ts @@ -0,0 +1,58 @@ +import { Route } from '@/types'; +import cache from '@/utils/cache'; +import got from '@/utils/got'; +import { load } from 'cheerio'; + +export const route: Route = { + path: '/cist', + categories: ['university'], + example: '/buct/cist', + parameters: {}, + features: { + requireConfig: false, + requirePuppeteer: false, + antiCrawler: false, + supportBT: false, + supportPodcast: false, + supportScihub: false, + }, + radar: [{ source: ['cist.buct.edu.cn/xygg/list.htm', 'cist.buct.edu.cn/xygg/main.htm'], target: '/cist' }], + name: '信息学院', + maintainers: ['Epic-Creeper'], + handler, + url: 'buct.edu.cn/', +}; + +async function handler() { + const rootUrl = 'https://cist.buct.edu.cn'; + const currentUrl = `${rootUrl}/xygg/list.htm`; + + const response = await got.get(currentUrl); + const $ = load(response.data); + const list = $('ul.wp_article_list > li.list_item') + .toArray() + .map((item) => ({ + pubDate: $(item).find('.Article_PublishDate').text(), + title: $(item).find('a').attr('title'), + link: `${rootUrl}${$(item).find('a').attr('href')}`, + })); + + const items = await Promise.all( + list.map((item) => + cache.tryGet(item.link, async () => { + const detailResponse = await got.get(item.link); + const content = load(detailResponse.data); + + item.description = content('.wp_articlecontent').html(); + + return item; + }) + ) + ); + + return { + title: $('title').text(), + link: currentUrl, + item: items, + }; +} diff --git a/lib/routes/buct/gr.ts b/lib/routes/buct/gr.ts new file mode 100644 index 00000000000000..f9f0f36fdd1166 --- /dev/null +++ b/lib/routes/buct/gr.ts @@ -0,0 +1,93 @@ +import { Route } from '@/types'; +import cache from '@/utils/cache'; +import got from '@/utils/got'; +import { load } from 'cheerio'; +import type { Context } from 'hono'; + +export const route: Route = { + path: '/gr/:type', + categories: ['university'], + example: '/buct/gr/jzml', + parameters: { + type: { + description: '信息类型,可选值:tzgg(通知公告),jzml(简章目录),xgzc(相关政策)', + options: [ + { value: 'tzgg', label: '通知公告' }, + { value: 'jzml', label: '简章目录' }, + { value: 'xgzc', label: '相关政策' }, + ], + }, + }, + features: { + requireConfig: false, + requirePuppeteer: false, + antiCrawler: false, + supportBT: false, + supportPodcast: false, + supportScihub: false, + }, + radar: [ + { source: ['graduate.buct.edu.cn/1392/list.htm'], target: '/gr/tzgg' }, + { source: ['graduate.buct.edu.cn/jzml/list.htm'], target: '/gr/jzml' }, + { source: ['graduate.buct.edu.cn/1393/list.htm'], target: '/gr/xgzc' }, + ], + name: '研究生院', + maintainers: ['Epic-Creeper'], + handler, + url: 'buct.edu.cn/', +}; + +async function handler(ctx: Context) { + const type = ctx.req.param('type'); + const rootUrl = 'https://graduate.buct.edu.cn'; + let currentUrl; + + switch (type) { + case 'tzgg': + currentUrl = `${rootUrl}/1392/list.htm`; + + break; + + case 'jzml': + currentUrl = `${rootUrl}/jzml/list.htm`; + + break; + + case 'xgzc': + currentUrl = `${rootUrl}/1393/list.htm`; + + break; + + default: + throw new Error('Invalid type parameter'); + } + + const response = await got.get(currentUrl); + + const $ = load(response.data); + const list = $('ul.wp_article_list > li.list_item') + .toArray() + .map((item) => ({ + pubDate: $(item).find('.Article_PublishDate').text(), + title: $(item).find('a').attr('title'), + link: `${rootUrl}${$(item).find('a').attr('href')}`, + })); + + const items = await Promise.all( + list.map((item) => + cache.tryGet(item.link, async () => { + const detailResponse = await got.get(item.link); + const content = load(detailResponse.data); + item.description = content('.wp_articlecontent').html(); + + return item; + }) + ) + ); + + return { + title: $('title').text(), + link: currentUrl, + item: items, + }; +} diff --git a/lib/routes/buct/jwc.ts b/lib/routes/buct/jwc.ts new file mode 100644 index 00000000000000..3c084861a90f03 --- /dev/null +++ b/lib/routes/buct/jwc.ts @@ -0,0 +1,64 @@ +import { Route } from '@/types'; +import cache from '@/utils/cache'; +import got from '@/utils/got'; +import { load } from 'cheerio'; + +export const route: Route = { + path: '/jwc', + categories: ['university'], + example: '/buct/jwc', + parameters: {}, + features: { + requireConfig: false, + requirePuppeteer: false, + antiCrawler: false, + supportBT: false, + supportPodcast: false, + supportScihub: false, + }, + radar: [{ source: ['jiaowuchu.buct.edu.cn/610/list.htm', 'jiaowuchu.buct.edu.cn/611/main.htm'], target: '/jwc' }], + name: '教务处', + maintainers: ['Epic-Creeper'], + handler, + url: 'buct.edu.cn/', +}; + +async function handler() { + const rootUrl = 'https://jiaowuchu.buct.edu.cn'; + const currentUrl = `${rootUrl}/610/list.htm`; + + const response = await got.get(currentUrl); + + const $ = load(response.data); + const list = $('div.list02 ul > li') + .not('#wp_paging_w66 li') + .toArray() + .map((item) => ({ + pubDate: $(item).find('span').text(), + title: $(item).find('a').attr('title'), + link: `${rootUrl}${$(item).find('a').attr('href')}`, + })); + + const items = await Promise.all( + list.map((item) => + cache.tryGet(item.link, async () => { + const detailResponse = await got.get(item.link); + const content = load(detailResponse.data); + const iframeSrc = content('.wp_pdf_player').attr('pdfsrc'); + if (iframeSrc) { + const pdfUrl = `${rootUrl}${iframeSrc}`; + item.description = `此页面为PDF文档:点击查看pdf`; + return item; + } + item.description = content('.rt_zhengwen').html(); + return item; + }) + ) + ); + + return { + title: $('title').text(), + link: currentUrl, + item: items, + }; +} diff --git a/lib/routes/buct/namespace.ts b/lib/routes/buct/namespace.ts new file mode 100644 index 00000000000000..40e9971dc45338 --- /dev/null +++ b/lib/routes/buct/namespace.ts @@ -0,0 +1,7 @@ +import type { Namespace } from '@/types'; + +export const namespace: Namespace = { + name: '北京化工大学', + url: 'buct.edu.cn', + lang: 'zh-CN', +}; diff --git a/lib/routes/byau/xinwen/index.ts b/lib/routes/byau/xinwen/index.ts index 4fec6eee071b26..b6dc00800f9c8b 100644 --- a/lib/routes/byau/xinwen/index.ts +++ b/lib/routes/byau/xinwen/index.ts @@ -21,8 +21,8 @@ export const route: Route = { handler, url: 'xinwen.byau.edu.cn', description: `| 学校要闻 | 校园动态 | - | ---- | ----------- | - | 3674 | 3676 |`, +| ---- | ----------- | +| 3674 | 3676 |`, }; async function handler(ctx) { diff --git a/lib/routes/cahkms/index.ts b/lib/routes/cahkms/index.ts index 1e6f24b6a3057a..7f9d8f3fa3078d 100644 --- a/lib/routes/cahkms/index.ts +++ b/lib/routes/cahkms/index.ts @@ -46,12 +46,12 @@ export const route: Route = { handler, url: 'cahkms.org/', description: `| 关于我们 | 港澳新闻 | 重要新闻 | 顾问点评、会员观点 | 专题汇总 | - | -------- | -------- | -------- | ------------------ | -------- | - | 01 | 02 | 03 | 04 | 05 | +| -------- | -------- | -------- | ------------------ | -------- | +| 01 | 02 | 03 | 04 | 05 | - | 港澳时评 | 图片新闻 | 视频中心 | 港澳研究 | 最新书讯 | 研究资讯 | - | -------- | -------- | -------- | -------- | -------- | -------- | - | 06 | 07 | 08 | 09 | 10 | 11 |`, +| 港澳时评 | 图片新闻 | 视频中心 | 港澳研究 | 最新书讯 | 研究资讯 | +| -------- | -------- | -------- | -------- | -------- | -------- | +| 06 | 07 | 08 | 09 | 10 | 11 |`, }; async function handler(ctx) { diff --git a/lib/routes/caixin/category.ts b/lib/routes/caixin/category.ts index 7dc456c37c1145..134c9a162b3b49 100644 --- a/lib/routes/caixin/category.ts +++ b/lib/routes/caixin/category.ts @@ -26,21 +26,21 @@ export const route: Route = { handler, description: `Column 列表: - | 经济 | 金融 | 政经 | 环科 | 世界 | 观点网 | 文化 | 周刊 | - | ------- | ------- | ----- | ------- | ------------- | ------- | ------- | ------ | - | economy | finance | china | science | international | opinion | culture | weekly | +| 经济 | 金融 | 政经 | 环科 | 世界 | 观点网 | 文化 | 周刊 | +| ------- | ------- | ----- | ------- | ------------- | ------- | ------- | ------ | +| economy | finance | china | science | international | opinion | culture | weekly | 以金融板块为例的 category 列表:(其余 column 以类似方式寻找) - | 监管 | 银行 | 证券基金 | 信托保险 | 投资 | 创新 | 市场 | - | ---------- | ---- | -------- | ---------------- | ---------- | ---------- | ------ | - | regulation | bank | stock | insurance\_trust | investment | innovation | market | +| 监管 | 银行 | 证券基金 | 信托保险 | 投资 | 创新 | 市场 | +| ---------- | ---- | -------- | ---------------- | ---------- | ---------- | ------ | +| regulation | bank | stock | insurance\_trust | investment | innovation | market | Category 列表: - | 封面报道 | 开卷 | 社论 | 时事 | 编辑寄语 | 经济 | 金融 | 商业 | 环境与科技 | 民生 | 副刊 | - | ---------- | ----- | --------- | ---------------- | ------------ | ------- | ------- | -------- | ----------------------- | ------- | ------ | - | coverstory | first | editorial | current\_affairs | editor\_desk | economy | finance | business | environment\_technology | cwcivil | column |`, +| 封面报道 | 开卷 | 社论 | 时事 | 编辑寄语 | 经济 | 金融 | 商业 | 环境与科技 | 民生 | 副刊 | +| ---------- | ----- | --------- | ---------------- | ------------ | ------- | ------- | -------- | ----------------------- | ------- | ------ | +| coverstory | first | editorial | current\_affairs | editor\_desk | economy | finance | business | environment\_technology | cwcivil | column |`, }; async function handler(ctx) { diff --git a/lib/routes/camchina/index.ts b/lib/routes/camchina/index.ts index ebe8624f9e36bf..0c7976c9b39b42 100644 --- a/lib/routes/camchina/index.ts +++ b/lib/routes/camchina/index.ts @@ -25,8 +25,8 @@ export const route: Route = { maintainers: ['nczitzk'], handler, description: `| 新闻 | 通告栏 | - | ---- | ------ | - | 1 | 2 |`, +| ---- | ------ | +| 1 | 2 |`, }; async function handler(ctx) { diff --git a/lib/routes/cankaoxiaoxi/index.ts b/lib/routes/cankaoxiaoxi/index.ts index 4c94ee68346dbd..9ed772ea6e4848 100644 --- a/lib/routes/cankaoxiaoxi/index.ts +++ b/lib/routes/cankaoxiaoxi/index.ts @@ -26,26 +26,26 @@ export const route: Route = { maintainers: ['yuxinliu-alex', 'nczitzk'], handler, description: `| 栏目 | id | - | -------------- | -------- | - | 第一关注 | diyi | - | 中国 | zhongguo | - | 国际 | gj | - | 观点 | guandian | - | 锐参考 | ruick | - | 体育健康 | tiyujk | - | 科技应用 | kejiyy | - | 文化旅游 | wenhualy | - | 参考漫谈 | cankaomt | - | 研究动态 | yjdt | - | 海外智库 | hwzk | - | 业界信息・观点 | yjxx | - | 海外看中国城市 | hwkzgcs | - | 译名趣谈 | ymymqt | - | 译名发布 | ymymfb | - | 双语汇 | ymsyh | - | 参考视频 | video | - | 军事 | junshi | - | 参考人物 | cankaorw |`, +| -------------- | -------- | +| 第一关注 | diyi | +| 中国 | zhongguo | +| 国际 | gj | +| 观点 | guandian | +| 锐参考 | ruick | +| 体育健康 | tiyujk | +| 科技应用 | kejiyy | +| 文化旅游 | wenhualy | +| 参考漫谈 | cankaomt | +| 研究动态 | yjdt | +| 海外智库 | hwzk | +| 业界信息・观点 | yjxx | +| 海外看中国城市 | hwkzgcs | +| 译名趣谈 | ymymqt | +| 译名发布 | ymymfb | +| 双语汇 | ymsyh | +| 参考视频 | video | +| 军事 | junshi | +| 参考人物 | cankaorw |`, }; async function handler(ctx) { diff --git a/lib/routes/cas/cg/index.ts b/lib/routes/cas/cg/index.ts index be466bad1e8622..df765efc1d17cd 100644 --- a/lib/routes/cas/cg/index.ts +++ b/lib/routes/cas/cg/index.ts @@ -27,8 +27,8 @@ export const route: Route = { maintainers: ['nczitzk'], handler, description: `| 工作动态 | 科技成果转移转化亮点工作 | - | -------- | ------------------------ | - | zh | cgzhld |`, +| -------- | ------------------------ | +| zh | cgzhld |`, }; async function handler(ctx) { diff --git a/lib/routes/casssp/news.ts b/lib/routes/casssp/news.ts index 8bf685857d7073..8c9c5f20bc335d 100644 --- a/lib/routes/casssp/news.ts +++ b/lib/routes/casssp/news.ts @@ -21,8 +21,8 @@ export const route: Route = { maintainers: ['nczitzk'], handler, description: `| 通知公告 | 新闻动态 | 信息公开 | 时政要闻 | - | -------- | -------- | -------- | -------- | - | 3 | 2 | 92 | 93 |`, +| -------- | -------- | -------- | -------- | +| 3 | 2 | 92 | 93 |`, }; async function handler(ctx) { diff --git a/lib/routes/cast/index.ts b/lib/routes/cast/index.ts index c4618cf24b6777..dfad408465c596 100644 --- a/lib/routes/cast/index.ts +++ b/lib/routes/cast/index.ts @@ -64,15 +64,15 @@ export const route: Route = { 在路由末尾处加上 \`?limit=限制获取数目\` 来限制获取条目数量,默认值为\`10\` ::: - | 分类 | 编码 | - | -------- | ---- | - | 全景科协 | qjkx | - | 智库 | zk | - | 学术 | xs | - | 科普 | kp | - | 党建 | dj | - | 数据 | sj | - | 新闻 | xw |`, +| 分类 | 编码 | +| -------- | ---- | +| 全景科协 | qjkx | +| 智库 | zk | +| 学术 | xs | +| 科普 | kp | +| 党建 | dj | +| 数据 | sj | +| 新闻 | xw |`, }; async function handler(ctx) { diff --git a/lib/routes/catti/news.ts b/lib/routes/catti/news.ts index a62cfcc0547582..8d926c514115cc 100644 --- a/lib/routes/catti/news.ts +++ b/lib/routes/catti/news.ts @@ -24,8 +24,8 @@ const NEWS_TYPES: Record = { }, }; -const handler: Route['handler'] = async (context) => { - const category = context.req.param('category'); +const handler: Route['handler'] = async (ctx) => { + const category = ctx.req.param('category'); const BASE_URL = `https://www.catticenter.com/${category}`; diff --git a/lib/routes/caus/index.ts b/lib/routes/caus/index.ts index ad7e7dd394bb98..a7a8bf1bab2a65 100644 --- a/lib/routes/caus/index.ts +++ b/lib/routes/caus/index.ts @@ -46,8 +46,8 @@ export const route: Route = { maintainers: ['nczitzk'], handler, description: `| 全部 | 要闻 | 商业 | 快讯 | 财富 | 生活 | - | ---- | ---- | ---- | ---- | ---- | ---- | - | 0 | 1 | 2 | 3 | 8 | 6 |`, +| ---- | ---- | ---- | ---- | ---- | ---- | +| 0 | 1 | 2 | 3 | 8 | 6 |`, }; async function handler(ctx) { diff --git a/lib/routes/cbpanet/index.ts b/lib/routes/cbpanet/index.ts index 88bb838c5d9c76..c21d1d2f2069f8 100644 --- a/lib/routes/cbpanet/index.ts +++ b/lib/routes/cbpanet/index.ts @@ -93,56 +93,56 @@ export const route: Route = { 若订阅 [行业资讯](https://www.cbpanet.com/dzp_news.aspx?bigid=2&smallid=11),网址为 \`https://www.cbpanet.com/dzp_news.aspx?bigid=2&smallid=11\`。截取 \`https://www.cbpanet.com/\` 的 \`bigid\` 和 \`smallid\` 的部分作为参数填入,此时路由为 [\`/cbpanet/dzp_news/4/15\`](https://rsshub.app/cbpanet/dzp_news/4/15)。 ::: -
- 更多分类 +
+更多分类 - #### [协会](https://www.cbpanet.com/dzp_xiehui.aspx) +#### [协会](https://www.cbpanet.com/dzp_xiehui.aspx) - | [协会介绍](https://www.cbpanet.com/dzp_news.aspx?bigid=1&smallid=1) | [协会章程](https://www.cbpanet.com/dzp_news.aspx?bigid=1&smallid=2) | [理事会](https://www.cbpanet.com/dzp_news.aspx?bigid=1&smallid=3) | [内设机构](https://www.cbpanet.com/dzp_news.aspx?bigid=1&smallid=4) | [协会通知](https://www.cbpanet.com/dzp_news.aspx?bigid=1&smallid=5) | [协会活动](https://www.cbpanet.com/dzp_news.aspx?bigid=1&smallid=6) | - | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ---------------------------------------------------------------- | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | - | [1/1](https://rsshub.app/cbpanet/dzp_news/1/1) | [1/2](https://rsshub.app/cbpanet/dzp_news/1/2) | [1/3](https://rsshub.app/cbpanet/dzp_news/1/3) | [1/4](https://rsshub.app/cbpanet/dzp_news/1/4) | [1/5](https://rsshub.app/cbpanet/dzp_news/1/5) | [1/6](https://rsshub.app/cbpanet/dzp_news/1/6) | +| [协会介绍](https://www.cbpanet.com/dzp_news.aspx?bigid=1&smallid=1) | [协会章程](https://www.cbpanet.com/dzp_news.aspx?bigid=1&smallid=2) | [理事会](https://www.cbpanet.com/dzp_news.aspx?bigid=1&smallid=3) | [内设机构](https://www.cbpanet.com/dzp_news.aspx?bigid=1&smallid=4) | [协会通知](https://www.cbpanet.com/dzp_news.aspx?bigid=1&smallid=5) | [协会活动](https://www.cbpanet.com/dzp_news.aspx?bigid=1&smallid=6) | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ---------------------------------------------------------------- | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| [1/1](https://rsshub.app/cbpanet/dzp_news/1/1) | [1/2](https://rsshub.app/cbpanet/dzp_news/1/2) | [1/3](https://rsshub.app/cbpanet/dzp_news/1/3) | [1/4](https://rsshub.app/cbpanet/dzp_news/1/4) | [1/5](https://rsshub.app/cbpanet/dzp_news/1/5) | [1/6](https://rsshub.app/cbpanet/dzp_news/1/6) | - | [出版物](https://www.cbpanet.com/dzp_news.aspx?bigid=1&smallid=7) | [会员权利与义务](https://www.cbpanet.com/dzp_news.aspx?bigid=1&smallid=30) | - | ---------------------------------------------------------------- | ------------------------------------------------------------------------- | - | [1/7](https://rsshub.app/cbpanet/dzp_news/1/7) | [1/30](https://rsshub.app/cbpanet/dzp_news/1/30) | +| [出版物](https://www.cbpanet.com/dzp_news.aspx?bigid=1&smallid=7) | [会员权利与义务](https://www.cbpanet.com/dzp_news.aspx?bigid=1&smallid=30) | +| ---------------------------------------------------------------- | ------------------------------------------------------------------------- | +| [1/7](https://rsshub.app/cbpanet/dzp_news/1/7) | [1/30](https://rsshub.app/cbpanet/dzp_news/1/30) | - #### [行业资讯](https://www.cbpanet.com/dzp_news_list.aspx) +#### [行业资讯](https://www.cbpanet.com/dzp_news_list.aspx) - | [国内资讯](https://www.cbpanet.com/dzp_news.aspx?bigid=2&smallid=8) | [海外资讯](https://www.cbpanet.com/dzp_news.aspx?bigid=2&smallid=9) | [企业新闻](https://www.cbpanet.com/dzp_news.aspx?bigid=2&smallid=10) | [行业资讯](https://www.cbpanet.com/dzp_news.aspx?bigid=2&smallid=11) | [热点聚焦](https://www.cbpanet.com/dzp_news.aspx?bigid=2&smallid=43) | [今日推荐](https://www.cbpanet.com/dzp_news.aspx?bigid=2&smallid=44) | - | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | - | [2/8](https://rsshub.app/cbpanet/dzp_news/2/8) | [2/9](https://rsshub.app/cbpanet/dzp_news/2/9) | [2/10](https://rsshub.app/cbpanet/dzp_news/2/10) | [2/11](https://rsshub.app/cbpanet/dzp_news/2/11) | [2/43](https://rsshub.app/cbpanet/dzp_news/2/43) | [2/44](https://rsshub.app/cbpanet/dzp_news/2/44) | +| [国内资讯](https://www.cbpanet.com/dzp_news.aspx?bigid=2&smallid=8) | [海外资讯](https://www.cbpanet.com/dzp_news.aspx?bigid=2&smallid=9) | [企业新闻](https://www.cbpanet.com/dzp_news.aspx?bigid=2&smallid=10) | [行业资讯](https://www.cbpanet.com/dzp_news.aspx?bigid=2&smallid=11) | [热点聚焦](https://www.cbpanet.com/dzp_news.aspx?bigid=2&smallid=43) | [今日推荐](https://www.cbpanet.com/dzp_news.aspx?bigid=2&smallid=44) | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| [2/8](https://rsshub.app/cbpanet/dzp_news/2/8) | [2/9](https://rsshub.app/cbpanet/dzp_news/2/9) | [2/10](https://rsshub.app/cbpanet/dzp_news/2/10) | [2/11](https://rsshub.app/cbpanet/dzp_news/2/11) | [2/43](https://rsshub.app/cbpanet/dzp_news/2/43) | [2/44](https://rsshub.app/cbpanet/dzp_news/2/44) | - #### [原料信息](https://www.cbpanet.com/dzp_yuanliao.aspx) +#### [原料信息](https://www.cbpanet.com/dzp_yuanliao.aspx) - | [价格行情](https://www.cbpanet.com/dzp_news.aspx?bigid=3&smallid=12) | [分析预测](https://www.cbpanet.com/dzp_news.aspx?bigid=3&smallid=13) | [原料信息](https://www.cbpanet.com/dzp_news.aspx?bigid=3&smallid=40) | [热点聚焦](https://www.cbpanet.com/dzp_news.aspx?bigid=3&smallid=45) | - | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | - | [3/12](https://rsshub.app/cbpanet/dzp_news/3/12) | [3/13](https://rsshub.app/cbpanet/dzp_news/3/13) | [3/40](https://rsshub.app/cbpanet/dzp_news/3/40) | [3/45](https://rsshub.app/cbpanet/dzp_news/3/45) | +| [价格行情](https://www.cbpanet.com/dzp_news.aspx?bigid=3&smallid=12) | [分析预测](https://www.cbpanet.com/dzp_news.aspx?bigid=3&smallid=13) | [原料信息](https://www.cbpanet.com/dzp_news.aspx?bigid=3&smallid=40) | [热点聚焦](https://www.cbpanet.com/dzp_news.aspx?bigid=3&smallid=45) | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| [3/12](https://rsshub.app/cbpanet/dzp_news/3/12) | [3/13](https://rsshub.app/cbpanet/dzp_news/3/13) | [3/40](https://rsshub.app/cbpanet/dzp_news/3/40) | [3/45](https://rsshub.app/cbpanet/dzp_news/3/45) | - #### [法规标准](https://www.cbpanet.com/dzp_fagui.aspx) +#### [法规标准](https://www.cbpanet.com/dzp_fagui.aspx) - | [法规资讯](https://www.cbpanet.com/dzp_news.aspx?bigid=4&smallid=15) | [法律法规](https://www.cbpanet.com/dzp_news.aspx?bigid=4&smallid=16) | [国内标准](https://www.cbpanet.com/dzp_news.aspx?bigid=4&smallid=14) | [国外标准](https://www.cbpanet.com/dzp_news.aspx?bigid=4&smallid=17) | [法规聚焦](https://www.cbpanet.com/dzp_news.aspx?bigid=4&smallid=46) | [今日推荐](https://www.cbpanet.com/dzp_news.aspx?bigid=4&smallid=47) | - | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | - | [4/15](https://rsshub.app/cbpanet/dzp_news/4/15) | [4/16](https://rsshub.app/cbpanet/dzp_news/4/16) | [4/14](https://rsshub.app/cbpanet/dzp_news/4/14) | [4/17](https://rsshub.app/cbpanet/dzp_news/4/17) | [4/46](https://rsshub.app/cbpanet/dzp_news/4/46) | [4/47](https://rsshub.app/cbpanet/dzp_news/4/47) | +| [法规资讯](https://www.cbpanet.com/dzp_news.aspx?bigid=4&smallid=15) | [法律法规](https://www.cbpanet.com/dzp_news.aspx?bigid=4&smallid=16) | [国内标准](https://www.cbpanet.com/dzp_news.aspx?bigid=4&smallid=14) | [国外标准](https://www.cbpanet.com/dzp_news.aspx?bigid=4&smallid=17) | [法规聚焦](https://www.cbpanet.com/dzp_news.aspx?bigid=4&smallid=46) | [今日推荐](https://www.cbpanet.com/dzp_news.aspx?bigid=4&smallid=47) | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| [4/15](https://rsshub.app/cbpanet/dzp_news/4/15) | [4/16](https://rsshub.app/cbpanet/dzp_news/4/16) | [4/14](https://rsshub.app/cbpanet/dzp_news/4/14) | [4/17](https://rsshub.app/cbpanet/dzp_news/4/17) | [4/46](https://rsshub.app/cbpanet/dzp_news/4/46) | [4/47](https://rsshub.app/cbpanet/dzp_news/4/47) | - #### [技术专区](https://www.cbpanet.com/dzp_jishu.aspx) +#### [技术专区](https://www.cbpanet.com/dzp_jishu.aspx) - | [产品介绍](https://www.cbpanet.com/dzp_news.aspx?bigid=5&smallid=18) | [科技成果](https://www.cbpanet.com/dzp_news.aspx?bigid=5&smallid=19) | [学术论文](https://www.cbpanet.com/dzp_news.aspx?bigid=5&smallid=20) | [资料下载](https://www.cbpanet.com/dzp_news.aspx?bigid=5&smallid=21) | [专家](https://www.cbpanet.com/dzp_news.aspx?bigid=5&smallid=50) | [民间智库](https://www.cbpanet.com/dzp_news.aspx?bigid=5&smallid=57) | - | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | --------------------------------------------------------------- | ------------------------------------------------------------------- | - | [5/18](https://rsshub.app/cbpanet/dzp_news/5/18) | [5/19](https://rsshub.app/cbpanet/dzp_news/5/19) | [5/20](https://rsshub.app/cbpanet/dzp_news/5/20) | [5/21](https://rsshub.app/cbpanet/dzp_news/5/21) | [5/50](https://rsshub.app/cbpanet/dzp_news/5/50) | [5/57](https://rsshub.app/cbpanet/dzp_news/5/57) | +| [产品介绍](https://www.cbpanet.com/dzp_news.aspx?bigid=5&smallid=18) | [科技成果](https://www.cbpanet.com/dzp_news.aspx?bigid=5&smallid=19) | [学术论文](https://www.cbpanet.com/dzp_news.aspx?bigid=5&smallid=20) | [资料下载](https://www.cbpanet.com/dzp_news.aspx?bigid=5&smallid=21) | [专家](https://www.cbpanet.com/dzp_news.aspx?bigid=5&smallid=50) | [民间智库](https://www.cbpanet.com/dzp_news.aspx?bigid=5&smallid=57) | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | --------------------------------------------------------------- | ------------------------------------------------------------------- | +| [5/18](https://rsshub.app/cbpanet/dzp_news/5/18) | [5/19](https://rsshub.app/cbpanet/dzp_news/5/19) | [5/20](https://rsshub.app/cbpanet/dzp_news/5/20) | [5/21](https://rsshub.app/cbpanet/dzp_news/5/21) | [5/50](https://rsshub.app/cbpanet/dzp_news/5/50) | [5/57](https://rsshub.app/cbpanet/dzp_news/5/57) | - #### [豆制品消费指南](https://www.cbpanet.com/dzp_zhinan.aspx) +#### [豆制品消费指南](https://www.cbpanet.com/dzp_zhinan.aspx) - | [膳食指南](https://www.cbpanet.com/dzp_news.aspx?bigid=6&smallid=22) | [营养成分](https://www.cbpanet.com/dzp_news.aspx?bigid=6&smallid=23) | [豆食菜谱](https://www.cbpanet.com/dzp_news.aspx?bigid=6&smallid=24) | [问与答](https://www.cbpanet.com/dzp_news.aspx?bigid=6&smallid=31) | [今日推荐](https://www.cbpanet.com/dzp_news.aspx?bigid=6&smallid=48) | [消费热点](https://www.cbpanet.com/dzp_news.aspx?bigid=6&smallid=53) | - | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ----------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | - | [6/22](https://rsshub.app/cbpanet/dzp_news/6/22) | [6/23](https://rsshub.app/cbpanet/dzp_news/6/23) | [6/24](https://rsshub.app/cbpanet/dzp_news/6/24) | [6/31](https://rsshub.app/cbpanet/dzp_news/6/31) | [6/48](https://rsshub.app/cbpanet/dzp_news/6/48) | [6/53](https://rsshub.app/cbpanet/dzp_news/6/53) | +| [膳食指南](https://www.cbpanet.com/dzp_news.aspx?bigid=6&smallid=22) | [营养成分](https://www.cbpanet.com/dzp_news.aspx?bigid=6&smallid=23) | [豆食菜谱](https://www.cbpanet.com/dzp_news.aspx?bigid=6&smallid=24) | [问与答](https://www.cbpanet.com/dzp_news.aspx?bigid=6&smallid=31) | [今日推荐](https://www.cbpanet.com/dzp_news.aspx?bigid=6&smallid=48) | [消费热点](https://www.cbpanet.com/dzp_news.aspx?bigid=6&smallid=53) | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ----------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| [6/22](https://rsshub.app/cbpanet/dzp_news/6/22) | [6/23](https://rsshub.app/cbpanet/dzp_news/6/23) | [6/24](https://rsshub.app/cbpanet/dzp_news/6/24) | [6/31](https://rsshub.app/cbpanet/dzp_news/6/31) | [6/48](https://rsshub.app/cbpanet/dzp_news/6/48) | [6/53](https://rsshub.app/cbpanet/dzp_news/6/53) | - #### [营养与健康](https://www.cbpanet.com/dzp_yingyang.aspx) +#### [营养与健康](https://www.cbpanet.com/dzp_yingyang.aspx) - | [大豆营养概况](https://www.cbpanet.com/dzp_news.aspx?bigid=7&smallid=25) | [大豆食品和人类健康](https://www.cbpanet.com/dzp_news.aspx?bigid=7&smallid=26) | [世界豆类日,爱豆大行动](https://www.cbpanet.com/dzp_news.aspx?bigid=7&smallid=27) | [谣言粉碎机](https://www.cbpanet.com/dzp_news.aspx?bigid=7&smallid=29) | [最新资讯](https://www.cbpanet.com/dzp_news.aspx?bigid=7&smallid=41) | [专家视点](https://www.cbpanet.com/dzp_news.aspx?bigid=7&smallid=49) | - | ----------------------------------------------------------------------- | ----------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | - | [7/25](https://rsshub.app/cbpanet/dzp_news/7/25) | [7/26](https://rsshub.app/cbpanet/dzp_news/7/26) | [7/27](https://rsshub.app/cbpanet/dzp_news/7/27) | [7/29](https://rsshub.app/cbpanet/dzp_news/7/29) | [7/41](https://rsshub.app/cbpanet/dzp_news/7/41) | [7/49](https://rsshub.app/cbpanet/dzp_news/7/49) | +| [大豆营养概况](https://www.cbpanet.com/dzp_news.aspx?bigid=7&smallid=25) | [大豆食品和人类健康](https://www.cbpanet.com/dzp_news.aspx?bigid=7&smallid=26) | [世界豆类日,爱豆大行动](https://www.cbpanet.com/dzp_news.aspx?bigid=7&smallid=27) | [谣言粉碎机](https://www.cbpanet.com/dzp_news.aspx?bigid=7&smallid=29) | [最新资讯](https://www.cbpanet.com/dzp_news.aspx?bigid=7&smallid=41) | [专家视点](https://www.cbpanet.com/dzp_news.aspx?bigid=7&smallid=49) | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| [7/25](https://rsshub.app/cbpanet/dzp_news/7/25) | [7/26](https://rsshub.app/cbpanet/dzp_news/7/26) | [7/27](https://rsshub.app/cbpanet/dzp_news/7/27) | [7/29](https://rsshub.app/cbpanet/dzp_news/7/29) | [7/41](https://rsshub.app/cbpanet/dzp_news/7/41) | [7/49](https://rsshub.app/cbpanet/dzp_news/7/49) | -
+
`, categories: ['new-media'], diff --git a/lib/routes/ccac/news.ts b/lib/routes/ccac/news.ts index dcb5ad24323fd2..94f4cec3ae63fd 100644 --- a/lib/routes/ccac/news.ts +++ b/lib/routes/ccac/news.ts @@ -24,9 +24,9 @@ export const route: Route = { handler, description: `Category - | All | Detected Cases | Investigation Reports or Recommendations | Annual Reports | CCAC's Updates | - | --- | -------------- | ---------------------------------------- | -------------- | -------------- | - | all | case | Persuasion | AnnualReport | PCANews |`, +| All | Detected Cases | Investigation Reports or Recommendations | Annual Reports | CCAC's Updates | +| --- | -------------- | ---------------------------------------- | -------------- | -------------- | +| all | case | Persuasion | AnnualReport | PCANews |`, }; async function handler(ctx) { diff --git a/lib/routes/cccmc/index.ts b/lib/routes/cccmc/index.ts index 7dc4cb17a56656..6670bf10195b98 100644 --- a/lib/routes/cccmc/index.ts +++ b/lib/routes/cccmc/index.ts @@ -121,37 +121,37 @@ export const route: Route = { :::
- 更多分类 +更多分类 - #### [会员之家](https://www.cccmc.org.cn/hyzj) +#### [会员之家](https://www.cccmc.org.cn/hyzj) - | [会员之声](https://www.cccmc.org.cn/hyzj/hyzs/) | [会员动态](https://www.cccmc.org.cn/hyzj/hydt/) | [会员推介](https://www.cccmc.org.cn/hyzj/hytj/) | - | ----------------------------------------------- | ----------------------------------------------- | ----------------------------------------------- | - | [hyzj/hyzs](https://rsshub.app/cccmc/hyzj/hyzs) | [hyzj/hydt](https://rsshub.app/cccmc/hyzj/hydt) | [hyzj/hytj](https://rsshub.app/cccmc/hyzj/hytj) | +| [会员之声](https://www.cccmc.org.cn/hyzj/hyzs/) | [会员动态](https://www.cccmc.org.cn/hyzj/hydt/) | [会员推介](https://www.cccmc.org.cn/hyzj/hytj/) | +| ----------------------------------------------- | ----------------------------------------------- | ----------------------------------------------- | +| [hyzj/hyzs](https://rsshub.app/cccmc/hyzj/hyzs) | [hyzj/hydt](https://rsshub.app/cccmc/hyzj/hydt) | [hyzj/hytj](https://rsshub.app/cccmc/hyzj/hytj) | - #### [政策法规](https://www.cccmc.org.cn/zcfg) +#### [政策法规](https://www.cccmc.org.cn/zcfg) - | [综合政策](https://www.cccmc.org.cn/zcfg/zhzc/) | [国内贸易](https://www.cccmc.org.cn/zcfg/gnmy/) | [对外贸易](https://www.cccmc.org.cn/zcfg/dwmy/) | [投资合作](https://www.cccmc.org.cn/zcfg/tzhz/) | - | ----------------------------------------------- | ----------------------------------------------- | ----------------------------------------------- | ----------------------------------------------- | - | [zcfg/zhzc](https://rsshub.app/cccmc/zcfg/zhzc) | [zcfg/gnmy](https://rsshub.app/cccmc/zcfg/gnmy) | [zcfg/dwmy](https://rsshub.app/cccmc/zcfg/dwmy) | [zcfg/tzhz](https://rsshub.app/cccmc/zcfg/tzhz) | +| [综合政策](https://www.cccmc.org.cn/zcfg/zhzc/) | [国内贸易](https://www.cccmc.org.cn/zcfg/gnmy/) | [对外贸易](https://www.cccmc.org.cn/zcfg/dwmy/) | [投资合作](https://www.cccmc.org.cn/zcfg/tzhz/) | +| ----------------------------------------------- | ----------------------------------------------- | ----------------------------------------------- | ----------------------------------------------- | +| [zcfg/zhzc](https://rsshub.app/cccmc/zcfg/zhzc) | [zcfg/gnmy](https://rsshub.app/cccmc/zcfg/gnmy) | [zcfg/dwmy](https://rsshub.app/cccmc/zcfg/dwmy) | [zcfg/tzhz](https://rsshub.app/cccmc/zcfg/tzhz) | - #### [行业资讯](https://www.cccmc.org.cn/hyzx) +#### [行业资讯](https://www.cccmc.org.cn/hyzx) - | [统计分析](https://www.cccmc.org.cn/hyzx/tjfx/) | [石油化工](https://www.cccmc.org.cn/hyzx/syhg/) | [金属矿产](https://www.cccmc.org.cn/hyzx/jskc/) | [五金建材](https://www.cccmc.org.cn/hyzx/wjjc/) | - | ----------------------------------------------- | ----------------------------------------------- | ----------------------------------------------- | ----------------------------------------------- | - | [hyzx/tjfx](https://rsshub.app/cccmc/hyzx/tjfx) | [hyzx/syhg](https://rsshub.app/cccmc/hyzx/syhg) | [hyzx/jskc](https://rsshub.app/cccmc/hyzx/jskc) | [hyzx/wjjc](https://rsshub.app/cccmc/hyzx/wjjc) | +| [统计分析](https://www.cccmc.org.cn/hyzx/tjfx/) | [石油化工](https://www.cccmc.org.cn/hyzx/syhg/) | [金属矿产](https://www.cccmc.org.cn/hyzx/jskc/) | [五金建材](https://www.cccmc.org.cn/hyzx/wjjc/) | +| ----------------------------------------------- | ----------------------------------------------- | ----------------------------------------------- | ----------------------------------------------- | +| [hyzx/tjfx](https://rsshub.app/cccmc/hyzx/tjfx) | [hyzx/syhg](https://rsshub.app/cccmc/hyzx/syhg) | [hyzx/jskc](https://rsshub.app/cccmc/hyzx/jskc) | [hyzx/wjjc](https://rsshub.app/cccmc/hyzx/wjjc) | - #### [商业机会](https://www.cccmc.org.cn/syjh/)+ +#### [商业机会](https://www.cccmc.org.cn/syjh/)+ - | [供应信息](https://www.cccmc.org.cn/syjh/gyxx/) | [需求信息](https://www.cccmc.org.cn/syjh/xqxx/) | [合作信息](https://www.cccmc.org.cn/syjh/hzxx/) | - | ----------------------------------------------- | ----------------------------------------------- | ----------------------------------------------- | - | [syjh/gyxx](https://rsshub.app/cccmc/syjh/gyxx) | [syjh/xqxx](https://rsshub.app/cccmc/syjh/xqxx) | [syjh/hzxx](https://rsshub.app/cccmc/syjh/hzxx) | +| [供应信息](https://www.cccmc.org.cn/syjh/gyxx/) | [需求信息](https://www.cccmc.org.cn/syjh/xqxx/) | [合作信息](https://www.cccmc.org.cn/syjh/hzxx/) | +| ----------------------------------------------- | ----------------------------------------------- | ----------------------------------------------- | +| [syjh/gyxx](https://rsshub.app/cccmc/syjh/gyxx) | [syjh/xqxx](https://rsshub.app/cccmc/syjh/xqxx) | [syjh/hzxx](https://rsshub.app/cccmc/syjh/hzxx) | - #### [商会党建](https://www.cccmc.org.cn/shdj) +#### [商会党建](https://www.cccmc.org.cn/shdj) - | [党群动态](https://www.cccmc.org.cn/shdj/dqdt/) | [党内法规](https://www.cccmc.org.cn/shdj/dnfg/) | [青年工作](https://www.cccmc.org.cn/shdj/qngz/) | - | ----------------------------------------------- | ----------------------------------------------- | ----------------------------------------------- | - | [shdj/dqdt](https://rsshub.app/cccmc/shdj/dqdt) | [shdj/dnfg](https://rsshub.app/cccmc/shdj/dnfg) | [shdj/qngz](https://rsshub.app/cccmc/shdj/qngz) | +| [党群动态](https://www.cccmc.org.cn/shdj/dqdt/) | [党内法规](https://www.cccmc.org.cn/shdj/dnfg/) | [青年工作](https://www.cccmc.org.cn/shdj/qngz/) | +| ----------------------------------------------- | ----------------------------------------------- | ----------------------------------------------- | +| [shdj/dqdt](https://rsshub.app/cccmc/shdj/dqdt) | [shdj/dnfg](https://rsshub.app/cccmc/shdj/dnfg) | [shdj/qngz](https://rsshub.app/cccmc/shdj/qngz) |
`, categories: ['new-media'], diff --git a/lib/routes/ccf/ccfcv/index.ts b/lib/routes/ccf/ccfcv/index.ts index 38481ea07bb648..13f99d4e9150e3 100644 --- a/lib/routes/ccf/ccfcv/index.ts +++ b/lib/routes/ccf/ccfcv/index.ts @@ -36,8 +36,8 @@ export const route: Route = { maintainers: ['elxy'], handler, description: `| 学术前沿 | 热点征文 | 学术会议 | - | -------- | -------- | -------- | - | xsqy | rdzw | xshy |`, +| -------- | -------- | -------- | +| xsqy | rdzw | xshy |`, }; async function handler(ctx) { diff --git a/lib/routes/ccf/news.ts b/lib/routes/ccf/news.ts index 1fca4505a8a7f0..e3ddc11b654e91 100644 --- a/lib/routes/ccf/news.ts +++ b/lib/routes/ccf/news.ts @@ -27,8 +27,8 @@ export const route: Route = { maintainers: ['nczitzk'], handler, description: `| CCF 新闻 | CCF 聚焦 | ACM 信息 | - | ----------- | -------- | --------- | - | Media\_list | Focus | ACM\_News |`, +| ----------- | -------- | --------- | +| Media\_list | Focus | ACM\_News |`, }; async function handler(ctx) { diff --git a/lib/routes/ccfa/index.ts b/lib/routes/ccfa/index.ts index ff5699d5aceb88..c52532a8528d8d 100644 --- a/lib/routes/ccfa/index.ts +++ b/lib/routes/ccfa/index.ts @@ -111,24 +111,24 @@ export const route: Route = { 若订阅 [协会动态](https://www.ccfa.org.cn/portal/cn/xiehui_list.jsp?type=1),网址为 \`https://www.ccfa.org.cn/portal/cn/xiehui_list.jsp?type=1\`。截取 \`https://www.ccfa.org.cn/portal/cn/xiehui_list.jsp?type=\` 到末尾的部分 \`1\` 作为参数填入,此时路由为 [\`/ccfa/1\`](https://rsshub.app/ccfa/1)。 ::: - | 分类 | ID | - | ------------------------------------------------------------------------- | -------------------------------------- | - | [协会动态](http://www.ccfa.org.cn/portal/cn/xiehui_list.jsp?type=1) | [1](https://rsshub.app/ccfa/1) | - | [行业动态](http://www.ccfa.org.cn/portal/cn/xiehui_list.jsp?type=2) | [2](https://rsshub.app/ccfa/2) | - | [政策/报告/标准](http://www.ccfa.org.cn/portal/cn/hybz_list.jsp?type=33) | [33](https://rsshub.app/ccfa/33) | - | [行业统计](http://www.ccfa.org.cn/portal/cn/lsbq.jsp?type=10003) | [10003](https://rsshub.app/ccfa/10003) | - | [创新案例](http://www.ccfa.org.cn/portal/cn/hybzs_list.jsp?type=10004) | [10004](https://rsshub.app/ccfa/10004) | - | [党建工作](http://www.ccfa.org.cn/portal/cn/xiehui_list.jsp?type=7) | [7](https://rsshub.app/ccfa/7) | - | [新消费论坛](http://www.ccfa.org.cn/portal/cn/xiehui_list.jsp?type=10005) | [10005](https://rsshub.app/ccfa/10005) | - - #### [政策/报告/标准](http://www.ccfa.org.cn/portal/cn/hybz_list.jsp?type=33) - - | 分类 | ID | - | ------------------------------------------------------------------------------- | -------------------------------- | - | [行业报告](http://www.ccfa.org.cn/portal/cn/hybz_list.jsp?type=33) | [33](https://rsshub.app/ccfa/33) | - | [行业标准](http://www.ccfa.org.cn/portal/cn/hybz_list.jsp?type=34) | [34](https://rsshub.app/ccfa/34) | - | [行业政策](http://www.ccfa.org.cn/portal/cn/fangyizhuanqu_list.jsp?type=39) | [39](https://rsshub.app/ccfa/39) | - | [政策权威解读](http://www.ccfa.org.cn/portal/cn/fangyizhuanqu_list.jsp?type=40) | [40](https://rsshub.app/ccfa/40) | +| 分类 | ID | +| ------------------------------------------------------------------------- | -------------------------------------- | +| [协会动态](http://www.ccfa.org.cn/portal/cn/xiehui_list.jsp?type=1) | [1](https://rsshub.app/ccfa/1) | +| [行业动态](http://www.ccfa.org.cn/portal/cn/xiehui_list.jsp?type=2) | [2](https://rsshub.app/ccfa/2) | +| [政策/报告/标准](http://www.ccfa.org.cn/portal/cn/hybz_list.jsp?type=33) | [33](https://rsshub.app/ccfa/33) | +| [行业统计](http://www.ccfa.org.cn/portal/cn/lsbq.jsp?type=10003) | [10003](https://rsshub.app/ccfa/10003) | +| [创新案例](http://www.ccfa.org.cn/portal/cn/hybzs_list.jsp?type=10004) | [10004](https://rsshub.app/ccfa/10004) | +| [党建工作](http://www.ccfa.org.cn/portal/cn/xiehui_list.jsp?type=7) | [7](https://rsshub.app/ccfa/7) | +| [新消费论坛](http://www.ccfa.org.cn/portal/cn/xiehui_list.jsp?type=10005) | [10005](https://rsshub.app/ccfa/10005) | + +#### [政策/报告/标准](http://www.ccfa.org.cn/portal/cn/hybz_list.jsp?type=33) + +| 分类 | ID | +| ------------------------------------------------------------------------------- | -------------------------------- | +| [行业报告](http://www.ccfa.org.cn/portal/cn/hybz_list.jsp?type=33) | [33](https://rsshub.app/ccfa/33) | +| [行业标准](http://www.ccfa.org.cn/portal/cn/hybz_list.jsp?type=34) | [34](https://rsshub.app/ccfa/34) | +| [行业政策](http://www.ccfa.org.cn/portal/cn/fangyizhuanqu_list.jsp?type=39) | [39](https://rsshub.app/ccfa/39) | +| [政策权威解读](http://www.ccfa.org.cn/portal/cn/fangyizhuanqu_list.jsp?type=40) | [40](https://rsshub.app/ccfa/40) | `, categories: ['new-media'], diff --git a/lib/routes/cctv/category.ts b/lib/routes/cctv/category.ts index 15eaebd67130f2..f1f854bb2864f4 100644 --- a/lib/routes/cctv/category.ts +++ b/lib/routes/cctv/category.ts @@ -26,8 +26,8 @@ export const route: Route = { maintainers: ['idealclover', 'xyqfer'], handler, description: `| 新闻 | 国内 | 国际 | 社会 | 法治 | 文娱 | 科技 | 生活 | 教育 | 每周质量报告 | 新闻 1+1 | - | ---- | ----- | ----- | ------- | ---- | ---- | ---- | ---- | ---- | ------------ | --------- | - | news | china | world | society | law | ent | tech | life | edu | mzzlbg | xinwen1j1 |`, +| ---- | ----- | ----- | ------- | ---- | ---- | ---- | ---- | ---- | ------------ | --------- | +| news | china | world | society | law | ent | tech | life | edu | mzzlbg | xinwen1j1 |`, }; async function handler(ctx) { diff --git a/lib/routes/cctv/lm.ts b/lib/routes/cctv/lm.ts index 4fa78c433c9b61..7294c74c01d9e9 100644 --- a/lib/routes/cctv/lm.ts +++ b/lib/routes/cctv/lm.ts @@ -28,12 +28,12 @@ export const route: Route = { maintainers: ['nczitzk'], handler, description: `| 焦点访谈 | 等着我 | 今日说法 | 开讲啦 | - | -------- | ------ | -------- | ------ | - | jdft | dzw | jrsf | kjl | +| -------- | ------ | -------- | ------ | +| jdft | dzw | jrsf | kjl | - | 正大综艺 | 经济半小时 | 第一动画乐园 | - | -------- | ---------- | ------------ | - | zdzy | jjbxs | dydhly | +| 正大综艺 | 经济半小时 | 第一动画乐园 | +| -------- | ---------- | ------------ | +| zdzy | jjbxs | dydhly | ::: tip 更多栏目请看 [这里](https://tv.cctv.com/lm) diff --git a/lib/routes/cde/index.ts b/lib/routes/cde/index.ts index a3589cf491ad49..f142f95f0dee9a 100644 --- a/lib/routes/cde/index.ts +++ b/lib/routes/cde/index.ts @@ -94,19 +94,19 @@ export const route: Route = { handler, description: `- 频道 - | 新闻中心 | 政策法规 | - | :------: | :------: | - | news | policy | +| 新闻中心 | 政策法规 | +| :------: | :------: | +| news | policy | - 类别 - | 新闻中心 | 政务新闻 | 要闻导读 | 图片新闻 | 工作动态 | - | :------: | :------: | :------: | :------: | :------: | - | | zwxw | ywdd | tpxw | gzdt | +| 新闻中心 | 政务新闻 | 要闻导读 | 图片新闻 | 工作动态 | +| :------: | :------: | :------: | :------: | :------: | +| | zwxw | ywdd | tpxw | gzdt | - | 政策法规 | 法律法规 | 中心规章 | - | :------: | :------: | :------: | - | | flfg | zxgz |`, +| 政策法规 | 法律法规 | 中心规章 | +| :------: | :------: | :------: | +| | flfg | zxgz |`, }; async function handler(ctx) { diff --git a/lib/routes/cde/xxgk.ts b/lib/routes/cde/xxgk.ts index 6504f56c9d27e4..75208249d4aa4e 100644 --- a/lib/routes/cde/xxgk.ts +++ b/lib/routes/cde/xxgk.ts @@ -67,8 +67,8 @@ export const route: Route = { maintainers: ['TonyRL'], handler, description: `| 优先审评公示 | 突破性治疗公示 | 临床试验默示许可 | - | :--------------: | :--------------: | :--------------: | - | priorityApproval | breakthroughCure | cliniCal |`, +| :--------------: | :--------------: | :--------------: | +| priorityApproval | breakthroughCure | cliniCal |`, }; async function handler(ctx) { diff --git a/lib/routes/cde/zdyz.ts b/lib/routes/cde/zdyz.ts index e928bb177e460b..a3166acf5780c3 100644 --- a/lib/routes/cde/zdyz.ts +++ b/lib/routes/cde/zdyz.ts @@ -55,8 +55,8 @@ export const route: Route = { maintainers: ['TonyRL'], handler, description: `| 发布通告 | 征求意见 | - | :-----------: | :---------: | - | domesticGuide | opinionList |`, +| :-----------: | :---------: | +| domesticGuide | opinionList |`, }; async function handler(ctx) { diff --git a/lib/routes/cdi/index.ts b/lib/routes/cdi/index.ts index 9f4e082bd6648b..93338d72524ad0 100644 --- a/lib/routes/cdi/index.ts +++ b/lib/routes/cdi/index.ts @@ -22,8 +22,8 @@ export const route: Route = { maintainers: ['nczitzk'], handler, description: `| 樊纲观点 | 综研国策 | 综研观察 | 综研专访 | 综研视点 | 银湖新能源 | - | -------- | -------- | -------- | -------- | -------- | ---------- | - | 102 | 152 | 150 | 153 | 154 | 151 |`, +| -------- | -------- | -------- | -------- | -------- | ---------- | +| 102 | 152 | 150 | 153 | 154 | 151 |`, }; async function handler(ctx) { diff --git a/lib/routes/ce/district.ts b/lib/routes/ce/district.ts new file mode 100644 index 00000000000000..1f2b8180eba161 --- /dev/null +++ b/lib/routes/ce/district.ts @@ -0,0 +1,91 @@ +import { Route, ViewType } from '@/types'; +import cache from '@/utils/cache'; +import { parseDate } from '@/utils/parse-date'; +import timezone from '@/utils/timezone'; +import { load } from 'cheerio'; +import { ofetch } from 'ofetch'; + +export const route: Route = { + path: '/district/:category?', + name: '地方经济', + url: 'district.ce.cn', + maintainers: ['cscnk52'], + handler, + example: '/ce/district', + parameters: { category: '栏目标识,默认为 roll(即时新闻)' }, + description: `| 即时新闻 | 经济动态 | 独家视角 | 专题 | 数说地方 | 地方播报 | 专稿 | 港澳台 | +|----------|----------|----------|------|----------|----------|------|--------| +| roll | jjdt | poll | ch | ssdf | dfbb | zg | gat |`, + categories: ['traditional-media'], + features: { + requireConfig: false, + requirePuppeteer: false, + antiCrawler: false, + supportBT: false, + supportPodcast: false, + supportScihub: false, + supportRadar: true, + }, + radar: [ + { + source: ['district.ce.cn/newarea/:category/index.shtml'], + target: '/district/:category?', + }, + { + source: ['district.ce.cn/newarea/:category'], + target: '/district/:category?', + }, + { + source: ['district.ce.cn'], + target: '/district', + }, + ], + view: ViewType.Articles, +}; + +async function handler(ctx) { + const rootUrl = 'http://district.ce.cn/'; + const { category = 'roll' } = ctx.req.param(); + const url = `${rootUrl}newarea/${category}/index.shtml`; + const GB2312Response = await ofetch(url, { responseType: 'arrayBuffer' }); + + // originally site use gb2312 encoding + const response = new TextDecoder('gb2312').decode(new Uint8Array(GB2312Response)); + const $ = load(response); + + const bigTitle = $('div.channl a').eq(1).attr('title'); + + const list = $('div.sec_left li') + .toArray() + .map((e) => { + const element = $(e); + const title = element.find('a').text().trim(); + const link = new URL(element.find('a').attr('href'), url).href; + return { + title, + link, + }; + }); + + const items = await Promise.all( + list.map((item) => + cache.tryGet(item.link, async () => { + const GB2312Response = await ofetch(item.link, { responseType: 'arrayBuffer' }); + const response = new TextDecoder('gb2312').decode(new Uint8Array(GB2312Response)); + const $ = load(response); + + const pubDateText = $('span#articleTime').text().trim(); + item.pubDate = timezone(parseDate(pubDateText, 'YYYY年MM月DD日 HH:mm'), +8); + + item.description = $('div.TRS_Editor').html(); + return item; + }) + ) + ); + + return { + title: `中国经济网地方经济 - ${bigTitle}`, + link: url, + item: items, + }; +} diff --git a/lib/routes/ce/namespace.ts b/lib/routes/ce/namespace.ts new file mode 100644 index 00000000000000..94dfbe1af642c2 --- /dev/null +++ b/lib/routes/ce/namespace.ts @@ -0,0 +1,8 @@ +import type { Namespace } from '@/types'; + +export const namespace: Namespace = { + name: '中国经济网', + url: 'www.ce.cn', + categories: ['traditional-media'], + lang: 'zh-CN', +}; diff --git a/lib/routes/cebbank/history.ts b/lib/routes/cebbank/history.ts index 352814f9a10f00..35666f8b836f01 100644 --- a/lib/routes/cebbank/history.ts +++ b/lib/routes/cebbank/history.ts @@ -31,9 +31,9 @@ export const route: Route = { #### 历史牌价 {#zhong-guo-guang-da-yin-hang-wai-hui-pai-jia-li-shi-pai-jia} - | 美元 | 英镑 | 港币 | 瑞士法郎 | 瑞典克郎 | 丹麦克郎 | 挪威克郎 | 日元 | 加拿大元 | 澳大利亚元 | 新加坡元 | 欧元 | 澳门元 | 泰国铢 | 新西兰元 | 韩圆 | - | ---- | ---- | ---- | -------- | -------- | -------- | -------- | ---- | -------- | ---------- | -------- | ---- | ------ | ------ | -------- | ---- | - | usd | gbp | hkd | chf | sek | dkk | nok | jpy | cad | aud | sgd | eur | mop | thb | nzd | krw |`, +| 美元 | 英镑 | 港币 | 瑞士法郎 | 瑞典克郎 | 丹麦克郎 | 挪威克郎 | 日元 | 加拿大元 | 澳大利亚元 | 新加坡元 | 欧元 | 澳门元 | 泰国铢 | 新西兰元 | 韩圆 | +| ---- | ---- | ---- | -------- | -------- | -------- | -------- | ---- | -------- | ---------- | -------- | ---- | ------ | ------ | -------- | ---- | +| usd | gbp | hkd | chf | sek | dkk | nok | jpy | cad | aud | sgd | eur | mop | thb | nzd | krw |`, }; async function handler(ctx) { diff --git a/lib/routes/cfachina/analygarden.ts b/lib/routes/cfachina/analygarden.ts index c10f220c4dca63..0995860ec5e965 100644 --- a/lib/routes/cfachina/analygarden.ts +++ b/lib/routes/cfachina/analygarden.ts @@ -26,8 +26,8 @@ export const route: Route = { maintainers: ['TonyRL'], handler, description: `| 有色金属类 | 黑色金属类 | 能源化工类 | 贵金属类 | 农产品类 | 金融类 | 指数类 | - | ---------- | ---------- | ---------- | -------- | -------- | ------ | ------ | - | ysjsl | hsjsl | nyhgl | gjsl | ncpl | jrl | zsl |`, +| ---------- | ---------- | ---------- | -------- | -------- | ------ | ------ | +| ysjsl | hsjsl | nyhgl | gjsl | ncpl | jrl | zsl |`, }; async function handler(ctx) { diff --git a/lib/routes/chaping/news.ts b/lib/routes/chaping/news.ts index 7977b387300ae4..b5febffac0d8b9 100644 --- a/lib/routes/chaping/news.ts +++ b/lib/routes/chaping/news.ts @@ -32,15 +32,15 @@ export const route: Route = { maintainers: ['nczitzk'], handler, description: `| 编号 | 分类 | - | ---- | ---------- | - | 15 | 直播 | - | 3 | 科技新鲜事 | - | 7 | 互联网槽点 | - | 5 | 趣味科技 | - | 6 | DEBUG TIME | - | 1 | 游戏 | - | 8 | 视频 | - | 9 | 公里每小时 |`, +| ---- | ---------- | +| 15 | 直播 | +| 3 | 科技新鲜事 | +| 7 | 互联网槽点 | +| 5 | 趣味科技 | +| 6 | DEBUG TIME | +| 1 | 游戏 | +| 8 | 视频 | +| 9 | 公里每小时 |`, }; async function handler(ctx) { diff --git a/lib/routes/chiculture/topic.ts b/lib/routes/chiculture/topic.ts index 4c86dcc1d777cd..c992caa535a5d5 100644 --- a/lib/routes/chiculture/topic.ts +++ b/lib/routes/chiculture/topic.ts @@ -22,8 +22,8 @@ export const route: Route = { maintainers: ['nczitzk'], handler, description: `| 全部 | 現代中國 | 今日香港 | 全球化 | 一周時事通識 | - | ---- | -------- | -------- | ------ | ------------ | - | | 76 | 479 | 480 | 379 |`, +| ---- | -------- | -------- | ------ | ------------ | +| | 76 | 479 | 480 | 379 |`, }; async function handler(ctx) { diff --git a/lib/routes/chikubi/navigation.ts b/lib/routes/chikubi/navigation.ts index 09015ea56837d1..b512b7c8aab439 100644 --- a/lib/routes/chikubi/navigation.ts +++ b/lib/routes/chikubi/navigation.ts @@ -19,8 +19,8 @@ export const route: Route = { maintainers: ['SnowAgar25'], handler, description: `| 殿堂 | 動畫 | VR | 漫畫 | 音聲 | CG・イラスト | - | ---- | ----- | -- | ----- | ----- | -- | - | best | video | vr | comic | voice | cg |`, +| ---- | ----- | -- | ----- | ----- | -- | +| best | video | vr | comic | voice | cg |`, }; const navigationItems = { diff --git a/lib/routes/china/finance/finance.ts b/lib/routes/china/finance/finance.ts index 6ccf25903f7289..29e683502a09fc 100644 --- a/lib/routes/china/finance/finance.ts +++ b/lib/routes/china/finance/finance.ts @@ -38,8 +38,8 @@ export const route: Route = { maintainers: ['KingJem'], handler, description: `| 推荐 | TMT | 金融 | 地产 | 消费 | 医药 | 酒业 | IPO 观察 | - | ------- | --- | ------- | ------ | ------- | ----- | ---- | -------- | - | tuijian | TMT | jinrong | dichan | xiaofei | yiyao | wine | IPO | +| ------- | --- | ------- | ------ | ------- | ----- | ---- | -------- | +| tuijian | TMT | jinrong | dichan | xiaofei | yiyao | wine | IPO | > Note: The default news num is \`30\`. diff --git a/lib/routes/china/news/highlights/news.ts b/lib/routes/china/news/highlights/news.ts index 54a8349fe8560c..cda5def54276f2 100644 --- a/lib/routes/china/news/highlights/news.ts +++ b/lib/routes/china/news/highlights/news.ts @@ -33,9 +33,9 @@ export const route: Route = { handler, description: `Category of news - | China News | International News | Social News | Breaking News | - | ---------- | ------------------ | ----------- | ------------- | - | domestic | international | social | news100 |`, +| China News | International News | Social News | Breaking News | +| ---------- | ------------------ | ----------- | ------------- | +| domestic | international | social | news100 |`, }; async function handler(ctx) { diff --git a/lib/routes/chinacdc/index.ts b/lib/routes/chinacdc/index.ts index a534631b00e7b1..bdfcf4408eb40c 100644 --- a/lib/routes/chinacdc/index.ts +++ b/lib/routes/chinacdc/index.ts @@ -148,7 +148,7 @@ export const route: Route = { | [zxyw](https://rsshub.app/chinacdc/zxyw) | [tzgg](https://rsshub.app/chinacdc/tzgg) |
- 更多分类 +更多分类 #### [党建园地](https://www.chinacdc.cn/dqgz/djgz/) diff --git a/lib/routes/chinadegrees/province.ts b/lib/routes/chinadegrees/province.ts index 418cc8596acbd1..df6ca73efca482 100644 --- a/lib/routes/chinadegrees/province.ts +++ b/lib/routes/chinadegrees/province.ts @@ -26,39 +26,39 @@ export const route: Route = { }, name: '各学位授予单位学位证书上网进度', description: `| 省市 | 代号 | - | ---------------- | ---- | - | 北京市 | 11 | - | 天津市 | 12 | - | 河北省 | 13 | - | 山西省 | 14 | - | 内蒙古自治区 | 15 | - | 辽宁省 | 21 | - | 吉林省 | 22 | - | 黑龙江省 | 23 | - | 上海市 | 31 | - | 江苏省 | 32 | - | 浙江省 | 33 | - | 安徽省 | 34 | - | 福建省 | 35 | - | 江西省 | 36 | - | 山东省 | 37 | - | 河南省 | 41 | - | 湖北省 | 42 | - | 湖南省 | 43 | - | 广东省 | 44 | - | 广西壮族自治区 | 45 | - | 海南省 | 46 | - | 重庆市 | 50 | - | 四川省 | 51 | - | 贵州省 | 52 | - | 云南省 | 53 | - | 西藏自治区 | 54 | - | 陕西省 | 61 | - | 甘肃省 | 62 | - | 青海省 | 63 | - | 宁夏回族自治区 | 64 | - | 新疆维吾尔自治区 | 65 | - | 台湾 | 71 |`, +| ---------------- | ---- | +| 北京市 | 11 | +| 天津市 | 12 | +| 河北省 | 13 | +| 山西省 | 14 | +| 内蒙古自治区 | 15 | +| 辽宁省 | 21 | +| 吉林省 | 22 | +| 黑龙江省 | 23 | +| 上海市 | 31 | +| 江苏省 | 32 | +| 浙江省 | 33 | +| 安徽省 | 34 | +| 福建省 | 35 | +| 江西省 | 36 | +| 山东省 | 37 | +| 河南省 | 41 | +| 湖北省 | 42 | +| 湖南省 | 43 | +| 广东省 | 44 | +| 广西壮族自治区 | 45 | +| 海南省 | 46 | +| 重庆市 | 50 | +| 四川省 | 51 | +| 贵州省 | 52 | +| 云南省 | 53 | +| 西藏自治区 | 54 | +| 陕西省 | 61 | +| 甘肃省 | 62 | +| 青海省 | 63 | +| 宁夏回族自治区 | 64 | +| 新疆维吾尔自治区 | 65 | +| 台湾 | 71 |`, maintainers: ['TonyRL'], handler, }; diff --git a/lib/routes/chinaisa/index.ts b/lib/routes/chinaisa/index.ts index 5de50965fc8b63..17bc02430d8d33 100644 --- a/lib/routes/chinaisa/index.ts +++ b/lib/routes/chinaisa/index.ts @@ -21,142 +21,142 @@ export const route: Route = { maintainers: ['nczitzk'], handler, description: `| 栏目 | id | - | -------- | --------------------------------------------------------------- | - | 钢协动态 | 58af05dfb6b4300151760176d2aad0a04c275aaadbb1315039263f021f920dcd | - | 钢协要闻 | 67ea4f106bd8f0843c0538d43833c463a0cd411fc35642cbd555a5f39fcf352b | - | 会议报道 | e5070694f299a43b20d990e53b6a69dc02e755fef644ae667cf75deaff80407a | - | 领导讲话 | a873c2e67b26b4a2d8313da769f6e106abc9a1ff04b7f1a50674dfa47cf91a7b | - | 图片新闻 | 806254321b2459bddb3c2cb5590fef6332bd849079d3082daf6153d7f8d62e1e | +| -------- | --------------------------------------------------------------- | +| 钢协动态 | 58af05dfb6b4300151760176d2aad0a04c275aaadbb1315039263f021f920dcd | +| 钢协要闻 | 67ea4f106bd8f0843c0538d43833c463a0cd411fc35642cbd555a5f39fcf352b | +| 会议报道 | e5070694f299a43b20d990e53b6a69dc02e755fef644ae667cf75deaff80407a | +| 领导讲话 | a873c2e67b26b4a2d8313da769f6e106abc9a1ff04b7f1a50674dfa47cf91a7b | +| 图片新闻 | 806254321b2459bddb3c2cb5590fef6332bd849079d3082daf6153d7f8d62e1e |
- 更多栏目 - - #### 党建工作 - - | 栏目 | id | - | ---------------------------------------------------- | ---------------------------------------------------------------- | - | 党建工作 | 10e8911e0c852d91f08e173c768700da608abfb4e7b0540cb49fa5498f33522b | - | 学习贯彻习近平新时代中国特色社会主义思想主题教育专栏 | b7a7ad4b5d8ffaca4b29f3538fd289da9d07f827f89e6ea57ef07257498aacf9 | - | 党史学习教育专栏 | 4d8e7dec1b672704916331431156ea7628a598c191d751e4fc28408ccbd4e0c4 | - | 不忘初心、牢记使命 | 427f7c28c90ec9db1aab78db8156a63ff2e23f6a0cea693e3847fe6d595753db | - | 两学一做 | 5b0609fedc9052bb44f1cfe9acf5ec8c9fe960f22a07be69636f2cf1cacaa8f7 | - | 钢协党代会 | beaaa0314f0f532d4b18244cd70df614a4af97465d974401b1f5b3349d78144b | - | 创先争优 | e7ea82c886ba18691210aaf48b3582a92dca9c4f2aab912757cedafb066ff8a6 | - | 青年工作 | 2706ee3a4a4c3c23e90e13c8fdc3002855d1dba394b61626562a97b33af3dbd0 | - | 日常动态 | e21157a082fc0ab0d7062c8755e91472ee0d23de6ccc5c2a44b62e54062cf1e4 | - - #### 要闻 - - | 栏目 | id | - | ------------ | ---------------------------------------------------------------- | - | 要闻 | c42511ce3f868a515b49668dd250290c80d4dc8930c7e455d0e6e14b8033eae2 | - | 会员动态 | 268f86fdf61ac8614f09db38a2d0295253043b03e092c7ff48ab94290296125c | - | 疫情应对专栏 | a83c48faeb34065fd9b33d3c84957a152675141458aedc0ec454b760c9fcad65 | - - #### 统计发布 - - | 栏目 | id | - | -------- | ---------------------------------------------------------------- | - | 统计发布 | 2e3c87064bdfc0e43d542d87fce8bcbc8fe0463d5a3da04d7e11b4c7d692194b | - | 生产经营 | 3238889ba0fa3aabcf28f40e537d440916a361c9170a4054f9fc43517cb58c1e | - | 进出口 | 95ef75c752af3b6c8be479479d8b931de7418c00150720280d78c8f0da0a438c | - | 环保统计 | 619ce7b53a4291d47c19d0ee0765098ca435e252576fbe921280a63fba4bc712 | - - #### 行业分析 - - | 栏目 | id | - | -------- | ---------------------------------------------------------------- | - | 行业分析 | 1b4316d9238e09c735365896c8e4f677a3234e8363e5622ae6e79a5900a76f56 | - | 市场分析 | a44207e193a5caa5e64102604b6933896a0025eb85c57c583b39626f33d4dafd | - | 板带材 | 05d0e136828584d2cd6e45bdc3270372764781b98546cce122d9974489b1e2f2 | - | 社会库存 | 197422a82d9a09b9cc86188444574816e93186f2fde87474f8b028fc61472d35 | - - #### 钢材价格指数 - - | 栏目 | id | - | ------------ | ---------------------------------------------------------------- | - | 钢材价格指数 | 17b6a9a214c94ccc28e56d4d1a2dbb5acef3e73da431ddc0a849a4dcfc487d04 | - | 综合价格指数 | 63913b906a7a663f7f71961952b1ddfa845714b5982655b773a62b85dd3b064e | - | 地区价格 | fc816c75aed82b9bc25563edc9cf0a0488a2012da38cbef5258da614d6e51ba9 | - - #### 宏观经济信息 - - | 栏目 | id | - | ------------ | ---------------------------------------------------------------- | - | 宏观经济信息 | 5d77b433182404193834120ceed16fe0625860fafd5fd9e71d0800c4df227060 | - | 相关行业信息 | ae2a3c0fd4936acf75f4aab6fadd08bc6371aa65bdd50419e74b70d6f043c473 | - | 国际动态 | 1bad7c56af746a666e4a4e56e54a9508d344d7bc1498360580613590c16b6c41 | - - #### 专题报道 - - | 栏目 | id | - | -------------------- | ---------------------------------------------------------------- | - | 专题报道 | 50e7242bfd78b4395f3338df7699a0ff8847b886c4c3a55bd7c102a2cfe32fe9 | - | 钢协理事会 | 40c6404418699f0f8cb4e513013bb110ef250c782f0959852601e7c75e1afcd8 | - | 钢协新闻发布会 | 11ea370f565c6c141b1a4dac60aa00c4331bd442382a5dd476a5e73e001b773c | - | 劳模表彰 | 907e4ae217bf9c981a132051572103f9c87cccb7f00caf5a1770078829e6bcb3 | - | 钢铁行业职业技能竞赛 | 563c15270a691e3c7cb9cd9ba457c5af392eb4630fa833fc1a55c8e2afbc28a9 | - - #### 成果奖励 - - | 栏目 | id | - | ---------------------- | ---------------------------------------------------------------- | - | 成果奖励 | a6c30053b66356b4d77fbf6668bda69f7e782b2ae08a21d5db171d50a504bd40 | - | 冶金科学技术奖 | 50fe0c63f657ee48e49cb13fe7f7c5502046acdb05e2ee8a317f907af4191683 | - | 企业管理现代化创新成果 | b5607d3b73c2c3a3b069a97b9dbfd59af64aea27bafd5eb87ba44d1b07a33b66 | - | 清洁生产环境友好企业 | 4475c8e21374d063a22f95939a2909837e78fab1832dc97bf64f09fa01c0c5f7 | - | 产品开发市场开拓奖 | 169e34d7b29e3deaf4d4496da594d3bbde2eb0a40f7244b54dbfb9cc89a37296 | - | 质量金杯奖 | 68029784be6d9a7bf9cb8cace5b8a5ce5d2d871e9a0cbcbf84eeae0ea2746311 | - - #### 节能减排 - - | 栏目 | id | - | ------------------------------------------ | ---------------------------------------------------------------- | - | 节能减排 | 08895f1681c198fdf297ab38e33e1f428f6ccf2add382f3844a52e410f10e5a0 | - | 先进节能环保技术 | 6e639343a517fd08e5860fba581d41940da523753956ada973b6952fc05ef94f | - | 钢铁企业超低排放改造和评估监测进展情况公示 | 50d99531d5dee68346653ca9548f308764ad38410a091e662834a5ed66770174 | - - #### 国际交流 - - | 栏目 | id | - | -------- | ---------------------------------------------------------------- | - | 国际交流 | 4753eef81b4019369d4751413d852ab9027944b84c612b5a08614e046d169e81 | - | 外事动态 | aa590ec6f835136a9ce8c9f3d0c3b194beb6b78037466ab40bb4aacc32adfcc9 | - | 国际会展 | 05ac1f2971bc375d25c9112e399f9c3cbb237809684ebc5b0ca4a68a1fcb971c | - - #### 政策法规 - - | 栏目 | id | - | -------- | ---------------------------------------------------------------- | - | 政策法规 | 63a69eb0087f1984c0b269a1541905f19a56e117d56b3f51dfae0e6c1d436533 | - | 政策法规 | a214b2e71c3c79fa4a36ff382ee5f822b9603634626f7e320f91ed696b3666f2 | - | 贸易规则 | 5988b2380d04d3efde8cc247377d19530c17904ec0b5decdd00f9b3e026e3715 | - - #### 分会园地 - - | 栏目 | id | - | ------------ | ---------------------------------------------------------------- | - | 分会园地 | d059d6751dcaae94e31a795072267f7959c35d012eebb9858b3ede2990e82ea9 | - | 法律分会 | 96000647f18ea78fa134a3932563e7d27c68d0482de498f179b44846234567a9 | - | 设备分会 | c8e1e3f52406115c2c03928271bbe883c0875b7c9f2f67492395685a62a1a2d8 | - | 国际产能合作 | 4fb8cc4b0d6f905a969ac3375f6d17b34df4dcae69d798d2a4616daa80af020c | - | 绿化分会 | ad55a0fbc1a44e94fb60e21b98cf967aca17ecf1450bdfb3699468fe8235103b | - - #### 钢铁知识 - - | 栏目 | id | - | ------------ | ---------------------------------------------------------------- | - | 钢铁知识 | 7f7509ff045023015e0d6c1ba22c32734b673be2ec14eae730a99c08e3badb3f | - | 钢铁材料使用 | 7e319d71258ed6bb663cf59b4cf67fe97894e60aa5520f3d2cf966f82f9b89ac | - | 钢铁标准 | fae0c4dd27f8fe4759941e78c9dc1dfe0088ce30d1b684d12be4c8172d2c08e1 | - - #### 钢协刊物 - - | 栏目 | id | - | ---------- | ---------------------------------------------------------------- | - | 钢协刊物 | ed51af486f6d4b313b3aaf8fea0b32a4a2d4a89714c61992caf01942eb61831b | - | 中国钢铁业 | 6440bdfccadf87908b13d8bbd9a66bb89bbd60cc5e175c018ca1c62c7d55e61f | - | 钢铁信息 | 2b66af0b2cda9b420739e55e255a6f72f277557670ef861c9956da8fde25da05 | +更多栏目 + +#### 党建工作 + +| 栏目 | id | +| ---------------------------------------------------- | ---------------------------------------------------------------- | +| 党建工作 | 10e8911e0c852d91f08e173c768700da608abfb4e7b0540cb49fa5498f33522b | +| 学习贯彻习近平新时代中国特色社会主义思想主题教育专栏 | b7a7ad4b5d8ffaca4b29f3538fd289da9d07f827f89e6ea57ef07257498aacf9 | +| 党史学习教育专栏 | 4d8e7dec1b672704916331431156ea7628a598c191d751e4fc28408ccbd4e0c4 | +| 不忘初心、牢记使命 | 427f7c28c90ec9db1aab78db8156a63ff2e23f6a0cea693e3847fe6d595753db | +| 两学一做 | 5b0609fedc9052bb44f1cfe9acf5ec8c9fe960f22a07be69636f2cf1cacaa8f7 | +| 钢协党代会 | beaaa0314f0f532d4b18244cd70df614a4af97465d974401b1f5b3349d78144b | +| 创先争优 | e7ea82c886ba18691210aaf48b3582a92dca9c4f2aab912757cedafb066ff8a6 | +| 青年工作 | 2706ee3a4a4c3c23e90e13c8fdc3002855d1dba394b61626562a97b33af3dbd0 | +| 日常动态 | e21157a082fc0ab0d7062c8755e91472ee0d23de6ccc5c2a44b62e54062cf1e4 | + +#### 要闻 + +| 栏目 | id | +| ------------ | ---------------------------------------------------------------- | +| 要闻 | c42511ce3f868a515b49668dd250290c80d4dc8930c7e455d0e6e14b8033eae2 | +| 会员动态 | 268f86fdf61ac8614f09db38a2d0295253043b03e092c7ff48ab94290296125c | +| 疫情应对专栏 | a83c48faeb34065fd9b33d3c84957a152675141458aedc0ec454b760c9fcad65 | + +#### 统计发布 + +| 栏目 | id | +| -------- | ---------------------------------------------------------------- | +| 统计发布 | 2e3c87064bdfc0e43d542d87fce8bcbc8fe0463d5a3da04d7e11b4c7d692194b | +| 生产经营 | 3238889ba0fa3aabcf28f40e537d440916a361c9170a4054f9fc43517cb58c1e | +| 进出口 | 95ef75c752af3b6c8be479479d8b931de7418c00150720280d78c8f0da0a438c | +| 环保统计 | 619ce7b53a4291d47c19d0ee0765098ca435e252576fbe921280a63fba4bc712 | + +#### 行业分析 + +| 栏目 | id | +| -------- | ---------------------------------------------------------------- | +| 行业分析 | 1b4316d9238e09c735365896c8e4f677a3234e8363e5622ae6e79a5900a76f56 | +| 市场分析 | a44207e193a5caa5e64102604b6933896a0025eb85c57c583b39626f33d4dafd | +| 板带材 | 05d0e136828584d2cd6e45bdc3270372764781b98546cce122d9974489b1e2f2 | +| 社会库存 | 197422a82d9a09b9cc86188444574816e93186f2fde87474f8b028fc61472d35 | + +#### 钢材价格指数 + +| 栏目 | id | +| ------------ | ---------------------------------------------------------------- | +| 钢材价格指数 | 17b6a9a214c94ccc28e56d4d1a2dbb5acef3e73da431ddc0a849a4dcfc487d04 | +| 综合价格指数 | 63913b906a7a663f7f71961952b1ddfa845714b5982655b773a62b85dd3b064e | +| 地区价格 | fc816c75aed82b9bc25563edc9cf0a0488a2012da38cbef5258da614d6e51ba9 | + +#### 宏观经济信息 + +| 栏目 | id | +| ------------ | ---------------------------------------------------------------- | +| 宏观经济信息 | 5d77b433182404193834120ceed16fe0625860fafd5fd9e71d0800c4df227060 | +| 相关行业信息 | ae2a3c0fd4936acf75f4aab6fadd08bc6371aa65bdd50419e74b70d6f043c473 | +| 国际动态 | 1bad7c56af746a666e4a4e56e54a9508d344d7bc1498360580613590c16b6c41 | + +#### 专题报道 + +| 栏目 | id | +| -------------------- | ---------------------------------------------------------------- | +| 专题报道 | 50e7242bfd78b4395f3338df7699a0ff8847b886c4c3a55bd7c102a2cfe32fe9 | +| 钢协理事会 | 40c6404418699f0f8cb4e513013bb110ef250c782f0959852601e7c75e1afcd8 | +| 钢协新闻发布会 | 11ea370f565c6c141b1a4dac60aa00c4331bd442382a5dd476a5e73e001b773c | +| 劳模表彰 | 907e4ae217bf9c981a132051572103f9c87cccb7f00caf5a1770078829e6bcb3 | +| 钢铁行业职业技能竞赛 | 563c15270a691e3c7cb9cd9ba457c5af392eb4630fa833fc1a55c8e2afbc28a9 | + +#### 成果奖励 + +| 栏目 | id | +| ---------------------- | ---------------------------------------------------------------- | +| 成果奖励 | a6c30053b66356b4d77fbf6668bda69f7e782b2ae08a21d5db171d50a504bd40 | +| 冶金科学技术奖 | 50fe0c63f657ee48e49cb13fe7f7c5502046acdb05e2ee8a317f907af4191683 | +| 企业管理现代化创新成果 | b5607d3b73c2c3a3b069a97b9dbfd59af64aea27bafd5eb87ba44d1b07a33b66 | +| 清洁生产环境友好企业 | 4475c8e21374d063a22f95939a2909837e78fab1832dc97bf64f09fa01c0c5f7 | +| 产品开发市场开拓奖 | 169e34d7b29e3deaf4d4496da594d3bbde2eb0a40f7244b54dbfb9cc89a37296 | +| 质量金杯奖 | 68029784be6d9a7bf9cb8cace5b8a5ce5d2d871e9a0cbcbf84eeae0ea2746311 | + +#### 节能减排 + +| 栏目 | id | +| ------------------------------------------ | ---------------------------------------------------------------- | +| 节能减排 | 08895f1681c198fdf297ab38e33e1f428f6ccf2add382f3844a52e410f10e5a0 | +| 先进节能环保技术 | 6e639343a517fd08e5860fba581d41940da523753956ada973b6952fc05ef94f | +| 钢铁企业超低排放改造和评估监测进展情况公示 | 50d99531d5dee68346653ca9548f308764ad38410a091e662834a5ed66770174 | + +#### 国际交流 + +| 栏目 | id | +| -------- | ---------------------------------------------------------------- | +| 国际交流 | 4753eef81b4019369d4751413d852ab9027944b84c612b5a08614e046d169e81 | +| 外事动态 | aa590ec6f835136a9ce8c9f3d0c3b194beb6b78037466ab40bb4aacc32adfcc9 | +| 国际会展 | 05ac1f2971bc375d25c9112e399f9c3cbb237809684ebc5b0ca4a68a1fcb971c | + +#### 政策法规 + +| 栏目 | id | +| -------- | ---------------------------------------------------------------- | +| 政策法规 | 63a69eb0087f1984c0b269a1541905f19a56e117d56b3f51dfae0e6c1d436533 | +| 政策法规 | a214b2e71c3c79fa4a36ff382ee5f822b9603634626f7e320f91ed696b3666f2 | +| 贸易规则 | 5988b2380d04d3efde8cc247377d19530c17904ec0b5decdd00f9b3e026e3715 | + +#### 分会园地 + +| 栏目 | id | +| ------------ | ---------------------------------------------------------------- | +| 分会园地 | d059d6751dcaae94e31a795072267f7959c35d012eebb9858b3ede2990e82ea9 | +| 法律分会 | 96000647f18ea78fa134a3932563e7d27c68d0482de498f179b44846234567a9 | +| 设备分会 | c8e1e3f52406115c2c03928271bbe883c0875b7c9f2f67492395685a62a1a2d8 | +| 国际产能合作 | 4fb8cc4b0d6f905a969ac3375f6d17b34df4dcae69d798d2a4616daa80af020c | +| 绿化分会 | ad55a0fbc1a44e94fb60e21b98cf967aca17ecf1450bdfb3699468fe8235103b | + +#### 钢铁知识 + +| 栏目 | id | +| ------------ | ---------------------------------------------------------------- | +| 钢铁知识 | 7f7509ff045023015e0d6c1ba22c32734b673be2ec14eae730a99c08e3badb3f | +| 钢铁材料使用 | 7e319d71258ed6bb663cf59b4cf67fe97894e60aa5520f3d2cf966f82f9b89ac | +| 钢铁标准 | fae0c4dd27f8fe4759941e78c9dc1dfe0088ce30d1b684d12be4c8172d2c08e1 | + +#### 钢协刊物 + +| 栏目 | id | +| ---------- | ---------------------------------------------------------------- | +| 钢协刊物 | ed51af486f6d4b313b3aaf8fea0b32a4a2d4a89714c61992caf01942eb61831b | +| 中国钢铁业 | 6440bdfccadf87908b13d8bbd9a66bb89bbd60cc5e175c018ca1c62c7d55e61f | +| 钢铁信息 | 2b66af0b2cda9b420739e55e255a6f72f277557670ef861c9956da8fde25da05 |
`, }; diff --git a/lib/routes/chinamoney/notice.ts b/lib/routes/chinamoney/notice.ts index bd088724caa3de..8fb5c22eee1d09 100644 --- a/lib/routes/chinamoney/notice.ts +++ b/lib/routes/chinamoney/notice.ts @@ -23,36 +23,36 @@ export const route: Route = { maintainers: ['TonyRL'], handler, description: `
- 市场公告 +市场公告 外汇市场公告 - | 最新 | 市场公告通知 | 中心会员公告 | 会员信息公告 | - | ---- | ------------ | ------------ | ------------ | - | 2834 | 2835 | 2836 | 2837 | +| 最新 | 市场公告通知 | 中心会员公告 | 会员信息公告 | +| ---- | ------------ | ------------ | ------------ | +| 2834 | 2835 | 2836 | 2837 | 本币市场公告 - | 最新 | 市场公告通知 | 中心会员公告 | 会员信息公告 | - | -------------- | ------------ | ------------ | ------------ | - | 2839,2840,2841 | 2839 | 2840 | 2841 | +| 最新 | 市场公告通知 | 中心会员公告 | 会员信息公告 | +| -------------- | ------------ | ------------ | ------------ | +| 2839,2840,2841 | 2839 | 2840 | 2841 | 央行业务公告 - | 最新 | 公开市场操作 | 中央国库现金管理 | - | --------- | ------------ | ---------------- | - | 2845,2846 | 2845 | 2846 | -
+| 最新 | 公开市场操作 | 中央国库现金管理 | +| --------- | ------------ | ---------------- | +| 2845,2846 | 2845 | 2846 | +
-
- 本币市场 +
+本币市场 贷款市场报价利率 - | LPR 市场公告 | - | ------------ | - | 3686 | -
`, +| LPR 市场公告 | +| ------------ | +| 3686 | +
`, }; async function handler(ctx) { diff --git a/lib/routes/chinania/index.ts b/lib/routes/chinania/index.ts index 90c137d767da6b..b49960a7b84fb1 100644 --- a/lib/routes/chinania/index.ts +++ b/lib/routes/chinania/index.ts @@ -84,52 +84,52 @@ export const route: Route = { 若订阅 [协会通知](https://www.chinania.org.cn/html/xiehuidongtai/xiehuitongzhi/),网址为 \`https://www.chinania.org.cn/html/xiehuidongtai/xiehuitongzhi/\`。截取 \`https://www.chinania.org.cn/html\` 到末尾 \`/\` 的部分 \`xiehuidongtai/xiehuitongzhi\` 作为参数填入,此时路由为 [\`/chinania/xiehuidongtai/xiehuitongzhi\`](https://rsshub.app/chinania/xiehuidongtai/xiehuitongzhi)。 ::: -
- 更多分类 +
+更多分类 - #### [协会动态](https://www.chinania.org.cn/html/xiehuidongtai/) +#### [协会动态](https://www.chinania.org.cn/html/xiehuidongtai/) - | [协会动态](https://www.chinania.org.cn/html/xiehuidongtai/xiehuidongtai/) | [协会通知](https://www.chinania.org.cn/html/xiehuidongtai/xiehuitongzhi/) | [有色企业50强](https://www.chinania.org.cn/html/xiehuidongtai/youseqiye50qiang/) | - | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | - | [xiehuidongtai/xiehuidongtai](https://rsshub.app/chinania/xiehuidongtai/xiehuidongtai) | [xiehuidongtai/xiehuitongzhi](https://rsshub.app/chinania/xiehuidongtai/xiehuitongzhi) | [xiehuidongtai/youseqiye50qiang](https://rsshub.app/chinania/xiehuidongtai/youseqiye50qiang) | +| [协会动态](https://www.chinania.org.cn/html/xiehuidongtai/xiehuidongtai/) | [协会通知](https://www.chinania.org.cn/html/xiehuidongtai/xiehuitongzhi/) | [有色企业50强](https://www.chinania.org.cn/html/xiehuidongtai/youseqiye50qiang/) | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| [xiehuidongtai/xiehuidongtai](https://rsshub.app/chinania/xiehuidongtai/xiehuidongtai) | [xiehuidongtai/xiehuitongzhi](https://rsshub.app/chinania/xiehuidongtai/xiehuitongzhi) | [xiehuidongtai/youseqiye50qiang](https://rsshub.app/chinania/xiehuidongtai/youseqiye50qiang) | - #### [党建工作](https://www.chinania.org.cn/html/djgz/) +#### [党建工作](https://www.chinania.org.cn/html/djgz/) - | [协会党建](https://www.chinania.org.cn/html/djgz/xiehuidangjian/) | [行业党建](https://www.chinania.org.cn/html/djgz/hangyedangjian/) | - | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | - | [djgz/xiehuidangjian](https://rsshub.app/chinania/djgz/xiehuidangjian) | [djgz/hangyedangjian](https://rsshub.app/chinania/djgz/hangyedangjian) | +| [协会党建](https://www.chinania.org.cn/html/djgz/xiehuidangjian/) | [行业党建](https://www.chinania.org.cn/html/djgz/hangyedangjian/) | +| ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | +| [djgz/xiehuidangjian](https://rsshub.app/chinania/djgz/xiehuidangjian) | [djgz/hangyedangjian](https://rsshub.app/chinania/djgz/hangyedangjian) | - #### [行业新闻](https://www.chinania.org.cn/html/hangyexinwen/) +#### [行业新闻](https://www.chinania.org.cn/html/hangyexinwen/) - | [时政要闻](https://www.chinania.org.cn/html/hangyexinwen/shizhengyaowen/) | [要闻](https://www.chinania.org.cn/html/hangyexinwen/yaowen/) | [行业新闻](https://www.chinania.org.cn/html/hangyexinwen/guoneixinwen/) | [资讯](https://www.chinania.org.cn/html/hangyexinwen/zixun/) | - | -------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | -------------------------------------------------------------------- | - | [hangyexinwen/shizhengyaowen](https://rsshub.app/chinania/hangyexinwen/shizhengyaowen) | [hangyexinwen/yaowen](https://rsshub.app/chinania/hangyexinwen/yaowen) | [hangyexinwen/guoneixinwen](https://rsshub.app/chinania/hangyexinwen/guoneixinwen) | [hangyexinwen/zixun](https://rsshub.app/chinania/hangyexinwen/zixun) | +| [时政要闻](https://www.chinania.org.cn/html/hangyexinwen/shizhengyaowen/) | [要闻](https://www.chinania.org.cn/html/hangyexinwen/yaowen/) | [行业新闻](https://www.chinania.org.cn/html/hangyexinwen/guoneixinwen/) | [资讯](https://www.chinania.org.cn/html/hangyexinwen/zixun/) | +| -------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | -------------------------------------------------------------------- | +| [hangyexinwen/shizhengyaowen](https://rsshub.app/chinania/hangyexinwen/shizhengyaowen) | [hangyexinwen/yaowen](https://rsshub.app/chinania/hangyexinwen/yaowen) | [hangyexinwen/guoneixinwen](https://rsshub.app/chinania/hangyexinwen/guoneixinwen) | [hangyexinwen/zixun](https://rsshub.app/chinania/hangyexinwen/zixun) | - #### [人力资源](https://www.chinania.org.cn/html/renliziyuan/) +#### [人力资源](https://www.chinania.org.cn/html/renliziyuan/) - | [相关通知](https://www.chinania.org.cn/html/renliziyuan/xiangguantongzhi/) | [人事招聘](https://www.chinania.org.cn/html/renliziyuan/renshizhaopin/) | - | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | - | [renliziyuan/xiangguantongzhi](https://rsshub.app/chinania/renliziyuan/xiangguantongzhi) | [renliziyuan/renshizhaopin](https://rsshub.app/chinania/renliziyuan/renshizhaopin) | +| [相关通知](https://www.chinania.org.cn/html/renliziyuan/xiangguantongzhi/) | [人事招聘](https://www.chinania.org.cn/html/renliziyuan/renshizhaopin/) | +| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| [renliziyuan/xiangguantongzhi](https://rsshub.app/chinania/renliziyuan/xiangguantongzhi) | [renliziyuan/renshizhaopin](https://rsshub.app/chinania/renliziyuan/renshizhaopin) | - #### [行业统计](https://www.chinania.org.cn/html/hangyetongji/jqzs/) +#### [行业统计](https://www.chinania.org.cn/html/hangyetongji/jqzs/) - | [行业分析](https://www.chinania.org.cn/html/hangyetongji/tongji/) | [数据统计](https://www.chinania.org.cn/html/hangyetongji/chanyeshuju/) | [景气指数](https://www.chinania.org.cn/html/hangyetongji/jqzs/) | - | ---------------------------------------------------------------------- | -------------------------------------------------------------------------------- | ------------------------------------------------------------------ | - | [hangyetongji/tongji](https://rsshub.app/chinania/hangyetongji/tongji) | [hangyetongji/chanyeshuju](https://rsshub.app/chinania/hangyetongji/chanyeshuju) | [hangyetongji/jqzs](https://rsshub.app/chinania/hangyetongji/jqzs) | +| [行业分析](https://www.chinania.org.cn/html/hangyetongji/tongji/) | [数据统计](https://www.chinania.org.cn/html/hangyetongji/chanyeshuju/) | [景气指数](https://www.chinania.org.cn/html/hangyetongji/jqzs/) | +| ---------------------------------------------------------------------- | -------------------------------------------------------------------------------- | ------------------------------------------------------------------ | +| [hangyetongji/tongji](https://rsshub.app/chinania/hangyetongji/tongji) | [hangyetongji/chanyeshuju](https://rsshub.app/chinania/hangyetongji/chanyeshuju) | [hangyetongji/jqzs](https://rsshub.app/chinania/hangyetongji/jqzs) | - #### [政策法规](https://www.chinania.org.cn/html/zcfg/zhengcefagui/) +#### [政策法规](https://www.chinania.org.cn/html/zcfg/zhengcefagui/) - | [政策法规](https://www.chinania.org.cn/html/zcfg/zhengcefagui/) | - | ------------------------------------------------------------------ | - | [zcfg/zhengcefagui](https://rsshub.app/chinania/zcfg/zhengcefagui) | +| [政策法规](https://www.chinania.org.cn/html/zcfg/zhengcefagui/) | +| ------------------------------------------------------------------ | +| [zcfg/zhengcefagui](https://rsshub.app/chinania/zcfg/zhengcefagui) | - #### [会议展览](https://www.chinania.org.cn/html/hyzl/huiyizhanlan/) +#### [会议展览](https://www.chinania.org.cn/html/hyzl/huiyizhanlan/) - | [会展通知](https://www.chinania.org.cn/html/hyzl/huiyizhanlan/) | [会展报道](https://www.chinania.org.cn/html/hyzl/huizhanbaodao/) | - | ------------------------------------------------------------------ | -------------------------------------------------------------------- | - | [hyzl/huiyizhanlan](https://rsshub.app/chinania/hyzl/huiyizhanlan) | [hyzl/huizhanbaodao](https://rsshub.app/chinania/hyzl/huizhanbaodao) | +| [会展通知](https://www.chinania.org.cn/html/hyzl/huiyizhanlan/) | [会展报道](https://www.chinania.org.cn/html/hyzl/huizhanbaodao/) | +| ------------------------------------------------------------------ | -------------------------------------------------------------------- | +| [hyzl/huiyizhanlan](https://rsshub.app/chinania/hyzl/huiyizhanlan) | [hyzl/huizhanbaodao](https://rsshub.app/chinania/hyzl/huizhanbaodao) | -
+
`, categories: ['new-media'], diff --git a/lib/routes/chinathinktanks/viewpoint.ts b/lib/routes/chinathinktanks/viewpoint.ts index d539702a049680..9cdd0e718ed243 100644 --- a/lib/routes/chinathinktanks/viewpoint.ts +++ b/lib/routes/chinathinktanks/viewpoint.ts @@ -26,52 +26,52 @@ export const route: Route = { maintainers: ['Aeliu'], handler, description: `| \`:id\` | 专题名称 | - | ----- | -------- | - | 2 | 党的建设 | - | 3 | 社会 | - | 4 | 生态 | - | 5 | 政治 | - | 6 | 经济 | - | 7 | 文化 | - | 9 | 热点专题 | - | 10 | 国际关系 | - | 13 | 国外智库 | - | 46 | 智库报告 | - | 57 | 智库要闻 | - | 126 | 世界经济 | - | 127 | 宏观经济 | - | 128 | 区域经济 | - | 129 | 产业企业 | - | 130 | 三农问题 | - | 131 | 财政金融 | - | 132 | 科技创新 | - | 133 | 民主 | - | 134 | 法治 | - | 135 | 行政 | - | 136 | 国家治理 | - | 137 | 社会事业 | - | 138 | 社会保障 | - | 139 | 民族宗教 | - | 140 | 人口就业 | - | 141 | 社会治理 | - | 142 | 文化产业 | - | 143 | 公共文化 | - | 144 | 文化体制 | - | 145 | 文化思想 | - | 146 | 资源 | - | 147 | 能源 | - | 148 | 环境 | - | 149 | 生态文明 | - | 150 | 思想建设 | - | 151 | 作风建设 | - | 152 | 组织建设 | - | 153 | 制度建设 | - | 154 | 反腐倡廉 | - | 155 | 中国外交 | - | 156 | 全球治理 | - | 157 | 大国关系 | - | 158 | 地区政治 | - | 181 | 执政能力 |`, +| ----- | -------- | +| 2 | 党的建设 | +| 3 | 社会 | +| 4 | 生态 | +| 5 | 政治 | +| 6 | 经济 | +| 7 | 文化 | +| 9 | 热点专题 | +| 10 | 国际关系 | +| 13 | 国外智库 | +| 46 | 智库报告 | +| 57 | 智库要闻 | +| 126 | 世界经济 | +| 127 | 宏观经济 | +| 128 | 区域经济 | +| 129 | 产业企业 | +| 130 | 三农问题 | +| 131 | 财政金融 | +| 132 | 科技创新 | +| 133 | 民主 | +| 134 | 法治 | +| 135 | 行政 | +| 136 | 国家治理 | +| 137 | 社会事业 | +| 138 | 社会保障 | +| 139 | 民族宗教 | +| 140 | 人口就业 | +| 141 | 社会治理 | +| 142 | 文化产业 | +| 143 | 公共文化 | +| 144 | 文化体制 | +| 145 | 文化思想 | +| 146 | 资源 | +| 147 | 能源 | +| 148 | 环境 | +| 149 | 生态文明 | +| 150 | 思想建设 | +| 151 | 作风建设 | +| 152 | 组织建设 | +| 153 | 制度建设 | +| 154 | 反腐倡廉 | +| 155 | 中国外交 | +| 156 | 全球治理 | +| 157 | 大国关系 | +| 158 | 地区政治 | +| 181 | 执政能力 |`, }; async function handler(ctx) { diff --git a/lib/routes/chinaventure/index.ts b/lib/routes/chinaventure/index.ts index ce56b893487b71..5503dd54aeca7d 100644 --- a/lib/routes/chinaventure/index.ts +++ b/lib/routes/chinaventure/index.ts @@ -43,8 +43,8 @@ export const route: Route = { handler, url: 'chinaventure.com.cn/', description: `| 推荐 | 商业深度 | 资本市场 | 5G | 健康 | 教育 | 地产 | 金融 | 硬科技 | 新消费 | - | ---- | -------- | -------- | -- | ---- | ---- | ---- | ---- | ------ | ------ | - | | 78 | 80 | 83 | 111 | 110 | 112 | 113 | 114 | 116 |`, +| ---- | -------- | -------- | -- | ---- | ---- | ---- | ---- | ------ | ------ | +| | 78 | 80 | 83 | 111 | 110 | 112 | 113 | 114 | 116 |`, }; async function handler(ctx) { diff --git a/lib/routes/chsi/kyzx.ts b/lib/routes/chsi/kyzx.ts index 393a61f154c3d2..3955db9766ceb1 100644 --- a/lib/routes/chsi/kyzx.ts +++ b/lib/routes/chsi/kyzx.ts @@ -29,12 +29,12 @@ export const route: Route = { maintainers: ['yanbot-team'], handler, description: `| \`:type\` | 专题名称 | - | ------- | -------- | - | fstj | 复试调剂 | - | kydt | 考研动态 | - | zcdh | 政策导航 | - | kyrw | 考研人物 | - | jyxd | 经验心得 |`, +| ------- | -------- | +| fstj | 复试调剂 | +| kydt | 考研动态 | +| zcdh | 政策导航 | +| kyrw | 考研人物 | +| jyxd | 经验心得 |`, }; async function handler(ctx) { diff --git a/lib/routes/cib/whpj.ts b/lib/routes/cib/whpj.ts index b8dbca0b6ff5aa..240e462a707c67 100644 --- a/lib/routes/cib/whpj.ts +++ b/lib/routes/cib/whpj.ts @@ -31,8 +31,8 @@ export const route: Route = { handler, url: 'cib.com.cn/', description: `| 短格式 | 现汇买卖 | 现钞买卖 | 现汇买入 | 现汇卖出 | 现钞买入 | 现钞卖出 | - | ------ | -------- | -------- | -------- | -------- | -------- | -------- | - | short | xh | xc | xhmr | xhmc | xcmr | xcmc |`, +| ------ | -------- | -------- | -------- | -------- | -------- | -------- | +| short | xh | xc | xhmr | xhmc | xcmr | xcmc |`, }; async function handler(ctx) { diff --git a/lib/routes/ciidbnu/index.ts b/lib/routes/ciidbnu/index.ts index c669c9eead600b..9093f42fb1bd8a 100644 --- a/lib/routes/ciidbnu/index.ts +++ b/lib/routes/ciidbnu/index.ts @@ -23,8 +23,8 @@ export const route: Route = { maintainers: ['nczitzk'], handler, description: `| 社会动态 | 院内新闻 | 学术观点 | 文献书籍 | 工作论文 | 专题讨论 | - | -------- | -------- | -------- | -------- | -------- | -------- | - | 1 | 5 | 3 | 4 | 6 | 8 |`, +| -------- | -------- | -------- | -------- | -------- | -------- | +| 1 | 5 | 3 | 4 | 6 | 8 |`, }; async function handler(ctx) { diff --git a/lib/routes/cisia/index.ts b/lib/routes/cisia/index.ts index 8c8f0db59760ea..49d31e88cb6977 100644 --- a/lib/routes/cisia/index.ts +++ b/lib/routes/cisia/index.ts @@ -88,52 +88,52 @@ export const route: Route = { 若订阅 [市场信息](http://www.cisia.org/site/term/12.html),网址为 \`http://www.cisia.org/site/term/12.html\`。截取 \`https://www.cisia.org/site/term/\` 到末尾 \`.html\` 的部分 \`12\` 作为参数填入,此时路由为 [\`/cisia/12\`](https://rsshub.app/cisia/12)。 ::: -
- 更多分类 +
+更多分类 - #### [分支机构信息](http://www.cisia.org/site/term/14.html) +#### [分支机构信息](http://www.cisia.org/site/term/14.html) - | [企业动态](http://www.cisia.org/site/term/17.html) | [产品展示](http://www.cisia.org/site/term/18.html) | - | -------------------------------------------------- | -------------------------------------------------- | - | [17](https://rsshub.app/cisia/17) | [18](https://rsshub.app/cisia/18) | +| [企业动态](http://www.cisia.org/site/term/17.html) | [产品展示](http://www.cisia.org/site/term/18.html) | +| -------------------------------------------------- | -------------------------------------------------- | +| [17](https://rsshub.app/cisia/17) | [18](https://rsshub.app/cisia/18) | - #### [新闻中心](http://www.cisia.org/site/term/8.html) +#### [新闻中心](http://www.cisia.org/site/term/8.html) - | [协会动态](http://www.cisia.org/site/term/9.html) | [行业新闻](http://www.cisia.org/site/term/10.html) | [通知公告](http://www.cisia.org/site/term/11.html) | [市场信息](http://www.cisia.org/site/term/12.html) | - | ------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | - | [9](https://rsshub.app/cisia/9) | [10](https://rsshub.app/cisia/10) | [11](https://rsshub.app/cisia/11) | [12](https://rsshub.app/cisia/12) | +| [协会动态](http://www.cisia.org/site/term/9.html) | [行业新闻](http://www.cisia.org/site/term/10.html) | [通知公告](http://www.cisia.org/site/term/11.html) | [市场信息](http://www.cisia.org/site/term/12.html) | +| ------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| [9](https://rsshub.app/cisia/9) | [10](https://rsshub.app/cisia/10) | [11](https://rsshub.app/cisia/11) | [12](https://rsshub.app/cisia/12) | - #### [政策法规](http://www.cisia.org/site/term/19.html) +#### [政策法规](http://www.cisia.org/site/term/19.html) - | [宏观聚焦](http://www.cisia.org/site/term/20.html) | [技术园区](http://www.cisia.org/site/term/396.html) | - | -------------------------------------------------- | --------------------------------------------------- | - | [20](https://rsshub.app/cisia/20) | [396](https://rsshub.app/cisia/396) | +| [宏观聚焦](http://www.cisia.org/site/term/20.html) | [技术园区](http://www.cisia.org/site/term/396.html) | +| -------------------------------------------------- | --------------------------------------------------- | +| [20](https://rsshub.app/cisia/20) | [396](https://rsshub.app/cisia/396) | - #### [合作交流](http://www.cisia.org/site/term/22.html) +#### [合作交流](http://www.cisia.org/site/term/22.html) - | [国际交流](http://www.cisia.org/site/term/23.html) | [行业交流](http://www.cisia.org/site/term/24.html) | [企业调研](http://www.cisia.org/site/term/25.html) | [会展信息](http://www.cisia.org/site/term/84.html) | [宣传专题](http://www.cisia.org/site/term/430.html) | - | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | --------------------------------------------------- | - | [23](https://rsshub.app/cisia/23) | [24](https://rsshub.app/cisia/24) | [25](https://rsshub.app/cisia/25) | [84](https://rsshub.app/cisia/84) | [430](https://rsshub.app/cisia/430) | +| [国际交流](http://www.cisia.org/site/term/23.html) | [行业交流](http://www.cisia.org/site/term/24.html) | [企业调研](http://www.cisia.org/site/term/25.html) | [会展信息](http://www.cisia.org/site/term/84.html) | [宣传专题](http://www.cisia.org/site/term/430.html) | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | --------------------------------------------------- | +| [23](https://rsshub.app/cisia/23) | [24](https://rsshub.app/cisia/24) | [25](https://rsshub.app/cisia/25) | [84](https://rsshub.app/cisia/84) | [430](https://rsshub.app/cisia/430) | - #### [党建工作](http://www.cisia.org/site/term/26.html) +#### [党建工作](http://www.cisia.org/site/term/26.html) - | [党委文件](http://www.cisia.org/site/term/27.html) | [学习园地](http://www.cisia.org/site/term/28.html) | [两会专题](http://www.cisia.org/site/term/443.html) | - | -------------------------------------------------- | -------------------------------------------------- | --------------------------------------------------- | - | [27](https://rsshub.app/cisia/27) | [28](https://rsshub.app/cisia/28) | [443](https://rsshub.app/cisia/443) | +| [党委文件](http://www.cisia.org/site/term/27.html) | [学习园地](http://www.cisia.org/site/term/28.html) | [两会专题](http://www.cisia.org/site/term/443.html) | +| -------------------------------------------------- | -------------------------------------------------- | --------------------------------------------------- | +| [27](https://rsshub.app/cisia/27) | [28](https://rsshub.app/cisia/28) | [443](https://rsshub.app/cisia/443) | - #### [网上服务平台](http://www.cisia.org/site/term/29.html) +#### [网上服务平台](http://www.cisia.org/site/term/29.html) - | [前沿科技](http://www.cisia.org/site/term/31.html) | [新材料新技术](http://www.cisia.org/site/term/133.html) | [文件共享](http://www.cisia.org/site/term/30.html) | - | -------------------------------------------------- | ------------------------------------------------------- | -------------------------------------------------- | - | [31](https://rsshub.app/cisia/31) | [133](https://rsshub.app/cisia/133) | [30](https://rsshub.app/cisia/30) | +| [前沿科技](http://www.cisia.org/site/term/31.html) | [新材料新技术](http://www.cisia.org/site/term/133.html) | [文件共享](http://www.cisia.org/site/term/30.html) | +| -------------------------------------------------- | ------------------------------------------------------- | -------------------------------------------------- | +| [31](https://rsshub.app/cisia/31) | [133](https://rsshub.app/cisia/133) | [30](https://rsshub.app/cisia/30) | - #### [会员社区](http://www.cisia.org/site/term/34.html) +#### [会员社区](http://www.cisia.org/site/term/34.html) - | [会员分布](http://www.cisia.org/site/term/35.html) | [会员风采](http://www.cisia.org/site/term/68.html) | - | -------------------------------------------------- | -------------------------------------------------- | - | [35](https://rsshub.app/cisia/35) | [68](https://rsshub.app/cisia/68) | +| [会员分布](http://www.cisia.org/site/term/35.html) | [会员风采](http://www.cisia.org/site/term/68.html) | +| -------------------------------------------------- | -------------------------------------------------- | +| [35](https://rsshub.app/cisia/35) | [68](https://rsshub.app/cisia/68) | -
+
`, categories: ['government'], diff --git a/lib/routes/cjlu/yjsy/index.ts b/lib/routes/cjlu/yjsy/index.ts index 1785e2dc3d6a6b..300e2cd5641f3a 100644 --- a/lib/routes/cjlu/yjsy/index.ts +++ b/lib/routes/cjlu/yjsy/index.ts @@ -44,8 +44,8 @@ export const route: Route = { maintainers: ['chrisis58'], handler, description: `| 研究生通知 | 教师通知 | - | -------- | -------- | - | yjstz | jstz |`, +| -------- | -------- | +| yjstz | jstz |`, }; async function handler(ctx) { diff --git a/lib/routes/cls/depth.ts b/lib/routes/cls/depth.ts index 3d81bb1dd2f19d..9354905de80cab 100644 --- a/lib/routes/cls/depth.ts +++ b/lib/routes/cls/depth.ts @@ -47,8 +47,8 @@ export const route: Route = { maintainers: ['nczitzk'], handler, description: `| 头条 | 股市 | 港股 | 环球 | 公司 | 券商 | 基金 | 地产 | 金融 | 汽车 | 科创 | 创业版 | 品见 | 期货 | 投教 | - | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ------ | ---- | ---- | ---- | - | 1000 | 1003 | 1135 | 1007 | 1005 | 1118 | 1110 | 1006 | 1032 | 1119 | 1111 | 1127 | 1160 | 1124 | 1176 |`, +| ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ------ | ---- | ---- | ---- | +| 1000 | 1003 | 1135 | 1007 | 1005 | 1118 | 1110 | 1006 | 1032 | 1119 | 1111 | 1127 | 1160 | 1124 | 1176 |`, }; async function handler(ctx) { diff --git a/lib/routes/cls/telegraph.ts b/lib/routes/cls/telegraph.ts index c5f1b2965e4c20..d831d75ba5dc97 100644 --- a/lib/routes/cls/telegraph.ts +++ b/lib/routes/cls/telegraph.ts @@ -44,8 +44,8 @@ export const route: Route = { handler, url: 'cls.cn/telegraph', description: `| 看盘 | 公司 | 解读 | 加红 | 推送 | 提醒 | 基金 | 港股 | - | ----- | ------------ | ------- | ---- | ----- | ------ | ---- | ---- | - | watch | announcement | explain | red | jpush | remind | fund | hk |`, +| ----- | ------------ | ------- | ---- | ----- | ------ | ---- | ---- | +| watch | announcement | explain | red | jpush | remind | fund | hk |`, }; async function handler(ctx) { diff --git a/lib/routes/cma/channel.ts b/lib/routes/cma/channel.ts index a0c5cc42d7a526..5b6aec7f372ace 100644 --- a/lib/routes/cma/channel.ts +++ b/lib/routes/cma/channel.ts @@ -27,26 +27,26 @@ export const route: Route = { handler, description: `#### 天气实况 - | 频道名称 | 频道 id | - | -------- | -------------------------------- | - | 卫星云图 | d3236549863e453aab0ccc4027105bad | - | 单站雷达 | 103 | - | 降水量 | 18 | - | 气温 | 32 | - | 土壤水分 | 45 | - - #### 气象公报 - - | 频道名称 | 频道 id | - | -------------- | -------------------------------- | - | 每日天气提示 | 380 | - | 重要天气提示 | da5d55817ad5430fb9796a0780178533 | - | 天气公报 | 3780 | - | 强对流天气预报 | 383 | - | 交通气象预报 | 423 | - | 森林火险预报 | 424 | - | 海洋天气公报 | 452 | - | 环境气象公报 | 467 | +| 频道名称 | 频道 id | +| -------- | -------------------------------- | +| 卫星云图 | d3236549863e453aab0ccc4027105bad | +| 单站雷达 | 103 | +| 降水量 | 18 | +| 气温 | 32 | +| 土壤水分 | 45 | + +#### 气象公报 + +| 频道名称 | 频道 id | +| -------------- | -------------------------------- | +| 每日天气提示 | 380 | +| 重要天气提示 | da5d55817ad5430fb9796a0780178533 | +| 天气公报 | 3780 | +| 强对流天气预报 | 383 | +| 交通气象预报 | 423 | +| 森林火险预报 | 424 | +| 海洋天气公报 | 452 | +| 环境气象公报 | 467 | ::: tip 订阅更多细分频道,请前往对应上级频道页,使用下拉菜单选择项目后跳转到目标频道页,查看其 URL 找到对应频道 id diff --git a/lib/routes/cna/index.ts b/lib/routes/cna/index.ts index aa52841a9258ac..d5e219a9eca834 100644 --- a/lib/routes/cna/index.ts +++ b/lib/routes/cna/index.ts @@ -22,8 +22,8 @@ export const route: Route = { maintainers: ['nczitzk'], handler, description: `| 即時 | 政治 | 國際 | 兩岸 | 產經 | 證券 | 科技 | 生活 | 社會 | 地方 | 文化 | 運動 | 娛樂 | - | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | - | aall | aipl | aopl | acn | aie | asc | ait | ahel | asoc | aloc | acul | aspt | amov |`, +| ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | +| aall | aipl | aopl | acn | aie | asc | ait | ahel | asoc | aloc | acul | aspt | amov |`, }; async function handler(ctx) { diff --git a/lib/routes/cnbeta/category.ts b/lib/routes/cnbeta/category.ts index 076f1506424401..a873cb07837505 100644 --- a/lib/routes/cnbeta/category.ts +++ b/lib/routes/cnbeta/category.ts @@ -18,6 +18,6 @@ export const route: Route = { handler, url: 'cnbeta.com.tw', description: `| 影视 | 音乐 | 游戏 | 动漫 | 趣闻 | 科学 | 软件 | - | ----- | ----- | ---- | ----- | ----- | ------- | ---- | - | movie | music | game | comic | funny | science | soft |`, +| ----- | ----- | ---- | ----- | ----- | ------- | ---- | +| movie | music | game | comic | funny | science | soft |`, }; diff --git a/lib/routes/cncf/index.ts b/lib/routes/cncf/index.ts index 409bfcc82061c3..acffbbf6cf05ca 100644 --- a/lib/routes/cncf/index.ts +++ b/lib/routes/cncf/index.ts @@ -23,8 +23,8 @@ export const route: Route = { maintainers: ['Fatpandac'], handler, description: `| Blog | News | Announcements | Reports | - | ---- | ---- | ------------- | ------- | - | blog | news | announcements | reports |`, +| ---- | ---- | ------------- | ------- | +| blog | news | announcements | reports |`, }; async function handler(ctx) { diff --git a/lib/routes/cneb/yjxw.ts b/lib/routes/cneb/yjxw.ts index d490824277afac..650ad57b4dad89 100644 --- a/lib/routes/cneb/yjxw.ts +++ b/lib/routes/cneb/yjxw.ts @@ -32,8 +32,8 @@ export const route: Route = { maintainers: ['nczitzk'], handler, description: `| 全部 | 国内新闻 | 国际新闻 | - | ---- | -------- | -------- | - | | gnxw | gjxw |`, +| ---- | -------- | -------- | +| | gnxw | gjxw |`, }; async function handler(ctx) { diff --git a/lib/routes/cngold/index.ts b/lib/routes/cngold/index.ts index 2b1d805ca066d6..955fa46e0a49c3 100644 --- a/lib/routes/cngold/index.ts +++ b/lib/routes/cngold/index.ts @@ -83,38 +83,38 @@ export const route: Route = { 若订阅 [行业资讯](https://www.cngold.org.cn/news-325.html),网址为 \`https://www.cngold.org.cn/news-325.html\`。截取 \`https://www.cngold.org.cn/\` 到末尾 \`.html\` 的部分 \`news-325\` 作为参数填入,此时路由为 [\`/cngold/news-325\`](https://rsshub.app/cngold/news-325)。 ::: - #### 资讯中心 +#### 资讯中心 - | [图片新闻](https://www.cngold.org.cn/news-323.html) | [通知公告](https://www.cngold.org.cn/news-324.html) | [党建工作](https://www.cngold.org.cn/news-326.html) | [行业资讯](https://www.cngold.org.cn/news-325.html) | [黄金矿业](https://www.cngold.org.cn/news-327.html) | [黄金消费](https://www.cngold.org.cn/news-328.html) | - | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | - | [news-323](https://rsshub.app/cngold/news-323) | [news-324](https://rsshub.app/cngold/news-324) | [news-326](https://rsshub.app/cngold/news-326) | [news-325](https://rsshub.app/cngold/news-325) | [news-327](https://rsshub.app/cngold/news-327) | [news-328](https://rsshub.app/cngold/news-328) | +| [图片新闻](https://www.cngold.org.cn/news-323.html) | [通知公告](https://www.cngold.org.cn/news-324.html) | [党建工作](https://www.cngold.org.cn/news-326.html) | [行业资讯](https://www.cngold.org.cn/news-325.html) | [黄金矿业](https://www.cngold.org.cn/news-327.html) | [黄金消费](https://www.cngold.org.cn/news-328.html) | +| --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | +| [news-323](https://rsshub.app/cngold/news-323) | [news-324](https://rsshub.app/cngold/news-324) | [news-326](https://rsshub.app/cngold/news-326) | [news-325](https://rsshub.app/cngold/news-325) | [news-327](https://rsshub.app/cngold/news-327) | [news-328](https://rsshub.app/cngold/news-328) | - | [黄金市场](https://www.cngold.org.cn/news-329.html) | [社会责任](https://www.cngold.org.cn/news-330.html) | [黄金书屋](https://www.cngold.org.cn/news-331.html) | [工作交流](https://www.cngold.org.cn/news-332.html) | [黄金统计](https://www.cngold.org.cn/news-333.html) | [协会动态](https://www.cngold.org.cn/news-334.html) | - | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | - | [news-329](https://rsshub.app/cngold/news-329) | [news-330](https://rsshub.app/cngold/news-330) | [news-331](https://rsshub.app/cngold/news-331) | [news-332](https://rsshub.app/cngold/news-332) | [news-333](https://rsshub.app/cngold/news-333) | [news-334](https://rsshub.app/cngold/news-334) | +| [黄金市场](https://www.cngold.org.cn/news-329.html) | [社会责任](https://www.cngold.org.cn/news-330.html) | [黄金书屋](https://www.cngold.org.cn/news-331.html) | [工作交流](https://www.cngold.org.cn/news-332.html) | [黄金统计](https://www.cngold.org.cn/news-333.html) | [协会动态](https://www.cngold.org.cn/news-334.html) | +| --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | +| [news-329](https://rsshub.app/cngold/news-329) | [news-330](https://rsshub.app/cngold/news-330) | [news-331](https://rsshub.app/cngold/news-331) | [news-332](https://rsshub.app/cngold/news-332) | [news-333](https://rsshub.app/cngold/news-333) | [news-334](https://rsshub.app/cngold/news-334) | -
- 更多分类 +
+更多分类 - #### [政策法规](https://www.cngold.org.cn/policies.html) +#### [政策法规](https://www.cngold.org.cn/policies.html) - | [法律法规](https://www.cngold.org.cn/policies-245.html) | [产业政策](https://www.cngold.org.cn/policies-262.html) | [黄金标准](https://www.cngold.org.cn/policies-281.html) | - | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | - | [policies-245](https://rsshub.app/cngold/policies-245) | [policies-262](https://rsshub.app/cngold/policies-262) | [policies-281](https://rsshub.app/cngold/policies-281) | +| [法律法规](https://www.cngold.org.cn/policies-245.html) | [产业政策](https://www.cngold.org.cn/policies-262.html) | [黄金标准](https://www.cngold.org.cn/policies-281.html) | +| ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | +| [policies-245](https://rsshub.app/cngold/policies-245) | [policies-262](https://rsshub.app/cngold/policies-262) | [policies-281](https://rsshub.app/cngold/policies-281) | - #### [行业培训](https://www.cngold.org.cn/training.html) +#### [行业培训](https://www.cngold.org.cn/training.html) - | [黄金投资分析师](https://www.cngold.org.cn/training-242.html) | [教育部1+X](https://www.cngold.org.cn/training-246.html) | [矿业权评估师](https://www.cngold.org.cn/training-338.html) | [其他培训](https://www.cngold.org.cn/training-247.html) | - | ------------------------------------------------------------- | -------------------------------------------------------- | ----------------------------------------------------------- | ------------------------------------------------------- | - | [training-242](https://rsshub.app/cngold/training-242) | [training-246](https://rsshub.app/cngold/training-246) | [training-338](https://rsshub.app/cngold/training-338) | [training-247](https://rsshub.app/cngold/training-247) | +| [黄金投资分析师](https://www.cngold.org.cn/training-242.html) | [教育部1+X](https://www.cngold.org.cn/training-246.html) | [矿业权评估师](https://www.cngold.org.cn/training-338.html) | [其他培训](https://www.cngold.org.cn/training-247.html) | +| ------------------------------------------------------------- | -------------------------------------------------------- | ----------------------------------------------------------- | ------------------------------------------------------- | +| [training-242](https://rsshub.app/cngold/training-242) | [training-246](https://rsshub.app/cngold/training-246) | [training-338](https://rsshub.app/cngold/training-338) | [training-247](https://rsshub.app/cngold/training-247) | - #### [黄金科技](https://www.cngold.org.cn/technology.html) +#### [黄金科技](https://www.cngold.org.cn/technology.html) - | [黄金协会科学技术奖](https://www.cngold.org.cn/technology-318.html) | [科学成果评价](https://www.cngold.org.cn/technology-319.html) | [新技术推广](https://www.cngold.org.cn/technology-320.html) | [黄金技术大会](https://www.cngold.org.cn/technology-350.html) | - | ------------------------------------------------------------------- | ------------------------------------------------------------- | ----------------------------------------------------------- | ------------------------------------------------------------- | - | [technology-318](https://rsshub.app/cngold/technology-318) | [technology-319](https://rsshub.app/cngold/technology-319) | [technology-320](https://rsshub.app/cngold/technology-320) | [technology-350](https://rsshub.app/cngold/technology-350) | +| [黄金协会科学技术奖](https://www.cngold.org.cn/technology-318.html) | [科学成果评价](https://www.cngold.org.cn/technology-319.html) | [新技术推广](https://www.cngold.org.cn/technology-320.html) | [黄金技术大会](https://www.cngold.org.cn/technology-350.html) | +| ------------------------------------------------------------------- | ------------------------------------------------------------- | ----------------------------------------------------------- | ------------------------------------------------------------- | +| [technology-318](https://rsshub.app/cngold/technology-318) | [technology-319](https://rsshub.app/cngold/technology-319) | [technology-320](https://rsshub.app/cngold/technology-320) | [technology-350](https://rsshub.app/cngold/technology-350) | -
+
`, categories: ['new-media'], diff --git a/lib/routes/cntv/column.ts b/lib/routes/cntv/column.ts index 40f5c2d3d39d48..dcc4002b16cfb3 100644 --- a/lib/routes/cntv/column.ts +++ b/lib/routes/cntv/column.ts @@ -36,9 +36,9 @@ export const route: Route = { 栏目 - | 新闻联播 | 新闻周刊 | 天下足球 | - | -------------------- | -------------------- | -------------------- | - | TOPC1451528971114112 | TOPC1451559180488841 | TOPC1451551777876756 |`, +| 新闻联播 | 新闻周刊 | 天下足球 | +| -------------------- | -------------------- | -------------------- | +| TOPC1451528971114112 | TOPC1451559180488841 | TOPC1451551777876756 |`, }; async function handler(ctx) { diff --git a/lib/routes/consumer/index.ts b/lib/routes/consumer/index.ts index edc7e1be19c475..83b0e249e5ba44 100644 --- a/lib/routes/consumer/index.ts +++ b/lib/routes/consumer/index.ts @@ -28,15 +28,15 @@ export const route: Route = { url: 'consumer.org.hk/', description: `分类 - | 测试及调查 | 生活资讯 | 投诉实录 | 议题评论 | - | ---------- | -------- | --------- | -------- | - | test | life | complaint | topic | +| 测试及调查 | 生活资讯 | 投诉实录 | 议题评论 | +| ---------- | -------- | --------- | -------- | +| test | life | complaint | topic | 语言 - | 简体中文 | 繁体中文 | - | -------- | -------- | - | sc | tc |`, +| 简体中文 | 繁体中文 | +| -------- | -------- | +| sc | tc |`, }; async function handler(ctx) { diff --git a/lib/routes/consumer/shopping-guide.ts b/lib/routes/consumer/shopping-guide.ts index c9352d9d696bd0..f0fc9b221f53d1 100644 --- a/lib/routes/consumer/shopping-guide.ts +++ b/lib/routes/consumer/shopping-guide.ts @@ -21,8 +21,8 @@ export const route: Route = { maintainers: ['TonyRL'], handler, description: `| 冷知識 | 懶人包 | 特集 | 銀髮一族 | 飲食煮意 | 科技達人 | 健康美容 | 規劃人生 | 消閒娛樂 | 家品家電 | 親子時光 | 綠色生活 | - | ------ | ------ | -------- | ------------------ | ---------------- | ---------- | ----------------- | --------------------------- | ------------------------- | --------------- | --------------- | ------------ | - | trivia | tips | features | silver-hair-market | food-and-cooking | tech-savvy | health-and-beauty | life-and-financial-planning | leisure-and-entertainment | home-appliances | family-and-kids | green-living |`, +| ------ | ------ | -------- | ------------------ | ---------------- | ---------- | ----------------- | --------------------------- | ------------------------- | --------------- | --------------- | ------------ | +| trivia | tips | features | silver-hair-market | food-and-cooking | tech-savvy | health-and-beauty | life-and-financial-planning | leisure-and-entertainment | home-appliances | family-and-kids | green-living |`, }; async function handler(ctx) { diff --git a/lib/routes/coolapk/hot.ts b/lib/routes/coolapk/hot.ts index 7b294bcbb99b71..2bfeec1e359810 100644 --- a/lib/routes/coolapk/hot.ts +++ b/lib/routes/coolapk/hot.ts @@ -89,12 +89,12 @@ export const route: Route = { maintainers: ['xizeyoupan'], handler, description: `| 参数名称 | 今日热门 | 点赞榜 | 评论榜 | 收藏榜 | 酷图榜 | - | -------- | -------- | ------ | ------ | ------ | ------ | - | type | jrrm | dzb | plb | scb | ktb | +| -------- | -------- | ------ | ------ | ------ | ------ | +| type | jrrm | dzb | plb | scb | ktb | - | 参数名称 | 日榜 | 周榜 | - | -------- | ----- | ------ | - | period | daily | weekly | +| 参数名称 | 日榜 | 周榜 | +| -------- | ----- | ------ | +| period | daily | weekly | ::: tip 今日热门没有周榜,酷图榜日榜的参数会变成周榜,周榜的参数会变成月榜。 diff --git a/lib/routes/coolapk/toutiao.ts b/lib/routes/coolapk/toutiao.ts index 74da783ff1d595..bd163a88087bdc 100644 --- a/lib/routes/coolapk/toutiao.ts +++ b/lib/routes/coolapk/toutiao.ts @@ -25,8 +25,8 @@ export const route: Route = { maintainers: ['xizeyoupan'], handler, description: `| 参数名称 | 历史头条 | 最新 | - | -------- | -------- | ------ | - | type | history | latest |`, +| -------- | -------- | ------ | +| type | history | latest |`, }; async function handler(ctx) { diff --git a/lib/routes/coolapk/tuwen.ts b/lib/routes/coolapk/tuwen.ts index 65a87d081cafaf..9c9d699cf7a062 100644 --- a/lib/routes/coolapk/tuwen.ts +++ b/lib/routes/coolapk/tuwen.ts @@ -25,8 +25,8 @@ export const route: Route = { maintainers: ['xizeyoupan'], handler, description: `| 参数名称 | 编辑精选 | 最新 | - | -------- | -------- | ------ | - | type | hot | latest |`, +| -------- | -------- | ------ | +| type | hot | latest |`, }; async function handler(ctx) { diff --git a/lib/routes/coomer/artist.ts b/lib/routes/coomer/artist.ts deleted file mode 100644 index e3e4119f0b86e0..00000000000000 --- a/lib/routes/coomer/artist.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { Route } from '@/types'; -import fetchItems from './utils'; - -export const route: Route = { - path: '/artist/:id', - categories: ['multimedia'], - example: '/coomer/artist/belledelphine', - parameters: { id: 'Artist id, can be found in URL' }, - features: { - requireConfig: false, - requirePuppeteer: false, - antiCrawler: false, - supportBT: false, - supportPodcast: false, - supportScihub: false, - }, - radar: [ - { - source: ['coomer.su/onlyfans/user/:id', 'coomer.su/'], - }, - ], - name: 'Artist', - maintainers: ['nczitzk'], - handler, -}; - -async function handler(ctx) { - const id = ctx.req.param('id'); - - const currentUrl = `onlyfans/user/${id}`; - - return await fetchItems(ctx, currentUrl); -} diff --git a/lib/routes/coomer/index.ts b/lib/routes/coomer/index.ts new file mode 100644 index 00000000000000..70a52c830ad3ff --- /dev/null +++ b/lib/routes/coomer/index.ts @@ -0,0 +1,157 @@ +import { Route } from '@/types'; +import { getCurrentPath } from '@/utils/helpers'; +const __dirname = getCurrentPath(import.meta.url); + +import got from '@/utils/got'; +import { load } from 'cheerio'; +import { parseDate } from '@/utils/parse-date'; +import { art } from '@/utils/render'; +import path from 'node:path'; + +export const route: Route = { + path: '/:source?/:id?', + categories: ['multimedia'], + example: '/coomer', + parameters: { source: 'Source, see below, Posts by default', id: 'User id, can be found in URL' }, + features: { + requireConfig: false, + requirePuppeteer: false, + antiCrawler: false, + supportBT: false, + supportPodcast: false, + supportScihub: false, + }, + radar: [ + { + source: ['coomer.su/:source/user/:id', 'coomer.su/'], + }, + ], + name: 'Posts', + maintainers: ['nczitzk', 'AiraNadih'], + handler, + description: `Sources + +| Posts | OnlyFans | Fansly | CandFans | +| ----- | -------- | ------- | -------- | +| posts | onlyfans | fansly | candfans | + +::: tip + When \`posts\` is selected as the value of the parameter **source**, the parameter **id** does not take effect. + There is an optinal parameter **limit** which controls the number of posts to fetch, default value is 25. +:::`, +}; + +async function handler(ctx) { + const limit = ctx.req.query('limit') ? Number.parseInt(ctx.req.query('limit')) : 25; + const source = ctx.req.param('source') ?? 'posts'; + const id = ctx.req.param('id'); + const isPosts = source === 'posts'; + + const rootUrl = 'https://coomer.su'; + const apiUrl = `${rootUrl}/api/v1`; + const currentUrl = isPosts ? `${apiUrl}/posts` : `${apiUrl}/${source}/user/${id}`; + + const headers = { + cookie: '__ddg2=sBQ4uaaGecmfEUk7', + }; + + const response = await got({ + method: 'get', + url: currentUrl, + headers, + }); + const responseData = isPosts ? response.data.posts : response.data; + + const author = isPosts ? '' : await getAuthor(currentUrl, headers); + const title = isPosts ? 'Coomer Posts' : `Posts of ${author} from ${source} | Coomer`; + const image = isPosts ? `${rootUrl}/favicon.ico` : `https://img.coomer.su/icons/${source}/${id}`; + const items = responseData + .filter((i) => i.content || i.attachments) + .slice(0, limit) + .map((i) => { + i.files = []; + if ('path' in i.file) { + i.files.push({ + name: i.file.name, + path: i.file.path, + extension: i.file.path.replace(/.*\./, '').toLowerCase(), + }); + } + for (const attachment of i.attachments) { + i.files.push({ + name: attachment.name, + path: attachment.path, + extension: attachment.path.replace(/.*\./, '').toLowerCase(), + }); + } + const filesHTML = art(path.join(__dirname, 'templates', 'source.art'), { i }); + let $ = load(filesHTML); + const coomerFiles = $('img, a, audio, video').map(function () { + return $(this).prop('outerHTML')!; + }); + let desc = ''; + if (i.content) { + desc += `
${i.content}
`; + } + $ = load(desc); + let count = 0; + const regex = /downloads.fanbox.cc/; + $('a').each(function () { + const link = $(this).attr('href'); + if (regex.test(link!)) { + count++; + $(this).replaceWith(coomerFiles[count]); + } + }); + desc = (coomerFiles.length > 0 ? coomerFiles[0] : '') + $.html(); + for (const coomerFile of coomerFiles.slice(count + 1)) { + desc += coomerFile; + } + + let enclosureInfo = {}; + load(desc)('audio source, video source').each(function () { + const src = $(this).attr('src') ?? ''; + const mimeType = + { + m4a: 'audio/mp4', + mp3: 'audio/mpeg', + mp4: 'video/mp4', + }[src.replace(/.*\./, '').toLowerCase()] || null; + + if (mimeType === null) { + return; + } + + enclosureInfo = { + enclosure_url: new URL(src, rootUrl).toString(), + enclosure_type: mimeType, + }; + }); + + return { + title: i.title || parseDate(i.published), + description: desc, + author, + pubDate: parseDate(i.published), + guid: `${apiUrl}/${i.service}/user/${i.user}/post/${i.id}`, + link: `${rootUrl}/${i.service}/user/${i.user}/post/${i.id}`, + ...enclosureInfo, + }; + }); + + return { + title, + image, + link: isPosts ? `${rootUrl}/posts` : `${rootUrl}/${source}/user/${id}`, + item: items, + }; +} + +async function getAuthor(currentUrl, headers) { + const profileResponse = await got({ + method: 'get', + url: `${currentUrl}/profile`, + headers, + }); + return profileResponse.data.name; +} diff --git a/lib/routes/coomer/posts.ts b/lib/routes/coomer/posts.ts deleted file mode 100644 index ff7ec889995633..00000000000000 --- a/lib/routes/coomer/posts.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { Route } from '@/types'; -import fetchItems from './utils'; - -export const route: Route = { - path: '/posts', - categories: ['multimedia'], - example: '/coomer/posts', - parameters: {}, - features: { - requireConfig: false, - requirePuppeteer: false, - antiCrawler: false, - supportBT: false, - supportPodcast: false, - supportScihub: false, - }, - radar: [ - { - source: ['coomer.su/posts', 'coomer.su/'], - }, - ], - name: 'Recent Posts', - maintainers: ['nczitzk'], - handler, - url: 'coomer.su/posts', -}; - -async function handler(ctx) { - const currentUrl = 'posts'; - - return await fetchItems(ctx, currentUrl); -} diff --git a/lib/routes/coomer/templates/source.art b/lib/routes/coomer/templates/source.art new file mode 100644 index 00000000000000..47f87559e10634 --- /dev/null +++ b/lib/routes/coomer/templates/source.art @@ -0,0 +1,24 @@ +{{ if i.files }} + {{ each i.files file }} + {{ if file.extension === 'jpg' || file.extension === 'png' || file.extension === 'webp' || file.extension === 'jpeg' || file.extension === 'jfif' }} + + {{ else if file.extension === 'm4a' || file.extension === 'mp3' || file.extension === 'ogg' }} + + {{ else if file.extension === 'mp4' || file.extension === 'webm' }} + + {{ else }} + {{file.name}} + {{ /if }} + {{ /each }} +{{ /if }} + +{{ if i.embed }} + {{ if i.embed.type === 'image' }} + + {{ else if i.embed.type === 'link' }} + {{ if i.embed.thumbnail }} + + {{ /if }} + {{ i.embed.title }}{{ if i.embed.description }}

{{ i.embed.description }}

{{ /if }} + {{ /if }} +{{ /if }} diff --git a/lib/routes/coomer/utils.ts b/lib/routes/coomer/utils.ts deleted file mode 100644 index 1767efdae43e63..00000000000000 --- a/lib/routes/coomer/utils.ts +++ /dev/null @@ -1,57 +0,0 @@ -import cache from '@/utils/cache'; -import got from '@/utils/got'; -import { load } from 'cheerio'; -import { parseDate } from '@/utils/parse-date'; - -const fetchItems = async (ctx, currentUrl) => { - const rootUrl = 'https://coomer.su'; - currentUrl = `${rootUrl}/${currentUrl}`; - - const response = await got({ - method: 'get', - url: currentUrl, - }); - - const $ = load(response.data); - - let items = $('.card-list__items') - .find('a') - .slice(0, ctx.req.query('limit') ? Number.parseInt(ctx.req.query('limit')) : 25) - .toArray() - .map((item) => { - item = $(item); - - return { - link: `${rootUrl}${item.attr('href')}`, - }; - }); - - items = await Promise.all( - items.map((item) => - cache.tryGet(item.link, async () => { - const detailResponse = await got({ - method: 'get', - url: item.link, - }); - - const content = load(detailResponse.data); - - content('.ad-container').remove(); - - item.author = content('.post__user-name').text(); - item.title = content('.post__title span').first().text(); - item.pubDate = parseDate(content('.timestamp').attr('datetime')); - item.description = content('.post__body').html(); - - return item; - }) - ) - ); - - return { - title: $('title').text(), - link: currentUrl, - item: items, - }; -}; -export default fetchItems; diff --git a/lib/routes/cosplaytele/article.ts b/lib/routes/cosplaytele/article.ts new file mode 100644 index 00000000000000..c5a534cceb448b --- /dev/null +++ b/lib/routes/cosplaytele/article.ts @@ -0,0 +1,13 @@ +import { parseDate } from '@/utils/parse-date'; +import { WPPost } from './types'; + +function loadArticle(item: WPPost) { + return { + title: item.title.rendered, + description: item.content.rendered, + pubDate: parseDate(item.date_gmt), + link: item.link, + }; +} + +export default loadArticle; diff --git a/lib/routes/cosplaytele/category.ts b/lib/routes/cosplaytele/category.ts new file mode 100644 index 00000000000000..755f01fd388d88 --- /dev/null +++ b/lib/routes/cosplaytele/category.ts @@ -0,0 +1,47 @@ +import { Route } from '@/types'; +import got from '@/utils/got'; +import { SUB_NAME_PREFIX, SUB_URL } from './const'; +import loadArticle from './article'; +import { WPPost } from './types'; + +export const route: Route = { + path: '/category/:category', + categories: ['picture'], + example: '/cosplaytele/category/cosplay', + parameters: { category: 'Category' }, + features: { + requireConfig: false, + requirePuppeteer: false, + antiCrawler: false, + supportBT: false, + supportPodcast: false, + supportScihub: false, + }, + radar: [ + { + source: ['cosplaytele.com/category/:category'], + target: '/category/:category', + }, + ], + name: 'Category', + maintainers: ['AiraNadih'], + handler, + url: 'cosplaytele.com/', +}; + +async function handler(ctx) { + const limit = Number.parseInt(ctx.req.query('limit')) || 20; + const category = ctx.req.param('category'); + const categoryUrl = `${SUB_URL}category/${category}/`; + + const { + data: [{ id: categoryId }], + } = await got(`${SUB_URL}wp-json/wp/v2/categories?slug=${category}`); + const { data: posts } = await got(`${SUB_URL}wp-json/wp/v2/posts?categories=${categoryId}&per_page=${limit}`); + + return { + title: `${SUB_NAME_PREFIX} - Category: ${category}`, + link: categoryUrl, + item: posts.map((post) => loadArticle(post as WPPost)), + }; +} diff --git a/lib/routes/cosplaytele/const.ts b/lib/routes/cosplaytele/const.ts new file mode 100644 index 00000000000000..c196c2ab8b4595 --- /dev/null +++ b/lib/routes/cosplaytele/const.ts @@ -0,0 +1,4 @@ +const SUB_NAME_PREFIX = 'CosplayTele'; +const SUB_URL = 'https://cosplaytele.com/'; + +export { SUB_NAME_PREFIX, SUB_URL }; diff --git a/lib/routes/cosplaytele/latest.ts b/lib/routes/cosplaytele/latest.ts new file mode 100644 index 00000000000000..b986a8d731229e --- /dev/null +++ b/lib/routes/cosplaytele/latest.ts @@ -0,0 +1,41 @@ +import { Route } from '@/types'; +import got from '@/utils/got'; +import { SUB_NAME_PREFIX, SUB_URL } from './const'; +import loadArticle from './article'; +import { WPPost } from './types'; + +export const route: Route = { + path: '/', + categories: ['picture'], + example: '/cosplaytele', + parameters: {}, + features: { + requireConfig: false, + requirePuppeteer: false, + antiCrawler: false, + supportBT: false, + supportPodcast: false, + supportScihub: false, + }, + radar: [ + { + source: ['cosplaytele.com/'], + target: '', + }, + ], + name: 'Latest', + maintainers: ['AiraNadih'], + handler, + url: 'cosplaytele.com/', +}; + +async function handler(ctx) { + const limit = Number.parseInt(ctx.req.query('limit')) || 20; + const { data: posts } = await got(`${SUB_URL}wp-json/wp/v2/posts?per_page=${limit}`); + + return { + title: `${SUB_NAME_PREFIX} - Latest`, + link: SUB_URL, + item: posts.map((post) => loadArticle(post as WPPost)), + }; +} diff --git a/lib/routes/cosplaytele/namespace.ts b/lib/routes/cosplaytele/namespace.ts new file mode 100644 index 00000000000000..bcba7214fa5629 --- /dev/null +++ b/lib/routes/cosplaytele/namespace.ts @@ -0,0 +1,8 @@ +import type { Namespace } from '@/types'; + +export const namespace: Namespace = { + name: 'CosplayTele', + url: 'cosplaytele.com', + description: 'Cosplaytele - Fast - Security - Free', + lang: 'en', +}; diff --git a/lib/routes/cosplaytele/popular.ts b/lib/routes/cosplaytele/popular.ts new file mode 100644 index 00000000000000..fe2b20577f73b5 --- /dev/null +++ b/lib/routes/cosplaytele/popular.ts @@ -0,0 +1,75 @@ +import { Route } from '@/types'; +import got from '@/utils/got'; +import { load } from 'cheerio'; +import { SUB_NAME_PREFIX, SUB_URL } from './const'; +import loadArticle from './article'; +import { WPPost } from './types'; + +export const route: Route = { + path: '/popular/:period', + categories: ['picture'], + example: '/cosplaytele/popular/3', + parameters: { period: 'Days' }, + features: { + requireConfig: false, + requirePuppeteer: false, + antiCrawler: false, + supportBT: false, + supportPodcast: false, + supportScihub: false, + }, + radar: [ + { + source: ['cosplaytele.com/:period'], + target: '/popular/:period', + }, + ], + name: 'Popular', + maintainers: ['AiraNadih'], + handler, + url: 'cosplaytele.com/', +}; + +function getPeriodConfig(period) { + if (period === '1') { + return { + url: `${SUB_URL}24-hours/`, + range: 'daily', + title: `${SUB_NAME_PREFIX} - Top views in 24 hours`, + }; + } + return { + url: `${SUB_URL}${period}-day/`, + range: `last${period}days`, + title: `${SUB_NAME_PREFIX} - Top views in ${period} days`, + }; +} + +async function handler(ctx) { + const limit = Number.parseInt(ctx.req.query('limit')) || 20; + const period = ctx.req.param('period'); + + const { url, range, title } = getPeriodConfig(period); + + const { data } = await got.post(`${SUB_URL}wp-json/wordpress-popular-posts/v2/widget`, { + json: { + limit, + range, + order_by: 'views', + }, + }); + + const $ = load(data.widget); + const links = $('.wpp-list li') + .toArray() + .map((post) => $(post).find('.wpp-post-title').attr('href')) + .filter((link) => link !== undefined); + const slugs = links.map((link) => link.split('/').findLast(Boolean)); + const { data: posts } = await got(`${SUB_URL}wp-json/wp/v2/posts?slug=${slugs.join(',')}&per_page=${limit}`); + + return { + title, + link: url, + item: posts.map((post) => loadArticle(post as WPPost)), + }; +} diff --git a/lib/routes/cosplaytele/tag.ts b/lib/routes/cosplaytele/tag.ts new file mode 100644 index 00000000000000..41676a57cfef65 --- /dev/null +++ b/lib/routes/cosplaytele/tag.ts @@ -0,0 +1,47 @@ +import { Route } from '@/types'; +import got from '@/utils/got'; +import { SUB_NAME_PREFIX, SUB_URL } from './const'; +import loadArticle from './article'; +import { WPPost } from './types'; + +export const route: Route = { + path: '/tag/:tag', + categories: ['picture'], + example: '/cosplaytele/tag/aqua', + parameters: { tag: 'Tag' }, + features: { + requireConfig: false, + requirePuppeteer: false, + antiCrawler: false, + supportBT: false, + supportPodcast: false, + supportScihub: false, + }, + radar: [ + { + source: ['cosplaytele.com/tag/:tag'], + target: '/tag/:tag', + }, + ], + name: 'Tag', + maintainers: ['AiraNadih'], + handler, + url: 'cosplaytele.com/', +}; + +async function handler(ctx) { + const limit = Number.parseInt(ctx.req.query('limit')) || 20; + const tag = ctx.req.param('tag'); + const tagUrl = `${SUB_URL}tag/${tag}/`; + + const { + data: [{ id: tagId }], + } = await got(`${SUB_URL}wp-json/wp/v2/tags?slug=${tag}`); + const { data: posts } = await got(`${SUB_URL}wp-json/wp/v2/posts?tags=${tagId}&per_page=${limit}`); + + return { + title: `${SUB_NAME_PREFIX} - Tag: ${tag}`, + link: tagUrl, + item: posts.map((post) => loadArticle(post as WPPost)), + }; +} diff --git a/lib/routes/cosplaytele/types.ts b/lib/routes/cosplaytele/types.ts new file mode 100644 index 00000000000000..d3ea3ac2a8cc26 --- /dev/null +++ b/lib/routes/cosplaytele/types.ts @@ -0,0 +1,12 @@ +interface WPPost { + title: { + rendered: string; + }; + content: { + rendered: string; + }; + date_gmt: string; + link: string; +} + +export type { WPPost }; diff --git a/lib/routes/counter-strike/news.ts b/lib/routes/counter-strike/news.ts index 5d43c16a6801c0..688ef3303455fd 100644 --- a/lib/routes/counter-strike/news.ts +++ b/lib/routes/counter-strike/news.ts @@ -126,8 +126,8 @@ export const route: Route = { If you subscribe to [Updates in English](https://www.counter-strike.net/news/updates?l=english),where the URL is \`https://www.counter-strike.net/news/updates?l=english\`, extract the \`l\`, which is \`english\`, and use it as the parameter to fill in. Therefore, the route will be [\`/counter-strike/news/updates/english\`](https://rsshub.app/counter-strike/news/updates/english). ::: -
- More languages +
+More languages | 语言代码 | 语言名称 | | ------------------------------------------------- | ---------- | @@ -160,7 +160,7 @@ export const route: Route = { | Tiếng Việt (Vietnamese) | vietnamese | | Español - Latinoamérica (Spanish - Latin America) | latam | -
+
`, categories: ['game'], diff --git a/lib/routes/cpcaauto/index.ts b/lib/routes/cpcaauto/index.ts index 9095427ab90b0b..c55f5e7328bc0e 100644 --- a/lib/routes/cpcaauto/index.ts +++ b/lib/routes/cpcaauto/index.ts @@ -85,39 +85,39 @@ export const route: Route = { 若订阅 [行业新闻 > 国内乘用车](http://cpcaauto.com/news.php?types=news&anid=10),网址为 \`http://cpcaauto.com/news.php?types=news&anid=10\`。截取 \`types\` 和 \`anid\` 的部分 \`\` 作为参数填入,此时路由为 [\`/cpcaauto/news/news/10\`](https://rsshub.app/cpcaauto/news/news/10)。 ::: - #### [行业新闻](http://cpcaauto.com/news.php?types=news) +#### [行业新闻](http://cpcaauto.com/news.php?types=news) - | [国内乘用车](http://cpcaauto.com/news.php?types=news&anid=10) | [进口及国外乘用车](http://cpcaauto.com/news.php?types=news&anid=64) | [后市场](http://cpcaauto.com/news.php?types=news&anid=44) | [商用车](http://cpcaauto.com/news.php?types=news&anid=62) | - | ----------------------------------------------------------------- | ----------------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | - | [news/10](https://rsshub.app/cpcaauto/news/news/10) | [news/64](https://rsshub.app/cpcaauto/news/news/64) | [news/44](https://rsshub.app/cpcaauto/news/news/44) | [news/62](https://rsshub.app/cpcaauto/news/news/62) | +| [国内乘用车](http://cpcaauto.com/news.php?types=news&anid=10) | [进口及国外乘用车](http://cpcaauto.com/news.php?types=news&anid=64) | [后市场](http://cpcaauto.com/news.php?types=news&anid=44) | [商用车](http://cpcaauto.com/news.php?types=news&anid=62) | +| ----------------------------------------------------------------- | ----------------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | +| [news/10](https://rsshub.app/cpcaauto/news/news/10) | [news/64](https://rsshub.app/cpcaauto/news/news/64) | [news/44](https://rsshub.app/cpcaauto/news/news/44) | [news/62](https://rsshub.app/cpcaauto/news/news/62) | - #### [车市解读](http://cpcaauto.com/news.php?types=csjd) +#### [车市解读](http://cpcaauto.com/news.php?types=csjd) - | [周度](http://cpcaauto.com/news.php?types=csjd&anid=128) | [月度](http://cpcaauto.com/news.php?types=csjd&anid=129) | [指数](http://cpcaauto.com/news.php?types=csjd&anid=130) | [预测](http://cpcaauto.com/news.php?types=csjd&anid=131) | - | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | - | [csjd/128](https://rsshub.app/cpcaauto/news/csjd/128) | [csjd/129](https://rsshub.app/cpcaauto/news/csjd/129) | [csjd/130](https://rsshub.app/cpcaauto/news/csjd/130) | [csjd/131](https://rsshub.app/cpcaauto/news/csjd/131) | +| [周度](http://cpcaauto.com/news.php?types=csjd&anid=128) | [月度](http://cpcaauto.com/news.php?types=csjd&anid=129) | [指数](http://cpcaauto.com/news.php?types=csjd&anid=130) | [预测](http://cpcaauto.com/news.php?types=csjd&anid=131) | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| [csjd/128](https://rsshub.app/cpcaauto/news/csjd/128) | [csjd/129](https://rsshub.app/cpcaauto/news/csjd/129) | [csjd/130](https://rsshub.app/cpcaauto/news/csjd/130) | [csjd/131](https://rsshub.app/cpcaauto/news/csjd/131) | - #### [发布会报告](http://cpcaauto.com/news.php?types=bgzl) +#### [发布会报告](http://cpcaauto.com/news.php?types=bgzl) - | [上海市场上牌数](http://cpcaauto.com/news.php?types=bgzl&anid=119) | [京城车市](http://cpcaauto.com/news.php?types=bgzl&anid=122) | [进口车市场分析](http://cpcaauto.com/news.php?types=bgzl&anid=120) | [二手车市场分析](http://cpcaauto.com/news.php?types=bgzl&anid=121) | [价格指数](http://cpcaauto.com/news.php?types=bgzl&anid=124) | - | ---------------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------- | - | [bgzl/119](https://rsshub.app/cpcaauto/news/bgzl/119) | [bgzl/122](https://rsshub.app/cpcaauto/news/bgzl/122) | [bgzl/120](https://rsshub.app/cpcaauto/news/bgzl/120) | [bgzl/121](https://rsshub.app/cpcaauto/news/bgzl/121) | [bgzl/124](https://rsshub.app/cpcaauto/news/bgzl/124) | +| [上海市场上牌数](http://cpcaauto.com/news.php?types=bgzl&anid=119) | [京城车市](http://cpcaauto.com/news.php?types=bgzl&anid=122) | [进口车市场分析](http://cpcaauto.com/news.php?types=bgzl&anid=120) | [二手车市场分析](http://cpcaauto.com/news.php?types=bgzl&anid=121) | [价格指数](http://cpcaauto.com/news.php?types=bgzl&anid=124) | +| ---------------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------- | +| [bgzl/119](https://rsshub.app/cpcaauto/news/bgzl/119) | [bgzl/122](https://rsshub.app/cpcaauto/news/bgzl/122) | [bgzl/120](https://rsshub.app/cpcaauto/news/bgzl/120) | [bgzl/121](https://rsshub.app/cpcaauto/news/bgzl/121) | [bgzl/124](https://rsshub.app/cpcaauto/news/bgzl/124) | - | [热点评述](http://cpcaauto.com/news.php?types=bgzl&anid=125) | [新能源月报](http://cpcaauto.com/news.php?types=bgzl&anid=126) | [商用车月报](http://cpcaauto.com/news.php?types=bgzl&anid=127) | [政策分析](http://cpcaauto.com/news.php?types=bgzl&anid=123) | - | ---------------------------------------------------------------- | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ---------------------------------------------------------------- | - | [bgzl/125](https://rsshub.app/cpcaauto/news/bgzl/125) | [bgzl/126](https://rsshub.app/cpcaauto/news/bgzl/126) | [bgzl/127](https://rsshub.app/cpcaauto/news/bgzl/127) | [bgzl/123](https://rsshub.app/cpcaauto/news/bgzl/123) | +| [热点评述](http://cpcaauto.com/news.php?types=bgzl&anid=125) | [新能源月报](http://cpcaauto.com/news.php?types=bgzl&anid=126) | [商用车月报](http://cpcaauto.com/news.php?types=bgzl&anid=127) | [政策分析](http://cpcaauto.com/news.php?types=bgzl&anid=123) | +| ---------------------------------------------------------------- | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ---------------------------------------------------------------- | +| [bgzl/125](https://rsshub.app/cpcaauto/news/bgzl/125) | [bgzl/126](https://rsshub.app/cpcaauto/news/bgzl/126) | [bgzl/127](https://rsshub.app/cpcaauto/news/bgzl/127) | [bgzl/123](https://rsshub.app/cpcaauto/news/bgzl/123) | - #### [经济与政策](http://cpcaauto.com/news.php?types=meeting) +#### [经济与政策](http://cpcaauto.com/news.php?types=meeting) - | [一周经济](http://cpcaauto.com/news.php?types=meeting&anid=46) | [一周政策](http://cpcaauto.com/news.php?types=meeting&anid=47) | - | ------------------------------------------------------------------ | ------------------------------------------------------------------ | - | [meeting/46](https://rsshub.app/cpcaauto/news/meeting/46) | [meeting/47](https://rsshub.app/cpcaauto/news/meeting/47) | +| [一周经济](http://cpcaauto.com/news.php?types=meeting&anid=46) | [一周政策](http://cpcaauto.com/news.php?types=meeting&anid=47) | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| [meeting/46](https://rsshub.app/cpcaauto/news/meeting/46) | [meeting/47](https://rsshub.app/cpcaauto/news/meeting/47) | - #### [乘联会论坛](http://cpcaauto.com/news.php?types=yjsy) +#### [乘联会论坛](http://cpcaauto.com/news.php?types=yjsy) - | [论坛文章](http://cpcaauto.com/news.php?types=yjsy&anid=49) | [两会](http://cpcaauto.com/news.php?types=yjsy&anid=111) | [车展看点](http://cpcaauto.com/news.php?types=yjsy&anid=113) | - | --------------------------------------------------------------- | ------------------------------------------------------------ | ---------------------------------------------------------------- | - | [yjsy/49](https://rsshub.app/cpcaauto/news/yjsy/49) | [yjsy/111](https://rsshub.app/cpcaauto/news/yjsy/111) | [yjsy/113](https://rsshub.app/cpcaauto/news/yjsy/113) | +| [论坛文章](http://cpcaauto.com/news.php?types=yjsy&anid=49) | [两会](http://cpcaauto.com/news.php?types=yjsy&anid=111) | [车展看点](http://cpcaauto.com/news.php?types=yjsy&anid=113) | +| --------------------------------------------------------------- | ------------------------------------------------------------ | ---------------------------------------------------------------- | +| [yjsy/49](https://rsshub.app/cpcaauto/news/yjsy/49) | [yjsy/111](https://rsshub.app/cpcaauto/news/yjsy/111) | [yjsy/113](https://rsshub.app/cpcaauto/news/yjsy/113) | `, categories: ['new-media'], diff --git a/lib/routes/cpcey/index.ts b/lib/routes/cpcey/index.ts index f739febf10462d..251fc0b5da4248 100644 --- a/lib/routes/cpcey/index.ts +++ b/lib/routes/cpcey/index.ts @@ -34,8 +34,8 @@ export const route: Route = { maintainers: ['Fatpandac'], handler, description: `| 新闻稿 | 消费资讯 | - | :----: | :------: | - | xwg | xfzx |`, +| :----: | :------: | +| xwg | xfzx |`, }; async function handler(ctx) { diff --git a/lib/routes/cpta/handler.ts b/lib/routes/cpta/handler.ts index d8d40510a2c6e1..d5f34af89a4a7b 100644 --- a/lib/routes/cpta/handler.ts +++ b/lib/routes/cpta/handler.ts @@ -25,8 +25,8 @@ const NEWS_TYPES: Record = { }, }; -const handler: Route['handler'] = async (context) => { - const category = context.req.param('category'); +const handler: Route['handler'] = async (ctx) => { + const category = ctx.req.param('category'); const BASE_URL = NEWS_TYPES[category].baseUrl; // Fetch the index page const { data: listResponse } = await got(BASE_URL); diff --git a/lib/routes/cqwu/index.ts b/lib/routes/cqwu/index.ts index b5504871221191..9b1123fb15b485 100644 --- a/lib/routes/cqwu/index.ts +++ b/lib/routes/cqwu/index.ts @@ -31,8 +31,8 @@ export const route: Route = { maintainers: ['Fatpandac'], handler, description: `| 通知公告 | 学术活动公告 | - | -------- | ------------ | - | notify | academiceve |`, +| -------- | ------------ | +| notify | academiceve |`, }; async function handler(ctx) { diff --git a/lib/routes/crac/index.ts b/lib/routes/crac/index.ts index 3120f4e3c12c68..444d9e30f2ba17 100644 --- a/lib/routes/crac/index.ts +++ b/lib/routes/crac/index.ts @@ -21,8 +21,8 @@ export const route: Route = { maintainers: ['Misaka13514'], handler, description: `| 新闻动态 | 通知公告 | 政策法规 | 常见问题 | 资料下载 | English | 业余中继台 | 科普专栏 | - | -------- | -------- | -------- | -------- | -------- | ------- | ---------- | -------- | - | 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 |`, +| -------- | -------- | -------- | -------- | -------- | ------- | ---------- | -------- | +| 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 |`, }; async function handler(ctx) { diff --git a/lib/routes/cs/index.ts b/lib/routes/cs/index.ts index fd8aec323a2987..bcde4c99b1968d 100644 --- a/lib/routes/cs/index.ts +++ b/lib/routes/cs/index.ts @@ -19,51 +19,51 @@ export const route: Route = { parameters: { category: '分类,见下表,默认为首页' }, maintainers: ['nczitzk'], description: `| 要闻 | 公司 | 市场 | 基金 | - | ---- | ---- | ---- | ---- | - | xwzx | ssgs | gppd | tzjj | +| ---- | ---- | ---- | ---- | +| xwzx | ssgs | gppd | tzjj | - | 科创 | 产经 | 期货 | 海外 | - | ---- | ------ | -------- | ------ | - | 5g | cj2020 | zzqh2020 | hw2020 | +| 科创 | 产经 | 期货 | 海外 | +| ---- | ------ | -------- | ------ | +| 5g | cj2020 | zzqh2020 | hw2020 |
- 更多栏目 +更多栏目 - #### 要闻 +#### 要闻 - | 财经要闻 | 观点评论 | 民生消费 | - | -------- | -------- | --------- | - | xwzx/hg | xwzx/jr | xwzx/msxf | +| 财经要闻 | 观点评论 | 民生消费 | +| -------- | -------- | --------- | +| xwzx/hg | xwzx/jr | xwzx/msxf | - #### 公司 +#### 公司 - | 公司要闻 | 公司深度 | 公司巡礼 | - | --------- | --------- | --------- | - | ssgs/gsxw | ssgs/gssd | ssgs/gsxl | +| 公司要闻 | 公司深度 | 公司巡礼 | +| --------- | --------- | --------- | +| ssgs/gsxw | ssgs/gssd | ssgs/gsxl | - #### 市场 +#### 市场 - | A 股市场 | 港股资讯 | 债市研究 | 海外报道 | 期货报道 | - | --------- | --------- | --------- | --------- | --------- | - | gppd/gsyj | gppd/ggzx | gppd/zqxw | gppd/hwbd | gppd/qhbd | +| A 股市场 | 港股资讯 | 债市研究 | 海外报道 | 期货报道 | +| --------- | --------- | --------- | --------- | --------- | +| gppd/gsyj | gppd/ggzx | gppd/zqxw | gppd/hwbd | gppd/qhbd | - #### 基金 +#### 基金 - | 基金动态 | 基金视点 | 基金持仓 | 私募基金 | 基民学苑 | - | --------- | --------- | --------- | --------- | --------- | - | tzjj/jjdt | tzjj/jjks | tzjj/jjcs | tzjj/smjj | tzjj/tjdh | +| 基金动态 | 基金视点 | 基金持仓 | 私募基金 | 基民学苑 | +| --------- | --------- | --------- | --------- | --------- | +| tzjj/jjdt | tzjj/jjks | tzjj/jjcs | tzjj/smjj | tzjj/tjdh | - #### 机构 +#### 机构 - | 券商 | 银行 | 保险 | - | ---- | ---- | ---- | - | qs | yh | bx | +| 券商 | 银行 | 保险 | +| ---- | ---- | ---- | +| qs | yh | bx | - #### 其他 +#### 其他 - | 中证快讯 7x24 | IPO 鉴真 | 公司能见度 | - | ------------- | -------- | ---------- | - | sylm/jsbd | yc/ipojz | yc/gsnjd | +| 中证快讯 7x24 | IPO 鉴真 | 公司能见度 | +| ------------- | -------- | ---------- | +| sylm/jsbd | yc/ipojz | yc/gsnjd |
`, handler, }; diff --git a/lib/routes/cs/video.ts b/lib/routes/cs/video.ts index a84c50b6336cbd..090f665610a24c 100644 --- a/lib/routes/cs/video.ts +++ b/lib/routes/cs/video.ts @@ -19,7 +19,7 @@ export const route: Route = { }, name: '中证视频', description: `| 今日聚焦 | 传闻求证 | 高端访谈 | 投教课堂 | 直播汇 | - | -------- | -------- | -------- | -------- | ------ |`, +| -------- | -------- | -------- | -------- | ------ |`, maintainers: ['nczitzk'], handler, }; diff --git a/lib/routes/cste/index.ts b/lib/routes/cste/index.ts index f1dc4882e977cd..2ba81cbb238d7a 100644 --- a/lib/routes/cste/index.ts +++ b/lib/routes/cste/index.ts @@ -21,8 +21,8 @@ export const route: Route = { maintainers: ['nczitzk'], handler, description: `| 通知公告 | 学会新闻 | 科协简讯 | 学科动态 | 往事钩沉 | - | -------- | -------- | -------- | -------- | -------- | - | 16 | 18 | 19 | 20 | 21 |`, +| -------- | -------- | -------- | -------- | -------- | +| 16 | 18 | 19 | 20 | 21 |`, }; async function handler(ctx) { diff --git a/lib/routes/csu/cse.ts b/lib/routes/csu/cse.ts index 9876514eabf6a0..287ff19c061827 100644 --- a/lib/routes/csu/cse.ts +++ b/lib/routes/csu/cse.ts @@ -31,8 +31,8 @@ export const route: Route = { maintainers: ['j1g5awi'], handler, description: `| 类型 | 学院新闻 | 通知公告 | 学术信息 | 学工动态 | 科研动态 | - | ---- | -------- | -------- | -------- | -------- | -------- | - | 参数 | xyxw | tzgg | xsxx | xgdt | kydt |`, +| ---- | -------- | -------- | -------- | -------- | -------- | +| 参数 | xyxw | tzgg | xsxx | xgdt | kydt |`, }; async function handler(ctx) { diff --git a/lib/routes/csu/mail.ts b/lib/routes/csu/mail.ts index f8aeaf5628579d..0beb31e3296d88 100644 --- a/lib/routes/csu/mail.ts +++ b/lib/routes/csu/mail.ts @@ -28,8 +28,8 @@ export const route: Route = { maintainers: ['j1g5awi'], handler, description: `| 类型 | 校长信箱 | 党委信箱 | - | ---- | -------- | -------- | - | 参数 | 01 | 02 |`, +| ---- | -------- | -------- | +| 参数 | 01 | 02 |`, }; async function handler(ctx) { diff --git a/lib/routes/cts/news.ts b/lib/routes/cts/news.ts index 55101873cb330c..c06f49020335c7 100644 --- a/lib/routes/cts/news.ts +++ b/lib/routes/cts/news.ts @@ -27,8 +27,8 @@ export const route: Route = { maintainers: ['miles170'], handler, description: `| 即時 | 氣象 | 政治 | 國際 | 社會 | 運動 | 生活 | 財經 | 台語 | 地方 | 產業 | 綜合 | 藝文 | 娛樂 | - | ---- | ------- | -------- | ------------- | ------- | ------ | ---- | ----- | --------- | ----- | ---- | ------- | ---- | --------- | - | real | weather | politics | international | society | sports | life | money | taiwanese | local | pr | general | arts | entertain |`, +| ---- | ------- | -------- | ------------- | ------- | ------ | ---- | ----- | --------- | ----- | ---- | ------- | ---- | --------- | +| real | weather | politics | international | society | sports | life | money | taiwanese | local | pr | general | arts | entertain |`, }; async function handler(ctx) { diff --git a/lib/routes/cuilingmag/index.ts b/lib/routes/cuilingmag/index.ts index bf75296cc0e8b7..301ad6bb598186 100644 --- a/lib/routes/cuilingmag/index.ts +++ b/lib/routes/cuilingmag/index.ts @@ -144,14 +144,14 @@ export const route: Route = { 若订阅 [#哲学·文明](https://www.cuilingmag.com/category/philosophy_civilization),网址为 \`https://www.cuilingmag.com/category/philosophy_civilization\`。截取 \`https://www.cuilingmag.com/category\` 到末尾的部分 \`philosophy_civilization\` 作为参数填入,此时路由为 [\`/cuilingmag/philosophy_civilization\`](https://rsshub.app/cuilingmag/philosophy_civilization)。 ::: - | 分类 | ID | - | -------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | - | [哲学 · 文明](https://www.cuilingmag.com/category/philosophy_civilization) | [philosophy_civilization](https://rsshub.app/cuilingmag/philosophy_civilization) | - | [艺术 · 科技](https://www.cuilingmag.com/category/art_science) | [art_science](https://rsshub.app/cuilingmag/art_science) | - | [未来 · 生命](https://www.cuilingmag.com/category/future_life) | [future_life](https://rsshub.app/cuilingmag/future_life) | - | [行星智慧](https://www.cuilingmag.com/category/planetary_wisdom) | [planetary_wisdom](https://rsshub.app/cuilingmag/planetary_wisdom) | - | [数字治理](https://www.cuilingmag.com/category/digital_governance) | [digital_governance](https://rsshub.app/cuilingmag/digital_governance) | - | [Noema精选](https://www.cuilingmag.com/category/selected_noema) | [selected_noema](https://rsshub.app/cuilingmag/selected_noema) | +| 分类 | ID | +| -------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| [哲学 · 文明](https://www.cuilingmag.com/category/philosophy_civilization) | [philosophy_civilization](https://rsshub.app/cuilingmag/philosophy_civilization) | +| [艺术 · 科技](https://www.cuilingmag.com/category/art_science) | [art_science](https://rsshub.app/cuilingmag/art_science) | +| [未来 · 生命](https://www.cuilingmag.com/category/future_life) | [future_life](https://rsshub.app/cuilingmag/future_life) | +| [行星智慧](https://www.cuilingmag.com/category/planetary_wisdom) | [planetary_wisdom](https://rsshub.app/cuilingmag/planetary_wisdom) | +| [数字治理](https://www.cuilingmag.com/category/digital_governance) | [digital_governance](https://rsshub.app/cuilingmag/digital_governance) | +| [Noema精选](https://www.cuilingmag.com/category/selected_noema) | [selected_noema](https://rsshub.app/cuilingmag/selected_noema) | `, categories: ['new-media'], diff --git a/lib/routes/cursor/changelog.ts b/lib/routes/cursor/changelog.ts index 3a81f19315d665..fb6dc40f5f5d62 100644 --- a/lib/routes/cursor/changelog.ts +++ b/lib/routes/cursor/changelog.ts @@ -1,63 +1,106 @@ -import { Route } from '@/types'; +import { type Data, type DataItem, type Route, ViewType } from '@/types'; -import got from '@/utils/got'; -import { load } from 'cheerio'; +import ofetch from '@/utils/ofetch'; import { parseDate } from '@/utils/parse-date'; +import { type CheerioAPI, type Cheerio, type Element, load } from 'cheerio'; +import { type Context } from 'hono'; + +export const handler = async (ctx: Context): Promise => { + const limit: number = Number.parseInt(ctx.req.query('limit') ?? '100', 10); + + const baseUrl: string = 'https://www.cursor.com'; + const targetUrl: string = new URL('changelog', baseUrl).href; + + const response = await ofetch(targetUrl, { + headers: { + cookie: 'NEXT_LOCALE=en', + }, + }); + const $: CheerioAPI = load(response); + const language = $('html').attr('lang') ?? 'en'; + + const items: DataItem[] = $('article.relative') + .slice(0, limit) + .toArray() + .map((el): Element => { + const $el: Cheerio = $(el); + + const version: string = $el.find('div.items-center p').first().text(); + + const title: string = `[${version}] ${$el + .find(String.raw`h2 a.hover\:underline`) + .contents() + .first() + .text()}`; + const pubDateStr: string | undefined = $el.find('div.inline-flex p').first().text().trim(); + const linkUrl: string | undefined = $el.find(String.raw`h2 a.hover\:underline`).attr('href'); + const guid: string = `cursor-changelog-${version}`; + const upDatedStr: string | undefined = pubDateStr; + + const $h2El = $el.find('h2').first(); + + if ($h2El.length) { + $h2El.prevAll().remove(); + $h2El.remove(); + } + + const description: string = $el.html() || ''; + + const processedItem: DataItem = { + title, + description, + pubDate: pubDateStr ? parseDate(pubDateStr) : undefined, + link: linkUrl ? new URL(linkUrl, baseUrl).href : undefined, + guid, + id: guid, + content: { + html: description, + text: description, + }, + updated: upDatedStr ? parseDate(upDatedStr) : undefined, + language, + }; + + return processedItem; + }) + .filter((_): _ is DataItem => true); + + return { + title: $('title').text(), + description: $('meta[property="og:description"]').attr('content'), + link: targetUrl, + item: items, + allowEmpty: true, + image: $('meta[property="og:image"]').attr('content'), + language, + }; +}; + export const route: Route = { path: '/changelog', - categories: ['program-update'], - example: '/cursor/changelog', - url: 'www.cursor.com/changelog', name: 'Changelog', - maintainers: ['p3psi-boo'], + url: 'www.cursor.com', + maintainers: ['p3psi-boo', 'nczitzk'], + handler, + example: '/cursor/changelog', + parameters: undefined, + description: undefined, + categories: ['program-update'], + features: { + requireConfig: false, + requirePuppeteer: false, + antiCrawler: false, + supportRadar: true, + supportBT: false, + supportPodcast: false, + supportScihub: false, + }, radar: [ { source: ['www.cursor.com/changelog'], - target: '/cursor/changelog', + target: '/changelog', }, ], - handler, + view: ViewType.Articles, }; - -async function handler() { - const url = 'https://www.cursor.com/changelog'; - - const response = await got({ - method: 'get', - url, - }); - - const $ = load(response.data); - - const alist = $('article'); - - const list = alist.toArray().map((item) => { - const leftSide = item.firstChild! as unknown as Element; - const version = $(leftSide.firstChild!).text(); - const dateLabel = $(leftSide.lastChild!).text(); - const date = parseDate(dateLabel); - - // 从第二个子元素开始到结束都是内容 - const content = item.children - .slice(1) - .map((child) => $(child).html()) - .join(''); - const titleElement = $('h2 a', item); - const link = titleElement.attr('href'); - const title = titleElement.text(); - - return { - title: `${version} - ${title}`, - description: content, - link: `https://www.cursor.com${link}`, - pubDate: date, - }; - }); - - return { - title: 'Cursor Changelog', - link: 'https://www.cursor.com/changelog', - item: list, - }; -} diff --git a/lib/routes/cw/master.ts b/lib/routes/cw/master.ts index 3fcc3e36035e37..aa34fb7b45d774 100644 --- a/lib/routes/cw/master.ts +++ b/lib/routes/cw/master.ts @@ -19,20 +19,20 @@ export const route: Route = { maintainers: ['TonyRL'], handler, description: `| 主頻道名稱 | 主頻道 ID | - | ---------- | --------- | - | 財經 | 8 | - | 產業 | 7 | - | 國際 | 9 | - | 管理 | 10 | - | 環境 | 12 | - | 教育 | 13 | - | 人物 | 14 | - | 政治社會 | 77 | - | 調查排行 | 15 | - | 健康關係 | 79 | - | 時尚品味 | 11 | - | 運動生活 | 103 | - | 重磅外媒 | 16 |`, +| ---------- | --------- | +| 財經 | 8 | +| 產業 | 7 | +| 國際 | 9 | +| 管理 | 10 | +| 環境 | 12 | +| 教育 | 13 | +| 人物 | 14 | +| 政治社會 | 77 | +| 調查排行 | 15 | +| 健康關係 | 79 | +| 時尚品味 | 11 | +| 運動生活 | 103 | +| 重磅外媒 | 16 |`, }; async function handler(ctx) { diff --git a/lib/routes/cyzone/index.ts b/lib/routes/cyzone/index.ts index 11cf7f8bc797a7..92683285ae4c95 100644 --- a/lib/routes/cyzone/index.ts +++ b/lib/routes/cyzone/index.ts @@ -14,16 +14,16 @@ export const route: Route = { maintainers: ['nczitzk'], handler, description: `| 最新 | 快鲤鱼 | 创投 | 科创板 | 汽车 | - | ---- | ------ | ---- | ------ | ---- | - | news | 5 | 14 | 13 | 8 | +| ---- | ------ | ---- | ------ | ---- | +| news | 5 | 14 | 13 | 8 | - | 海外 | 消费 | 科技 | 医疗 | 文娱 | - | ---- | ---- | ---- | ---- | ---- | - | 10 | 9 | 7 | 27 | 11 | +| 海外 | 消费 | 科技 | 医疗 | 文娱 | +| ---- | ---- | ---- | ---- | ---- | +| 10 | 9 | 7 | 27 | 11 | - | 城市 | 政策 | 特写 | 干货 | 科技股 | - | ---- | ---- | ---- | ---- | ------ | - | 16 | 15 | 6 | 12 | 33 |`, +| 城市 | 政策 | 特写 | 干货 | 科技股 | +| ---- | ---- | ---- | ---- | ------ | +| 16 | 15 | 6 | 12 | 33 |`, }; async function handler(ctx) { diff --git a/lib/routes/dahecube/index.ts b/lib/routes/dahecube/index.ts index 1f3c7794e40cd9..16d5a8bcfe5b00 100644 --- a/lib/routes/dahecube/index.ts +++ b/lib/routes/dahecube/index.ts @@ -22,8 +22,8 @@ export const route: Route = { maintainers: ['linbuxiao'], handler, description: `| 推荐 | 党史 | 豫股 | 财经 | 投教 | 金融 | 科创 | 投融 | 专栏 | - | --------- | ------- | ----- | -------- | --------- | ------- | ------- | ------ | ------ | - | recommend | history | stock | business | education | finance | science | invest | column |`, +| --------- | ------- | ----- | -------- | --------- | ------- | ------- | ------ | ------ | +| recommend | history | stock | business | education | finance | science | invest | column |`, }; async function handler(ctx) { diff --git a/lib/routes/dangdang/notice.ts b/lib/routes/dangdang/notice.ts index f80069b1a589b9..d21414facdbf29 100644 --- a/lib/routes/dangdang/notice.ts +++ b/lib/routes/dangdang/notice.ts @@ -31,10 +31,10 @@ export const route: Route = { maintainers: ['353325487'], handler, description: `| 类型 | type | - | -------- | ---- | - | 全部 | 0 | - | 其他 | 1 | - | 规则变更 | 2 |`, +| -------- | ---- | +| 全部 | 0 | +| 其他 | 1 | +| 规则变更 | 2 |`, }; async function handler(ctx) { diff --git a/lib/routes/dayanzai/index.ts b/lib/routes/dayanzai/index.ts index 7bf7d675f6c213..7fecbc7b42d0d1 100644 --- a/lib/routes/dayanzai/index.ts +++ b/lib/routes/dayanzai/index.ts @@ -30,8 +30,8 @@ export const route: Route = { maintainers: [], handler, description: `| 微软应用 | 安卓应用 | 教程资源 | 其他资源 | - | -------- | -------- | -------- | -------- | - | windows | android | tutorial | other |`, +| -------- | -------- | -------- | -------- | +| windows | android | tutorial | other |`, }; async function handler(ctx) { diff --git a/lib/routes/dcfever/news.ts b/lib/routes/dcfever/news.ts index ff2235fb428dfa..36d195609d6053 100644 --- a/lib/routes/dcfever/news.ts +++ b/lib/routes/dcfever/news.ts @@ -18,8 +18,8 @@ export const route: Route = { }, ], description: `| 所有新聞 | 攝影器材 | 手機通訊 | 汽車熱話 | 攝影文化 | 影片攝錄 | 測試報告 | 生活科技 | 攝影技巧 | - | -------- | -------- | -------- | -------- | ----------- | ----------- | -------- | -------- | --------- | - | | camera | mobile | auto | photography | videography | reviews | gadget | technique |`, +| -------- | -------- | -------- | -------- | ----------- | ----------- | -------- | -------- | --------- | +| | camera | mobile | auto | photography | videography | reviews | gadget | technique |`, }; async function handler(ctx) { diff --git a/lib/routes/dcfever/reviews.ts b/lib/routes/dcfever/reviews.ts index 61e58354fb43be..f5f393a012594d 100644 --- a/lib/routes/dcfever/reviews.ts +++ b/lib/routes/dcfever/reviews.ts @@ -18,8 +18,8 @@ export const route: Route = { maintainers: ['TonyRL'], handler, description: `| 相機及鏡頭 | 手機平板 | 試車報告 | - | ---------- | -------- | -------- | - | cameras | phones | cars |`, +| ---------- | -------- | -------- | +| cameras | phones | cars |`, }; async function handler(ctx) { diff --git a/lib/routes/dcfever/trading.ts b/lib/routes/dcfever/trading.ts index 6c994e910f50e3..31396540b4e1df 100644 --- a/lib/routes/dcfever/trading.ts +++ b/lib/routes/dcfever/trading.ts @@ -14,9 +14,9 @@ export const route: Route = { handler, description: `[所有物品分類](https://www.dcfever.com/trading/index.php#all_cats) - | 攝影產品 | 電腦 | 手機通訊 | 影音產品 | 遊戲機、模型 | 電器傢俱 | 潮流服飾 | 手錶 | 單車及運動 | 其它 | - | -------- | ---- | -------- | -------- | ------------ | -------- | -------- | ---- | ---------- | ---- | - | 1 | 2 | 3 | 44 | 43 | 104 | 45 | 99 | 109 | 4 |`, +| 攝影產品 | 電腦 | 手機通訊 | 影音產品 | 遊戲機、模型 | 電器傢俱 | 潮流服飾 | 手錶 | 單車及運動 | 其它 | +| -------- | ---- | -------- | -------- | ------------ | -------- | -------- | ---- | ---------- | ---- | +| 1 | 2 | 3 | 44 | 43 | 104 | 45 | 99 | 109 | 4 |`, }; async function handler(ctx) { diff --git a/lib/routes/dedao/index.ts b/lib/routes/dedao/index.ts index bd713c36e01870..288c98077be568 100644 --- a/lib/routes/dedao/index.ts +++ b/lib/routes/dedao/index.ts @@ -12,8 +12,8 @@ export const route: Route = { example: '/dedao', parameters: { category: '分类,见下表,默认为`news`' }, description: `| 新闻 | 人物故事 | 视频 | - | ---- | ---- | ---- | - | news | figure | video |`, +| ---- | ---- | ---- | +| news | figure | video |`, handler, }; diff --git a/lib/routes/dedao/user.ts b/lib/routes/dedao/user.ts index e679ab52143113..c2b8fb4d9da2b9 100644 --- a/lib/routes/dedao/user.ts +++ b/lib/routes/dedao/user.ts @@ -30,8 +30,8 @@ export const route: Route = { maintainers: ['nczitzk'], handler, description: `| 动态 | 书评 | 视频 | - | ---- | ---- | ---- | - | 0 | 7 | 12 |`, +| ---- | ---- | ---- | +| 0 | 7 | 12 |`, }; async function handler(ctx) { diff --git a/lib/routes/deeplearning/the-batch.ts b/lib/routes/deeplearning/the-batch.ts index 04ae311a5ab45f..5abe989dc12da0 100644 --- a/lib/routes/deeplearning/the-batch.ts +++ b/lib/routes/deeplearning/the-batch.ts @@ -150,32 +150,32 @@ export const route: Route = { ::: - | Tag | ID | - | ---------------------------------------------------------------------- | -------------------------------------------------------------------- | - | [Weekly Issues](https://www.deeplearning.ai/the-batch/) | [*null*](https://rsshub.app/deeplearning/the-batch) | - | [Andrew's Letters](https://www.deeplearning.ai/the-batch/tag/letters/) | [letters](https://rsshub.app/deeplearning/the-batch/letters) | - | [Data Points](https://www.deeplearning.ai/the-batch/tag/data-points/) | [data-points](https://rsshub.app/deeplearning/the-batch/data-points) | - | [ML Research](https://www.deeplearning.ai/the-batch/tag/research/) | [research](https://rsshub.app/deeplearning/the-batch/research) | - | [Business](https://www.deeplearning.ai/the-batch/tag/business/) | [business](https://rsshub.app/deeplearning/the-batch/business) | - | [Science](https://www.deeplearning.ai/the-batch/tag/science/) | [science](https://rsshub.app/deeplearning/the-batch/science) | - | [AI & Society](https://www.deeplearning.ai/the-batch/tag/ai-society/) | [ai-society](https://rsshub.app/deeplearning/the-batch/ai-society) | - | [Culture](https://www.deeplearning.ai/the-batch/tag/culture/) | [culture](https://rsshub.app/deeplearning/the-batch/culture) | - | [Hardware](https://www.deeplearning.ai/the-batch/tag/hardware/) | [hardware](https://rsshub.app/deeplearning/the-batch/hardware) | - | [AI Careers](https://www.deeplearning.ai/the-batch/tag/ai-careers/) | [ai-careers](https://rsshub.app/deeplearning/the-batch/ai-careers) | +| Tag | ID | +| ---------------------------------------------------------------------- | -------------------------------------------------------------------- | +| [Weekly Issues](https://www.deeplearning.ai/the-batch/) | [*null*](https://rsshub.app/deeplearning/the-batch) | +| [Andrew's Letters](https://www.deeplearning.ai/the-batch/tag/letters/) | [letters](https://rsshub.app/deeplearning/the-batch/letters) | +| [Data Points](https://www.deeplearning.ai/the-batch/tag/data-points/) | [data-points](https://rsshub.app/deeplearning/the-batch/data-points) | +| [ML Research](https://www.deeplearning.ai/the-batch/tag/research/) | [research](https://rsshub.app/deeplearning/the-batch/research) | +| [Business](https://www.deeplearning.ai/the-batch/tag/business/) | [business](https://rsshub.app/deeplearning/the-batch/business) | +| [Science](https://www.deeplearning.ai/the-batch/tag/science/) | [science](https://rsshub.app/deeplearning/the-batch/science) | +| [AI & Society](https://www.deeplearning.ai/the-batch/tag/ai-society/) | [ai-society](https://rsshub.app/deeplearning/the-batch/ai-society) | +| [Culture](https://www.deeplearning.ai/the-batch/tag/culture/) | [culture](https://rsshub.app/deeplearning/the-batch/culture) | +| [Hardware](https://www.deeplearning.ai/the-batch/tag/hardware/) | [hardware](https://rsshub.app/deeplearning/the-batch/hardware) | +| [AI Careers](https://www.deeplearning.ai/the-batch/tag/ai-careers/) | [ai-careers](https://rsshub.app/deeplearning/the-batch/ai-careers) | - #### [Letters from Andrew Ng](https://www.deeplearning.ai/the-batch/tag/letters/) +#### [Letters from Andrew Ng](https://www.deeplearning.ai/the-batch/tag/letters/) - | Tag | ID | - | --------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | - | [All](https://www.deeplearning.ai/the-batch/tag/letters/) | [letters](https://rsshub.app/deeplearning/the-batch/letters) | - | [Personal Insights](https://www.deeplearning.ai/the-batch/tag/personal-insights/) | [personal-insights](https://rsshub.app/deeplearning/the-batch/personal-insights) | - | [Technical Insights](https://www.deeplearning.ai/the-batch/tag/technical-insights/) | [technical-insights](https://rsshub.app/deeplearning/the-batch/technical-insights) | - | [Business Insights](https://www.deeplearning.ai/the-batch/tag/business-insights/) | [business-insights](https://rsshub.app/deeplearning/the-batch/business-insights) | - | [Tech & Society](https://www.deeplearning.ai/the-batch/tag/tech-society/) | [tech-society](https://rsshub.app/deeplearning/the-batch/tech-society) | - | [DeepLearning.AI News](https://www.deeplearning.ai/the-batch/tag/deeplearning-ai-news/) | [deeplearning-ai-news](https://rsshub.app/deeplearning/the-batch/deeplearning-ai-news) | - | [AI Careers](https://www.deeplearning.ai/the-batch/tag/ai-careers/) | [ai-careers](https://rsshub.app/deeplearning/the-batch/ai-careers) | - | [Just For Fun](https://www.deeplearning.ai/the-batch/tag/just-for-fun/) | [just-for-fun](https://rsshub.app/deeplearning/the-batch/just-for-fun) | - | [Learning & Education](https://www.deeplearning.ai/the-batch/tag/learning-education/) | [learning-education](https://rsshub.app/deeplearning/the-batch/learning-education) | +| Tag | ID | +| --------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| [All](https://www.deeplearning.ai/the-batch/tag/letters/) | [letters](https://rsshub.app/deeplearning/the-batch/letters) | +| [Personal Insights](https://www.deeplearning.ai/the-batch/tag/personal-insights/) | [personal-insights](https://rsshub.app/deeplearning/the-batch/personal-insights) | +| [Technical Insights](https://www.deeplearning.ai/the-batch/tag/technical-insights/) | [technical-insights](https://rsshub.app/deeplearning/the-batch/technical-insights) | +| [Business Insights](https://www.deeplearning.ai/the-batch/tag/business-insights/) | [business-insights](https://rsshub.app/deeplearning/the-batch/business-insights) | +| [Tech & Society](https://www.deeplearning.ai/the-batch/tag/tech-society/) | [tech-society](https://rsshub.app/deeplearning/the-batch/tech-society) | +| [DeepLearning.AI News](https://www.deeplearning.ai/the-batch/tag/deeplearning-ai-news/) | [deeplearning-ai-news](https://rsshub.app/deeplearning/the-batch/deeplearning-ai-news) | +| [AI Careers](https://www.deeplearning.ai/the-batch/tag/ai-careers/) | [ai-careers](https://rsshub.app/deeplearning/the-batch/ai-careers) | +| [Just For Fun](https://www.deeplearning.ai/the-batch/tag/just-for-fun/) | [just-for-fun](https://rsshub.app/deeplearning/the-batch/just-for-fun) | +| [Learning & Education](https://www.deeplearning.ai/the-batch/tag/learning-education/) | [learning-education](https://rsshub.app/deeplearning/the-batch/learning-education) | `, categories: ['programming'], diff --git a/lib/routes/dehenglaw/index.ts b/lib/routes/dehenglaw/index.ts index ed38751715cb40..630b9012c1194b 100644 --- a/lib/routes/dehenglaw/index.ts +++ b/lib/routes/dehenglaw/index.ts @@ -93,9 +93,9 @@ export const route: Route = { description: `::: tip 若订阅 [专业文章](https://dehenglaw.com/),网址为 \`https://www.dehenglaw.com/CN/paper/0008/000902.aspx\`。截取 \`https://dehenglaw.com/\` 到末尾 \`/0008/000902.aspx\` 的部分 \`CN/paper\` 作为参数填入,此时路由为 [\`/dehenglaw/CN/paper\`](https://rsshub.app/dehenglaw/CN/paper)。 - | 专业文章 | 出版物 | 德恒论坛 | - | -------- | ------- | -------- | - | paper | publish | luntan | +| 专业文章 | 出版物 | 德恒论坛 | +| -------- | ------- | -------- | +| paper | publish | luntan | :::`, categories: ['new-media'], diff --git a/lib/routes/dewu/declaration.ts b/lib/routes/dewu/declaration.ts index 9a3247985f4395..0e6e8f4c567d84 100644 --- a/lib/routes/dewu/declaration.ts +++ b/lib/routes/dewu/declaration.ts @@ -32,11 +32,11 @@ export const route: Route = { maintainers: ['blade0910'], handler, description: `| 类型 | type | - | ---------------- | ---------- | - | 技术变更 | 1010580020 | - | 服务市场规则中心 | 1014821004 | - | 规则变更 | 1011202692 | - | 维护公告 | 1010568195 |`, +| ---------------- | ---------- | +| 技术变更 | 1010580020 | +| 服务市场规则中心 | 1014821004 | +| 规则变更 | 1011202692 | +| 维护公告 | 1010568195 |`, }; async function handler(ctx) { diff --git a/lib/routes/dhu/jiaowu/news.ts b/lib/routes/dhu/jiaowu/news.ts index 704096d5dcbb8b..2589b5964f7aef 100644 --- a/lib/routes/dhu/jiaowu/news.ts +++ b/lib/routes/dhu/jiaowu/news.ts @@ -29,8 +29,8 @@ export const route: Route = { maintainers: ['KiraKiseki'], handler, description: `| 学生专栏 | 教师专栏 | 选课专栏(仅选课期间开放) | 辅修专业 | - | -------- | -------- | -------- | -------- | - | student | teacher | class | fxzy |`, +| -------- | -------- | -------- | -------- | +| student | teacher | class | fxzy |`, }; async function handler(ctx) { diff --git a/lib/routes/dhu/yjs/news.ts b/lib/routes/dhu/yjs/news.ts index 24146d267f530c..9e8f9e0e237097 100644 --- a/lib/routes/dhu/yjs/news.ts +++ b/lib/routes/dhu/yjs/news.ts @@ -28,8 +28,8 @@ export const route: Route = { maintainers: ['fox2049'], handler, description: `| 新闻动态 | 通知公告 | 选课考试 | - | -------- | -------- | -------- | - | trend | notice | class |`, +| -------- | -------- | -------- | +| trend | notice | class |`, }; async function handler(ctx) { diff --git a/lib/routes/dhu/yjs/zs.ts b/lib/routes/dhu/yjs/zs.ts index 62b7c2ecf4d2bc..a098619fb07815 100644 --- a/lib/routes/dhu/yjs/zs.ts +++ b/lib/routes/dhu/yjs/zs.ts @@ -27,8 +27,8 @@ export const route: Route = { maintainers: ['fox2049'], handler, description: `| 博士招生 | 硕士招生 | - | -------- | -------- | - | doctor | master |`, +| -------- | -------- | +| doctor | master |`, }; async function handler(ctx) { diff --git a/lib/routes/diandong/news.ts b/lib/routes/diandong/news.ts index 2bbd4dde55d2df..a11f449346b74c 100644 --- a/lib/routes/diandong/news.ts +++ b/lib/routes/diandong/news.ts @@ -42,9 +42,9 @@ export const route: Route = { url: 'diandong.com/news', description: `分类 - | 推荐 | 新车 | 导购 | 试驾 | 用车 | 技术 | 政策 | 行业 | - | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | - | 0 | 29 | 61 | 30 | 75 | 22 | 24 | 23 |`, +| 推荐 | 新车 | 导购 | 试驾 | 用车 | 技术 | 政策 | 行业 | +| ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | +| 0 | 29 | 61 | 30 | 75 | 22 | 24 | 23 |`, }; async function handler(ctx) { diff --git a/lib/routes/dlsite/new.ts b/lib/routes/dlsite/new.ts index ed26f19234dab4..d4914af0ffd274 100644 --- a/lib/routes/dlsite/new.ts +++ b/lib/routes/dlsite/new.ts @@ -74,8 +74,8 @@ export const route: Route = { maintainers: ['cssxsh'], handler, description: `| Doujin | Comics | PC Games | Doujin (R18) | Adult Comics | H Games | Otome | BL | - | ------ | ------ | -------- | ------------ | ------------ | ------- | ----- | -- | - | home | comic | soft | maniax | books | pro | girls | bl |`, +| ------ | ------ | -------- | ------------ | ------------ | ------- | ----- | -- | +| home | comic | soft | maniax | books | pro | girls | bl |`, }; async function handler(ctx) { diff --git a/lib/routes/dmzj/news.ts b/lib/routes/dmzj/news.ts index dc6bee5688446c..34e2604169b2f0 100644 --- a/lib/routes/dmzj/news.ts +++ b/lib/routes/dmzj/news.ts @@ -28,8 +28,8 @@ export const route: Route = { handler, url: 'news.dmzj.com/', description: `| 漫画情报 | 轻小说情报 | 动漫周边 | 声优情报 | 音乐资讯 | 游戏资讯 | 美图欣赏 | 漫展情报 | 大杂烩 | - | ------------- | ------------------- | -------------- | --------------- | ----------- | ---------- | ------------- | -------------- | ------- | - | manhuaqingbao | qingxiaoshuoqingbao | manhuazhoubian | shengyouqingbao | yinyuezixun | youxizixun | meituxinshang | manzhanqingbao | dazahui |`, +| ------------- | ------------------- | -------------- | --------------- | ----------- | ---------- | ------------- | -------------- | ------- | +| manhuaqingbao | qingxiaoshuoqingbao | manhuazhoubian | shengyouqingbao | yinyuezixun | youxizixun | meituxinshang | manzhanqingbao | dazahui |`, }; async function handler(ctx) { diff --git a/lib/routes/dn/news.ts b/lib/routes/dn/news.ts index 1f5015c6695fd5..ae9fdfe98f2f17 100644 --- a/lib/routes/dn/news.ts +++ b/lib/routes/dn/news.ts @@ -28,18 +28,18 @@ export const route: Route = { handler, description: `#### Language - | English | 中文 | - | ------- | ----- | - | en-us | zh-cn | - - #### Category - - | English Category | 中文分类 | Category id | - | -------------------- | -------- | ----------- | - | The Latest | 最新 | | - | Industry Information | 行业资讯 | category-1 | - | Knowledge | 域名知识 | category-2 | - | Investment | 域名投资 | category-3 |`, +| English | 中文 | +| ------- | ----- | +| en-us | zh-cn | + +#### Category + +| English Category | 中文分类 | Category id | +| -------------------- | -------- | ----------- | +| The Latest | 最新 | | +| Industry Information | 行业资讯 | category-1 | +| Knowledge | 域名知识 | category-2 | +| Investment | 域名投资 | category-3 |`, }; async function handler(ctx) { diff --git a/lib/routes/docschina/weekly.ts b/lib/routes/docschina/weekly.ts index a3486580716e52..421bd84fa526eb 100644 --- a/lib/routes/docschina/weekly.ts +++ b/lib/routes/docschina/weekly.ts @@ -18,8 +18,8 @@ export const route: Route = { maintainers: ['daijinru', 'hestudy'], handler, description: `| javascript | node | react | - | ---------- | ---- | ----- | - | js | node | react |`, +| ---------- | ---- | ----- | +| js | node | react |`, radar: [ { source: ['docschina.org/news/weekly/js/*', 'docschina.org/news/weekly/js', 'docschina.org/'], diff --git a/lib/routes/dongqiudi/special.ts b/lib/routes/dongqiudi/special.ts index 3fc0bae8d3eb8d..eea213981796d0 100644 --- a/lib/routes/dongqiudi/special.ts +++ b/lib/routes/dongqiudi/special.ts @@ -18,8 +18,8 @@ export const route: Route = { maintainers: ['dxmpalb'], handler, description: `| 新闻大爆炸 | 懂球帝十佳球 | 懂球帝本周 MVP | - | ---------- | ------------ | -------------- | - | 41 | 52 | 53 |`, +| ---------- | ------------ | -------------- | +| 41 | 52 | 53 |`, }; async function handler(ctx) { diff --git a/lib/routes/dongqiudi/top-news.ts b/lib/routes/dongqiudi/top-news.ts index 58b6f5c648dc27..43d5c7b7c8a166 100644 --- a/lib/routes/dongqiudi/top-news.ts +++ b/lib/routes/dongqiudi/top-news.ts @@ -27,8 +27,8 @@ export const route: Route = { maintainers: ['HendricksZheng'], handler, description: `| 头条 | 深度 | 闲情 | D 站 | 中超 | 国际 | 英超 | 西甲 | 意甲 | 德甲 | - | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | - | 1 | 55 | 37 | 219 | 56 | 120 | 3 | 5 | 4 | 6 |`, +| ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | +| 1 | 55 | 37 | 219 | 56 | 120 | 3 | 5 | 4 | 6 |`, }; async function handler(ctx) { diff --git a/lib/routes/douban/book/latest.ts b/lib/routes/douban/book/latest.ts index 5dd33b905d3863..e9da797841e43d 100644 --- a/lib/routes/douban/book/latest.ts +++ b/lib/routes/douban/book/latest.ts @@ -21,8 +21,8 @@ export const route: Route = { name: '新书速递', maintainers: ['fengkx', 'lyqluis'], description: `| 文学 | 小说 | 历史文化 | 社会纪实 | 科学新知 | 艺术设计 | 商业经管 | 绘本漫画 | - | ------------ | ------- | -------- | --------- | -------- | -------- | -------- | -------- | - | prose_poetry | fiction | history | biography | science | art | business | comics |`, +| ------------ | ------- | -------- | --------- | -------- | -------- | -------- | -------- | +| prose_poetry | fiction | history | biography | science | art | business | comics |`, handler, }; diff --git a/lib/routes/douban/book/rank.ts b/lib/routes/douban/book/rank.ts index 8283f2a9cd84b5..132fd52cc7e9b7 100644 --- a/lib/routes/douban/book/rank.ts +++ b/lib/routes/douban/book/rank.ts @@ -18,8 +18,8 @@ export const route: Route = { maintainers: ['xyqfer', 'queensferryme'], handler, description: `| 全部 | 虚构 | 非虚构 | - | ---- | ------- | ---------- | - | | fiction | nonfiction |`, +| ---- | ------- | ---------- | +| | fiction | nonfiction |`, }; async function handler(ctx) { diff --git a/lib/routes/douban/channel/subject.ts b/lib/routes/douban/channel/subject.ts index c25556a53aa610..b90e2ac216f2d0 100644 --- a/lib/routes/douban/channel/subject.ts +++ b/lib/routes/douban/channel/subject.ts @@ -18,8 +18,8 @@ export const route: Route = { maintainers: ['umm233'], handler, description: `| 电影 | 电视剧 | 图书 | 唱片 | - | ---- | ------ | ---- | ---- | - | 0 | 1 | 2 | 3 |`, +| ---- | ------ | ---- | ---- | +| 0 | 1 | 2 | 3 |`, }; async function handler(ctx) { diff --git a/lib/routes/douban/channel/topic.ts b/lib/routes/douban/channel/topic.ts index 26c8c9a24f6c04..5d2734e57ae13a 100644 --- a/lib/routes/douban/channel/topic.ts +++ b/lib/routes/douban/channel/topic.ts @@ -18,8 +18,8 @@ export const route: Route = { maintainers: ['umm233'], handler, description: `| 默认 | 热门 | 最新 | - | ------- | ---- | ---- | - | default | hot | new |`, +| ------- | ---- | ---- | +| default | hot | new |`, }; async function handler(ctx) { diff --git a/lib/routes/douban/other/jobs.ts b/lib/routes/douban/other/jobs.ts index cbaa6b537c78fe..8ba037897d4bd4 100644 --- a/lib/routes/douban/other/jobs.ts +++ b/lib/routes/douban/other/jobs.ts @@ -27,8 +27,8 @@ export const route: Route = { maintainers: ['Fatpandac'], handler, description: `| 社会招聘 | 校园招聘 | 实习生招聘 | - | :------: | :------: | :--------: | - | social | campus | intern |`, +| :------: | :------: | :--------: | +| social | campus | intern |`, }; async function handler(ctx) { diff --git a/lib/routes/douban/other/latest-music.ts b/lib/routes/douban/other/latest-music.ts index 2bd39e43a150cd..2715b3505323d7 100644 --- a/lib/routes/douban/other/latest-music.ts +++ b/lib/routes/douban/other/latest-music.ts @@ -19,8 +19,8 @@ export const route: Route = { maintainers: ['fengkx', 'xyqfer'], handler, description: `| 华语 | 欧美 | 日韩 | - | ------- | ------- | ----------- | - | chinese | western | japankorean |`, +| ------- | ------- | ----------- | +| chinese | western | japankorean |`, }; async function handler(ctx) { diff --git a/lib/routes/douban/other/list.ts b/lib/routes/douban/other/list.ts index 79900b4b6d79bd..b4c5f237afa88b 100644 --- a/lib/routes/douban/other/list.ts +++ b/lib/routes/douban/other/list.ts @@ -30,31 +30,31 @@ export const route: Route = { maintainers: ['5upernova-heng', 'honue'], handler, description: `| 榜单 / 集合 | 路由 | - | ------------------ | ----------------------------- | - | 实时热门书影音 | subject\_real\_time\_hotest | - | 影院热映 | movie\_showing | - | 实时热门电影 | movie\_real\_time\_hotest | - | 实时热门电视 | tv\_real\_time\_hotest | - | 一周口碑电影榜 | movie\_weekly\_best | - | 华语口碑剧集榜 | tv\_chinese\_best\_weekly | - | 全球口碑剧集榜 | tv\_global\_best\_weekly | - | 国内口碑综艺榜 | show\_chinese\_best\_weekly | - | 国外口碑综艺榜 | show\_global\_best\_weekly | - | 热播新剧国产剧 | tv\_domestic | - | 热播新剧欧美剧 | tv\_american | - | 热播新剧日剧 | tv\_japanese | - | 热播新剧韩剧 | tv\_korean | - | 热播新剧动画 | tv\_animation | - | 虚构类小说热门榜 | book\_fiction\_hot\_weekly | - | 非虚构类小说热门榜 | book\_nonfiction\_hot\_weekly | - | 热门单曲榜 | music\_single | - | 华语新碟榜 | music\_chinese | - | ... | ... | +| ------------------ | ----------------------------- | +| 实时热门书影音 | subject\_real\_time\_hotest | +| 影院热映 | movie\_showing | +| 实时热门电影 | movie\_real\_time\_hotest | +| 实时热门电视 | tv\_real\_time\_hotest | +| 一周口碑电影榜 | movie\_weekly\_best | +| 华语口碑剧集榜 | tv\_chinese\_best\_weekly | +| 全球口碑剧集榜 | tv\_global\_best\_weekly | +| 国内口碑综艺榜 | show\_chinese\_best\_weekly | +| 国外口碑综艺榜 | show\_global\_best\_weekly | +| 热播新剧国产剧 | tv\_domestic | +| 热播新剧欧美剧 | tv\_american | +| 热播新剧日剧 | tv\_japanese | +| 热播新剧韩剧 | tv\_korean | +| 热播新剧动画 | tv\_animation | +| 虚构类小说热门榜 | book\_fiction\_hot\_weekly | +| 非虚构类小说热门榜 | book\_nonfiction\_hot\_weekly | +| 热门单曲榜 | music\_single | +| 华语新碟榜 | music\_chinese | +| ... | ... | - | 额外参数 | 含义 | 接受的值 | 默认值 | - | -------- | ---------------------- | -------- | ------ | - | playable | 仅看有可播放片源的影片 | 0/1 | 0 | - | score | 筛选评分 | 0-10 | 0 | +| 额外参数 | 含义 | 接受的值 | 默认值 | +| -------- | ---------------------- | -------- | ------ | +| playable | 仅看有可播放片源的影片 | 0/1 | 0 | +| score | 筛选评分 | 0-10 | 0 | 用例:\`/douban/list/tv_korean/playable=1&score=8\` diff --git a/lib/routes/douban/other/recommended.ts b/lib/routes/douban/other/recommended.ts index 8d607a3672deb2..840ed1e9164b91 100644 --- a/lib/routes/douban/other/recommended.ts +++ b/lib/routes/douban/other/recommended.ts @@ -24,9 +24,9 @@ export const route: Route = { maintainers: ['honue'], handler, description: `| 额外参数 | 含义 | 接受的值 | 默认值 | - | -------- | ---------------------- | -------- | ------ | - | playable | 仅看有可播放片源的影片 | 0/1 | 0 | - | score | 筛选评分 | 0-10 | 0 | +| -------- | ---------------------- | -------- | ------ | +| playable | 仅看有可播放片源的影片 | 0/1 | 0 | +| score | 筛选评分 | 0-10 | 0 | 用例:\`/douban/recommended/tv/playable=0&score=8\` diff --git a/lib/routes/douban/other/weekly-best.ts b/lib/routes/douban/other/weekly-best.ts index b2b35b1c5be830..fab2d55aac39d2 100644 --- a/lib/routes/douban/other/weekly-best.ts +++ b/lib/routes/douban/other/weekly-best.ts @@ -23,8 +23,8 @@ export const route: Route = { maintainers: ['numm233', 'nczitzk'], handler, description: `| 一周口碑电影榜 | 华语口碑剧集榜 | - | ------------------- | ------------------------- | - | movie\_weekly\_best | tv\_chinese\_best\_weekly |`, +| ------------------- | ------------------------- | +| movie\_weekly\_best | tv\_chinese\_best\_weekly |`, }; async function handler(ctx) { diff --git a/lib/routes/douban/people/status.ts b/lib/routes/douban/people/status.ts index 1138a426b9731f..5f127195b3c39d 100644 --- a/lib/routes/douban/people/status.ts +++ b/lib/routes/douban/people/status.ts @@ -22,21 +22,21 @@ export const route: Route = { 对于豆瓣用户广播内容,在 \`routeParams\` 参数中以 query string 格式设置如下选项可以控制输出的样式 - | 键 | 含义 | 接受的值 | 默认值 | - | -------------------------- | -------------------------------------------------------------- | -------------- | ------ | - | readable | 是否开启细节排版可读性优化 | 0/1/true/false | false | - | authorNameBold | 是否加粗作者名字 | 0/1/true/false | false | - | showAuthorInTitle | 是否在标题处显示作者 | 0/1/true/false | true | - | showAuthorInDesc | 是否在正文处显示作者 | 0/1/true/false | false | - | showAuthorAvatarInDesc | 是否在正文处显示作者头像(若阅读器会提取正文图片,不建议开启) | 0/1/true/false | false | - | showEmojiForRetweet | 显示 “🔁” 取代 “Fw”(转发) | 0/1/true/false | false | - | showRetweetTextInTitle | 在标题出显示转发评论(置为 false 则在标题只显示被转发的广播) | 0/1/true/false | false | - | addLinkForPics | 为图片添加可点击的链接 | 0/1/true/false | false | - | showTimestampInDescription | 在正文处显示广播的时间戳 | 0/1/true/false | false | - | showComments | 在正文处显示评论 | 0/1/true/false | false | - | widthOfPics | 广播配图宽(生效取决于阅读器) | 不指定 / 数字 | 不指定 | - | heightOfPics | 广播配图高(生效取决于阅读器) | 不指定 / 数字 | 不指定 | - | sizeOfAuthorAvatar | 作者头像大小 | 数字 | 48 | +| 键 | 含义 | 接受的值 | 默认值 | +| -------------------------- | -------------------------------------------------------------- | -------------- | ------ | +| readable | 是否开启细节排版可读性优化 | 0/1/true/false | false | +| authorNameBold | 是否加粗作者名字 | 0/1/true/false | false | +| showAuthorInTitle | 是否在标题处显示作者 | 0/1/true/false | true | +| showAuthorInDesc | 是否在正文处显示作者 | 0/1/true/false | false | +| showAuthorAvatarInDesc | 是否在正文处显示作者头像(若阅读器会提取正文图片,不建议开启) | 0/1/true/false | false | +| showEmojiForRetweet | 显示 “🔁” 取代 “Fw”(转发) | 0/1/true/false | false | +| showRetweetTextInTitle | 在标题出显示转发评论(置为 false 则在标题只显示被转发的广播) | 0/1/true/false | false | +| addLinkForPics | 为图片添加可点击的链接 | 0/1/true/false | false | +| showTimestampInDescription | 在正文处显示广播的时间戳 | 0/1/true/false | false | +| showComments | 在正文处显示评论 | 0/1/true/false | false | +| widthOfPics | 广播配图宽(生效取决于阅读器) | 不指定 / 数字 | 不指定 | +| heightOfPics | 广播配图高(生效取决于阅读器) | 不指定 / 数字 | 不指定 | +| sizeOfAuthorAvatar | 作者头像大小 | 数字 | 48 | 指定更多与默认值不同的参数选项可以改善 RSS 的可读性,如 diff --git a/lib/routes/douban/people/wish.ts b/lib/routes/douban/people/wish.ts index 6105dfc8e8b553..9f4cc750970ea5 100644 --- a/lib/routes/douban/people/wish.ts +++ b/lib/routes/douban/people/wish.ts @@ -22,9 +22,9 @@ export const route: Route = { handler, description: `对于豆瓣用户想看的内容,在 \`routeParams\` 参数中以 query string 格式设置如下选项可以控制输出的样式 - | 键 | 含义 | 接受的值 | 默认值 | - | ---------- | ---------- | -------- | ------ | - | pagesCount | 查询页面数 | | 1 |`, +| 键 | 含义 | 接受的值 | 默认值 | +| ---------- | ---------- | -------- | ------ | +| pagesCount | 查询页面数 | | 1 |`, }; async function handler(ctx) { diff --git a/lib/routes/douyu/group.ts b/lib/routes/douyu/group.ts index e46cabbc5f2eac..7bd5df62989ddc 100644 --- a/lib/routes/douyu/group.ts +++ b/lib/routes/douyu/group.ts @@ -31,8 +31,8 @@ export const route: Route = { maintainers: ['nczitzk'], handler, description: `| 回复时间排序 | 发布时间排序 | - | ------------ | ------------ | - | 1 | 2 |`, +| ------------ | ------------ | +| 1 | 2 |`, }; async function handler(ctx) { diff --git a/lib/routes/dtcj/datahero.ts b/lib/routes/dtcj/datahero.ts index 7c3f79fa5cdc58..022dbc50d3c0ad 100644 --- a/lib/routes/dtcj/datahero.ts +++ b/lib/routes/dtcj/datahero.ts @@ -28,8 +28,8 @@ export const route: Route = { maintainers: ['nczitzk'], handler, description: `| 侠创 | 纽约数据科学学院 | RS 实验所 | 阿里云天池 | - | ---- | ---------------- | --------- | ---------- | - | 5 | 6 | 9 | 10 |`, +| ---- | ---------------- | --------- | ---------- | +| 5 | 6 | 9 | 10 |`, }; async function handler(ctx) { diff --git a/lib/routes/dtcj/datainsight.ts b/lib/routes/dtcj/datainsight.ts index 903caba01823b0..dfe5d9ab785b2f 100644 --- a/lib/routes/dtcj/datainsight.ts +++ b/lib/routes/dtcj/datainsight.ts @@ -28,8 +28,8 @@ export const route: Route = { handler, url: 'dtcj.com/dtcj/datainsight', description: `| 城数 | NEXT 情报局 | 专业精选 | - | ---- | ----------- | -------- | - | 3 | 1 | 4 |`, +| ---- | ----------- | -------- | +| 3 | 1 | 4 |`, }; async function handler(ctx) { diff --git a/lib/routes/dx2025/index.ts b/lib/routes/dx2025/index.ts index 8ec00dc76bb23c..ac746ef5316084 100644 --- a/lib/routes/dx2025/index.ts +++ b/lib/routes/dx2025/index.ts @@ -21,26 +21,26 @@ export const route: Route = { handler, description: `内容类别 - | 产业观察 | 行业报告 | 政策 | 数据 | - | -------------------- | ---------------- | ------ | ---- | - | industry-observation | industry-reports | policy | data | +| 产业观察 | 行业报告 | 政策 | 数据 | +| -------------------- | ---------------- | ------ | ---- | +| industry-observation | industry-reports | policy | data | 行业分类 - | 行业 | 行业名称 | - | -------------------- | ----------------------------------------------------------------- | - | 新一代信息技术 | next-generation-information-technology-industry-reports | - | 高档数控机床和机器人 | high-grade-cnc-machine-tools-and-robots-industry-reports | - | 航空航天装备 | aerospace-equipment-industry-reports | - | 海工装备及高技术船舶 | marine-engineering-equipment-and-high-tech-ships-industry-reports | - | 先进轨道交通装备 | advanced-rail-transportation-equipment-industry-reports | - | 节能与新能源汽车 | energy-saving-and-new-energy-vehicles-industry-reports | - | 电力装备 | electric-equipment-industry-reports | - | 农机装备 | agricultural-machinery-equipment-industry-reports | - | 新材料 | new-material-industry-reports | - | 生物医药及医疗器械 | biomedicine-and-medical-devices-industry-reports | - | 现代服务业 | modern-service-industry-industry-reports | - | 制造业人才 | manufacturing-talent-industry-reports |`, +| 行业 | 行业名称 | +| -------------------- | ----------------------------------------------------------------- | +| 新一代信息技术 | next-generation-information-technology-industry-reports | +| 高档数控机床和机器人 | high-grade-cnc-machine-tools-and-robots-industry-reports | +| 航空航天装备 | aerospace-equipment-industry-reports | +| 海工装备及高技术船舶 | marine-engineering-equipment-and-high-tech-ships-industry-reports | +| 先进轨道交通装备 | advanced-rail-transportation-equipment-industry-reports | +| 节能与新能源汽车 | energy-saving-and-new-energy-vehicles-industry-reports | +| 电力装备 | electric-equipment-industry-reports | +| 农机装备 | agricultural-machinery-equipment-industry-reports | +| 新材料 | new-material-industry-reports | +| 生物医药及医疗器械 | biomedicine-and-medical-devices-industry-reports | +| 现代服务业 | modern-service-industry-industry-reports | +| 制造业人才 | manufacturing-talent-industry-reports |`, }; async function handler(ctx) { diff --git a/lib/routes/dytt/index.ts b/lib/routes/dytt/index.ts index d4c4828f227477..9d0cc82f035392 100644 --- a/lib/routes/dytt/index.ts +++ b/lib/routes/dytt/index.ts @@ -1,75 +1,318 @@ -import type { Route } from '@/types'; +import { type Data, type DataItem, type Route, ViewType } from '@/types'; + import cache from '@/utils/cache'; -import got from '@/utils/got'; -import { load } from 'cheerio'; import iconv from 'iconv-lite'; +import ofetch from '@/utils/ofetch'; import { parseDate } from '@/utils/parse-date'; +import timezone from '@/utils/timezone'; + +import { type CheerioAPI, type Cheerio, type Element, load } from 'cheerio'; +import { type Context } from 'hono'; + +const domain: string = 'www.dydytt.net'; +const baseUrl: string = `https://${domain}`; + +export const handler = async (ctx: Context): Promise => { + const { category = 'gndy/dyzz' } = ctx.req.param(); + const limit: number = Number.parseInt(ctx.req.query('limit') ?? '25', 10); + + const targetUrl: string = new URL(`html/${category.replace(/^html\//, '')}`, baseUrl).href; + + const response = await ofetch(targetUrl, { + responseType: 'arrayBuffer', + }); + const $: CheerioAPI = load(iconv.decode(Buffer.from(response), 'gb2312')); + const language = $('html').attr('lang') ?? 'zh-CN'; + + let items: DataItem[] = []; + + items = $('div.co_content8 ul table') + .slice(0, limit) + .toArray() + .map((el): Element => { + const $el: Cheerio = $(el); + + const $aEl: Cheerio = $el.find('a.ulink'); + + const title: string = $aEl.text(); + const description: string = $el.find('td').last().text(); + const pubDateStr: string | undefined = $el.find('font').last().text().split(/:/).pop(); + const linkUrl: string | undefined = $aEl.attr('href'); + const upDatedStr: string | undefined = pubDateStr; + + const processedItem: DataItem = { + title, + description, + pubDate: pubDateStr ? timezone(parseDate(pubDateStr), +8) : undefined, + link: linkUrl ? new URL(linkUrl, baseUrl).href : undefined, + doi: $el.find('meta[name="citation_doi"]').attr('content'), + content: { + html: description, + text: description, + }, + updated: upDatedStr ? timezone(parseDate(upDatedStr), +8) : undefined, + language, + }; + + return processedItem; + }); + + items = ( + await Promise.all( + items.map((item) => { + if (!item.link) { + return item; + } + + return cache.tryGet(item.link, async (): Promise => { + const detailResponse = await ofetch(item.link, { + responseType: 'arrayBuffer', + }); + const $$: CheerioAPI = load(iconv.decode(Buffer.from(detailResponse), 'gb2312')); + + const title: string = $$('div.title_all h1 font').text(); + + const $descriptionEl: Cheerio = $$('div#Zoom span').first(); + const childEls = $descriptionEl.contents().toArray(); + const centerIdx = childEls.findIndex((node) => node.type === 'tag' && node.name === 'center'); + const description: string = (centerIdx === -1 ? childEls : childEls.slice(0, centerIdx)).map((node) => $.html(node)).join(''); + + const pubDateStr: string | undefined = item.pubDate ? undefined : $descriptionEl.prev().text().split(/:/).pop(); + const image: string | undefined = $descriptionEl.find('img').first().attr('src'); + const upDatedStr: string | undefined = pubDateStr; + + let processedItem: DataItem = { + title, + description, + pubDate: pubDateStr ? parseDate(pubDateStr) : item.pubDate, + content: { + html: description, + text: description, + }, + image, + banner: image, + updated: upDatedStr ? parseDate(upDatedStr) : item.updated, + language, + }; + + const $enclosureEl: Cheerio = $descriptionEl.find('a[href^="magnet:"]').last(); + const enclosureUrl: string | undefined = $enclosureEl.attr('href'); + + if (enclosureUrl) { + const enclosureType: string = 'application/x-bittorrent'; + const enclosureTitle: string = $enclosureEl.text(); + + processedItem = { + ...processedItem, + enclosure_url: enclosureUrl, + enclosure_type: enclosureType, + enclosure_title: enclosureTitle || title, + enclosure_length: undefined, + itunes_duration: undefined, + itunes_item_image: image, + }; + } + + return { + ...item, + ...processedItem, + }; + }); + }) + ) + ).filter((_): _ is DataItem => true); + + const title: string = $('title').text(); + + return { + title, + description: $('META[name=description]').attr('content'), + link: targetUrl, + item: items, + allowEmpty: true, + image: new URL('images/logo.gif', baseUrl).href, + author: title.split(/_/).pop(), + language, + id: targetUrl, + }; +}; export const route: Route = { - path: '/', + path: '/:category{.+}?', + name: '分类', + url: domain, + maintainers: ['junfengP', 'nczitzk'], + handler, + example: '/dytt/gndy/dyzz', + parameters: { + category: { + description: '分类,默认为 `gndy/dyzz`,即最新影片,可在对应分类页 URL 中找到', + options: [ + { + label: '最新影片', + value: 'gndy/dyzz', + }, + { + label: '经典影片', + value: 'gndy', + }, + { + label: '国内电影', + value: 'gndy/china', + }, + { + label: '欧美电影', + value: 'gndy/oumei', + }, + { + label: '其它电影', + value: 'gndy/rihan', + }, + { + label: '华语电视', + value: 'tv/hytv', + }, + { + label: '欧美电视', + value: 'tv/oumeitv', + }, + { + label: '最新综艺', + value: 'zongyi2013', + }, + { + label: '旧版综艺', + value: '2009zongyi', + }, + { + label: '动漫资源', + value: 'dongman', + }, + { + label: '旧版游戏', + value: 'game', + }, + { + label: '游戏下载', + value: 'newgame', + }, + { + label: '日韩剧集专区', + value: 'tv/rihantv', + }, + ], + }, + }, + description: `:::tip +若订阅 [最新影片](${baseUrl}/html/gndy/dyzz),网址为 \`${baseUrl}/html/gndy/dyzz\`,请截取 \`${baseUrl}/html/\` 到末尾的部分 \`gndy/dyzz\` 作为 \`category\` 参数填入,此时目标路由为 [\`/dytt/gndy/dyzz\`](https://rsshub.app/dytt/gndy/dyzz)。 + +::: + +
+更多分类 + +| 分类 | ID | +| ----------------------------------------------------- | ------------------------------------------------ | +| [最新影片](${baseUrl}/html/gndy/dyzz/index.html) | [gndy/dyzz](https://rsshub.app/dytt/gndy/dyzz) | +| [经典影片](${baseUrl}/html/gndy/index.html) | [gndy](https://rsshub.app/dytt/gndy) | +| [国内电影](${baseUrl}/html/gndy/china/index.html) | [gndy/china](https://rsshub.app/dytt/gndy/china) | +| [欧美电影](${baseUrl}/html/gndy/oumei/index.html) | [gndy/oumei](https://rsshub.app/dytt/gndy/oumei) | +| [其它电影](${baseUrl}/html/gndy/rihan/index.html) | [gndy/rihan](https://rsshub.app/dytt/gndy/rihan) | +| [华语电视](${baseUrl}/html/tv/hytv/index.html) | [tv/hytv](https://rsshub.app/dytt/tv/hytv) | +| [欧美电视](${baseUrl}/html/tv/oumeitv/index.html) | [tv/oumeitv](https://rsshub.app/dytt/tv/oumeitv) | +| [最新综艺](${baseUrl}/html/zongyi2013/index.html) | [zongyi2013](https://rsshub.app/dytt/zongyi2013) | +| [旧版综艺](${baseUrl}/html/2009zongyi/index.html) | [2009zongyi](https://rsshub.app/dytt/2009zongyi) | +| [动漫资源](${baseUrl}/html/dongman/index.html) | [dongman](https://rsshub.app/dytt/dongman) | +| [旧版游戏](${baseUrl}/html/game/index.html) | [game](https://rsshub.app/dytt/game) | +| [游戏下载](${baseUrl}/html/newgame/index.html) | [newgame](https://rsshub.app/dytt/newgame) | +| [日韩剧集专区](${baseUrl}/html/tv/rihantv/index.html) | [tv/rihantv](https://rsshub.app/dytt/tv/rihantv) | + +
+`, categories: ['multimedia'], - example: '/dytt', - parameters: {}, features: { requireConfig: false, requirePuppeteer: false, antiCrawler: false, + supportRadar: true, supportBT: true, supportPodcast: false, supportScihub: false, }, radar: [ { - source: ['ygdy8.net/index.html'], + source: ['${domain}/index.htm', `${domain}/html/:category`], + target: (params) => { + const category: string = params.category; + + return `/dytt/html${category ? `/${category}` : ''}`; + }, + }, + { + title: '最新影片', + source: [`${baseUrl}/html/gndy/dyzz/index.html`], + target: '/gndy/dyzz', + }, + { + title: '经典影片', + source: [`${baseUrl}/html/gndy/index.html`], + target: '/gndy', + }, + { + title: '国内电影', + source: [`${baseUrl}/html/gndy/china/index.html`], + target: '/gndy/china', + }, + { + title: '欧美电影', + source: [`${baseUrl}/html/gndy/oumei/index.html`], + target: '/gndy/oumei', + }, + { + title: '其它电影', + source: [`${baseUrl}/html/gndy/rihan/index.html`], + target: '/gndy/rihan', + }, + { + title: '华语电视', + source: [`${baseUrl}/html/tv/hytv/index.html`], + target: '/tv/hytv', + }, + { + title: '欧美电视', + source: [`${baseUrl}/html/tv/oumeitv/index.html`], + target: '/tv/oumeitv', + }, + { + title: '最新综艺', + source: [`${baseUrl}/html/zongyi2013/index.html`], + target: '/zongyi2013', + }, + { + title: '旧版综艺', + source: [`${baseUrl}/html/2009zongyi/index.html`], + target: '/2009zongyi', + }, + { + title: '动漫资源', + source: [`${baseUrl}/html/dongman/index.html`], + target: '/dongman', + }, + { + title: '旧版游戏', + source: [`${baseUrl}/html/game/index.html`], + target: '/game', + }, + { + title: '游戏下载', + source: [`${baseUrl}/html/newgame/index.html`], + target: '/newgame', + }, + { + title: '日韩剧集专区', + source: [`${baseUrl}/html/tv/rihantv/index.html`], + target: '/tv/rihantv', }, ], - name: '最新电影', - maintainers: ['junfengP'], - handler, + view: ViewType.Articles, }; - -async function loadContent(link: string) { - const response = await got.get(link, { - responseType: 'buffer', - }); - const data = iconv.decode(response.data, 'gb2312'); - const $ = load(data); - return $('div#Zoom').html() || ''; -} - -async function handler() { - const baseURL = 'https://www.ygdy8.net/html/gndy/dyzz/index.html'; - const response = await got.get(baseURL, { - responseType: 'buffer', - }); - const data = iconv.decode(response.data, 'gb2312'); - - const $ = load(data); - const list = $('.co_content8 table tr b a').toArray(); - - const items = await Promise.all( - list.map(async (item) => { - const link = $(item); - const itemUrl = 'https://www.ygdy8.net' + link.attr('href'); - - return await cache.tryGet(itemUrl, async () => { - const description = await loadContent(itemUrl); - return { - enclosure_url: description.match(/magnet:.*?(?=">)/) || '', - enclosure_type: 'application/x-bittorrent', - title: link.text(), - description, - pubDate: parseDate($(item).find('font').text()), - link: itemUrl, - }; - }); - }) - ); - - return { - title: '电影天堂/阳光电影', - link: baseURL, - description: '电影天堂RSS', - item: items, - }; -} diff --git a/lib/routes/dytt/namespace.ts b/lib/routes/dytt/namespace.ts index 557b7d37ad4288..217e900cdb6caa 100644 --- a/lib/routes/dytt/namespace.ts +++ b/lib/routes/dytt/namespace.ts @@ -2,6 +2,6 @@ import type { Namespace } from '@/types'; export const namespace: Namespace = { name: '电影天堂', - url: 'www.ygdy8.net', + url: 'www.dydytt.net', lang: 'zh-CN', }; diff --git a/lib/routes/eagle/changelog.ts b/lib/routes/eagle/changelog.ts index 89ed91a8b54286..e07cb89ae10173 100644 --- a/lib/routes/eagle/changelog.ts +++ b/lib/routes/eagle/changelog.ts @@ -21,9 +21,9 @@ export const route: Route = { handler, description: `Language - | Simplified Chinese | Traditional Chinese | English | - | ------------------ | ------------------- | ------- | - | cn | tw | en |`, +| Simplified Chinese | Traditional Chinese | English | +| ------------------ | ------------------- | ------- | +| cn | tw | en |`, }; async function handler(ctx) { diff --git a/lib/routes/earthquake/ceic.ts b/lib/routes/earthquake/ceic.ts index 860db18538e43a..7966962046dfad 100644 --- a/lib/routes/earthquake/ceic.ts +++ b/lib/routes/earthquake/ceic.ts @@ -27,14 +27,14 @@ export const route: Route = { handler, url: 'www.cea.gov.cn/cea/xwzx/zqsd/index.html', description: `| 参数 | 类型 | - | ---- | --------------------------- | - | 1 | 最近 24 小时地震信息 | - | 2 | 最近 48 小时地震信息 | - | 5 | 最近一年 3.0 级以上地震信息 | - | 7 | 最近一年 3.0 级以下地震 | - | 8 | 最近一年 4.0 级以上地震信息 | - | 9 | 最近一年 5.0 级以上地震信息 | - | 0 | 最近一年 6.0 级以上地震信息 | +| ---- | --------------------------- | +| 1 | 最近 24 小时地震信息 | +| 2 | 最近 48 小时地震信息 | +| 5 | 最近一年 3.0 级以上地震信息 | +| 7 | 最近一年 3.0 级以下地震 | +| 8 | 最近一年 4.0 级以上地震信息 | +| 9 | 最近一年 5.0 级以上地震信息 | +| 0 | 最近一年 6.0 级以上地震信息 | 可通过全局过滤参数订阅您感兴趣的地区.`, }; diff --git a/lib/routes/eastday/24.ts b/lib/routes/eastday/24.ts index 145a5e513c9af6..297269e05ffe97 100644 --- a/lib/routes/eastday/24.ts +++ b/lib/routes/eastday/24.ts @@ -47,13 +47,13 @@ export const route: Route = { handler, url: 'mini.eastday.com/', description: `| 推荐 | 社会 | 娱乐 | 国际 | 军事 | - | ---- | ---- | ---- | ---- | ---- | +| ---- | ---- | ---- | ---- | ---- | - | 养生 | 汽车 | 体育 | 财经 | 游戏 | - | ---- | ---- | ---- | ---- | ---- | +| 养生 | 汽车 | 体育 | 财经 | 游戏 | +| ---- | ---- | ---- | ---- | ---- | - | 科技 | 国内 | 宠物 | 情感 | 人文 | 教育 | - | ---- | ---- | ---- | ---- | ---- | ---- |`, +| 科技 | 国内 | 宠物 | 情感 | 人文 | 教育 | +| ---- | ---- | ---- | ---- | ---- | ---- |`, }; async function handler(ctx) { diff --git a/lib/routes/eastmoney/report/index.ts b/lib/routes/eastmoney/report/index.ts index 3dedde7ef6a887..a43d5c8695379f 100644 --- a/lib/routes/eastmoney/report/index.ts +++ b/lib/routes/eastmoney/report/index.ts @@ -44,8 +44,8 @@ export const route: Route = { maintainers: ['syzq'], handler, description: `| 策略报告 | 宏观研究 | 券商晨报 | 行业研究 | 个股研报 | - | -------------- | ----------- | ------------ | -------- | -------- | - | strategyreport | macresearch | brokerreport | industry | stock |`, +| -------------- | ----------- | ------------ | -------- | -------- | +| strategyreport | macresearch | brokerreport | industry | stock |`, }; async function handler(ctx) { diff --git a/lib/routes/ebc/namespace.ts b/lib/routes/ebc/namespace.ts new file mode 100644 index 00000000000000..83d203397aaef1 --- /dev/null +++ b/lib/routes/ebc/namespace.ts @@ -0,0 +1,6 @@ +import type { Namespace } from '@/types'; + +export const namespace: Namespace = { + name: '東森新聞', + url: 'ebc.net.tw', +}; diff --git a/lib/routes/ebc/realtime.ts b/lib/routes/ebc/realtime.ts new file mode 100644 index 00000000000000..b81aa09a89f9c8 --- /dev/null +++ b/lib/routes/ebc/realtime.ts @@ -0,0 +1,94 @@ +import { Route } from '@/types'; +import cache from '@/utils/cache'; +import got from '@/utils/got'; +import { load } from 'cheerio'; +import { parseDate } from '@/utils/parse-date'; + +export const route: Route = { + path: '/realtime/:category?', + categories: ['traditional-media'], + example: '/ebc/realtime/politics', + parameters: { + category: 'Category from the last segment of the URL of the corresponding site', + }, + features: { + requirePuppeteer: false, + antiCrawler: false, + supportBT: false, + supportPodcast: false, + supportScihub: false, + requireConfig: false, + }, + name: '即時新聞', + maintainers: ['quiniapiezoelectricity'], + handler, + description: '', + radar: [ + { + source: ['news.ebc.net.tw/realtime/:category'], + target: '/:category', + }, + ], +}; + +async function handler(ctx) { + const category = ctx.req.param('category') ?? ''; + const response = await got('https://news.ebc.net.tw/list/load', { + method: 'POST', + headers: { + Accept: '*/*', + 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', + 'X-Requested-With': 'XMLHttpRequest', + }, + body: new URLSearchParams({ + list_type: 'realtime', + cate_code: category, + page: '1', + }).toString(), + }); + const $ = load(response.data); + const feed = $('div.list > a') + .toArray() + .map((item) => new URL($(item).attr('href') ?? '', 'https://news.ebc.net.tw').href); + const items = await Promise.all( + feed.map((url) => + cache.tryGet(url, async () => { + const response = await got(url); + const $ = load(response.data); + const metadata = $('[type="application/ld+json"]') + .toArray() + .flatMap((item) => JSON.parse($(item).text())) + .find((item) => item['@type'] === 'NewsArticle'); + // handle image box + $('.img_box').each((_, elem) => { + $(elem) + .children('div.img_caption') + .replaceWith($(`
${$(elem).children('div.img_caption').text()}
`)); + $(elem).children('div.img').children().unwrap(); + $(elem).wrapInner($('
')); + }); + // handle small text + $('[style="font-size:16px;"]').each((_, elem) => { + $(elem).replaceWith(`${$(elem).text()}`); + }); + const cover = $('div.article_cover'); + const content = $('div.article_content'); + content.find('.inline_text, .inline_box, .rss_box').remove(); + return { + title: metadata.headline, + link: url, + pubDate: parseDate(metadata.datePublished), + author: metadata.author.name, + description: cover.html() + content.html(), + category: metadata.keywords ? [metadata.articleSection, ...metadata.keywords.split(',')] : [metadata.articleSection], + }; + }) + ) + ); + return { + title: '東森新聞|即時', + link: category ? `https://news.ebc.net.tw/realtime/${category}` : 'https://news.ebc.net.tw/realtime', + language: 'zh-TW', + item: items, + }; +} diff --git a/lib/routes/ecust/jwc/notice.ts b/lib/routes/ecust/jwc/notice.ts index ea10962902e736..e92a211d040e02 100644 --- a/lib/routes/ecust/jwc/notice.ts +++ b/lib/routes/ecust/jwc/notice.ts @@ -51,8 +51,8 @@ export const route: Route = { maintainers: ['lxl66566'], handler, description: `| 其他任意值 | mto | mttb | gi | mpt | fai | - | ---------- | ------------ | ------------------ | -------- | ------------ | ------------ | - | 全部订阅 | 教学运行管理 | 培养与教学建设管理 | 综合信息 | 实践教学管理 | 学院教务信息 |`, +| ---------- | ------------ | ------------------ | -------- | ------------ | ------------ | +| 全部订阅 | 教学运行管理 | 培养与教学建设管理 | 综合信息 | 实践教学管理 | 学院教务信息 |`, }; async function handler(ctx) { diff --git a/lib/routes/ehentai/favorites.ts b/lib/routes/ehentai/favorites.ts index 5ff6a8a38d0549..d5956fe2ce7f44 100644 --- a/lib/routes/ehentai/favorites.ts +++ b/lib/routes/ehentai/favorites.ts @@ -6,8 +6,13 @@ import ConfigNotFoundError from '@/errors/types/config-not-found'; export const route: Route = { path: '/favorites/:favcat?/:order?/:page?/:routeParams?', categories: ['picture'], - example: '/ehentai/favorites/0/posted/1', - parameters: { favcat: 'Favorites folder number', order: '`posted`(Sort by gallery release time) , `favorited`(Sort by time added to favorites)', page: 'Page number', routeParams: 'Additional parameters, see the table above' }, + example: '/ehentai/favorites/0/posted/0/bittorrent=true&embed_thumb=false', + parameters: { + favcat: 'Favorites folder number', + order: '`posted`(Sort by gallery release time) , `favorited`(Sort by time added to favorites)', + page: 'Page number, set 0 to get latest', + routeParams: 'Additional parameters, see the table above', + }, features: { requireConfig: false, requirePuppeteer: false, diff --git a/lib/routes/ehentai/search.ts b/lib/routes/ehentai/search.ts index 537bad51eae1a0..58bd95667517cc 100644 --- a/lib/routes/ehentai/search.ts +++ b/lib/routes/ehentai/search.ts @@ -5,8 +5,8 @@ import EhAPI from './ehapi'; export const route: Route = { path: '/search/:params?/:page?/:routeParams?', categories: ['picture'], - example: '/ehentai/search/f_search=artist%3Amana%24/1', - parameters: { params: 'Search parameters. You can copy the content after `https://e-hentai.org/?`', page: 'Page number', routeParams: 'Additional parameters, see the table above' }, + example: '/ehentai/search/f_cats=1021/0/bittorrent=true&embed_thumb=false', + parameters: { params: 'Search parameters. You can copy the content after `https://e-hentai.org/?`', page: 'Page number, set 0 to get latest', routeParams: 'Additional parameters, see the table above' }, features: { requireConfig: false, requirePuppeteer: false, diff --git a/lib/routes/ehentai/tag.ts b/lib/routes/ehentai/tag.ts index bf86407d224ab2..d676146138a149 100644 --- a/lib/routes/ehentai/tag.ts +++ b/lib/routes/ehentai/tag.ts @@ -5,8 +5,8 @@ import EhAPI from './ehapi'; export const route: Route = { path: '/tag/:tag/:page?/:routeParams?', categories: ['picture'], - example: '/ehentai/tag/language:chinese/1', - parameters: { tag: 'Tag', page: 'Page number', routeParams: 'Additional parameters, see the table above' }, + example: '/ehentai/tag/language:chinese/0/bittorrent=true&embed_thumb=false', + parameters: { tag: 'Tag', page: 'Page number, set 0 to get latest', routeParams: 'Additional parameters, see the table above' }, features: { requireConfig: false, requirePuppeteer: false, diff --git a/lib/routes/ekantipur/issue.ts b/lib/routes/ekantipur/issue.ts index 9cdb44fb5b5c36..c6797094b0bf57 100644 --- a/lib/routes/ekantipur/issue.ts +++ b/lib/routes/ekantipur/issue.ts @@ -28,9 +28,9 @@ export const route: Route = { handler, description: `Channels: - | समाचार | अर्थ / वाणिज्य | विचार | खेलकुद | उपत्यका | मनोरञ्जन | फोटोफिचर | फिचर | विश्व | ब्लग | - | ---- | -------- | ------- | ------ | -------- | ------------- | -------------- | ------- | ----- | ---- | - | news | business | opinion | sports | national | entertainment | photo\_feature | feature | world | blog |`, +| समाचार | अर्थ / वाणिज्य | विचार | खेलकुद | उपत्यका | मनोरञ्जन | फोटोफिचर | फिचर | विश्व | ब्लग | +| ---- | -------- | ------- | ------ | -------- | ------------- | -------------- | ------- | ----- | ---- | +| news | business | opinion | sports | national | entertainment | photo\_feature | feature | world | blog |`, }; async function handler(ctx) { diff --git a/lib/routes/eleduck/posts.ts b/lib/routes/eleduck/posts.ts index 9f4f36fd8353c2..df1d94c3c8a009 100644 --- a/lib/routes/eleduck/posts.ts +++ b/lib/routes/eleduck/posts.ts @@ -33,23 +33,23 @@ export const route: Route = { maintainers: ['running-grass'], handler, description: `| id | 分类 | - | -- | -------- | - | 0 | 全部 | - | 1 | 讨论 | - | 2 | 分享 | - | 3 | 露个脸 | - | 4 | 访谈故事 | - | 5 | 招聘 | - | 10 | 海外移民 | - | 12 | 英语 | - | 14 | 电鸭官方 | - | 15 | 独立产品 | - | 17 | 闲话开源 | - | 19 | Web3 | - | 21 | 设计 | - | 22 | 人才库 | - | 23 | Upwork | - | 24 | 经验课 |`, +| -- | -------- | +| 0 | 全部 | +| 1 | 讨论 | +| 2 | 分享 | +| 3 | 露个脸 | +| 4 | 访谈故事 | +| 5 | 招聘 | +| 10 | 海外移民 | +| 12 | 英语 | +| 14 | 电鸭官方 | +| 15 | 独立产品 | +| 17 | 闲话开源 | +| 19 | Web3 | +| 21 | 设计 | +| 22 | 人才库 | +| 23 | Upwork | +| 24 | 经验课 |`, }; async function handler(ctx) { diff --git a/lib/routes/eprice/rss.ts b/lib/routes/eprice/rss.ts index 8a540cb3af0e4e..8a92673ca33b8d 100644 --- a/lib/routes/eprice/rss.ts +++ b/lib/routes/eprice/rss.ts @@ -30,9 +30,9 @@ export const route: Route = { handler, description: `地区: - | hk | tw | - | ---- | ---- | - | 香港 | 台湾 |`, +| hk | tw | +| ---- | ---- | +| 香港 | 台湾 |`, }; async function handler(ctx) { diff --git a/lib/routes/famitsu/category.ts b/lib/routes/famitsu/category.ts index 20970ce31b2373..2d16f32d4e784d 100644 --- a/lib/routes/famitsu/category.ts +++ b/lib/routes/famitsu/category.ts @@ -26,8 +26,8 @@ export const route: Route = { maintainers: ['TonyRL'], handler, description: `| 新着 | Switch | PS5 | PS4 | PC ゲーム | ニュース | 動画 | 特集・企画記事 | インタビュー | 取材・リポート | レビュー | インディーゲーム | - | ----------- | ------ | --- | --- | --------- | -------- | ------ | --------------- | ------------ | -------------- | -------- | ---------------- | - | new-article | switch | ps5 | ps4 | pc-game | news | videos | special-article | interview | event-report | review | indie-game |`, +| ----------- | ------ | --- | --- | --------- | -------- | ------ | --------------- | ------------ | -------------- | -------- | ---------------- | +| new-article | switch | ps5 | ps4 | pc-game | news | videos | special-article | interview | event-report | review | indie-game |`, }; function getBuildId() { diff --git a/lib/routes/fantia/search.ts b/lib/routes/fantia/search.ts index 79db7f755d5dc0..70f49e0bc407b8 100644 --- a/lib/routes/fantia/search.ts +++ b/lib/routes/fantia/search.ts @@ -92,53 +92,53 @@ export const route: Route = { handler, description: `Type - | クリエイター | 投稿 | 商品 | コミッション | - | ------------ | ----- | -------- | ------------ | - | fanclubs | posts | products | commissions | +| クリエイター | 投稿 | 商品 | コミッション | +| ------------ | ----- | -------- | ------------ | +| fanclubs | posts | products | commissions | Category - | 分类 | 分类名 | - | ---------------------- | ---------- | - | イラスト | illust | - | 漫画 | comic | - | コスプレ | cosplay | - | YouTuber・配信者 | youtuber | - | Vtuber | vtuber | - | 音声作品・ASMR | voice | - | 声優・歌い手 | voiceactor | - | アイドル | idol | - | アニメ・映像・写真 | anime | - | 3D | 3d | - | ゲーム制作 | game | - | 音楽 | music | - | 小説 | novel | - | ドール | doll | - | アート・デザイン | art | - | プログラム | program | - | 創作・ハンドメイド | handmade | - | 歴史・評論・情報 | history | - | 鉄道・旅行・ミリタリー | railroad | - | ショップ | shop | - | その他 | other | +| 分类 | 分类名 | +| ---------------------- | ---------- | +| イラスト | illust | +| 漫画 | comic | +| コスプレ | cosplay | +| YouTuber・配信者 | youtuber | +| Vtuber | vtuber | +| 音声作品・ASMR | voice | +| 声優・歌い手 | voiceactor | +| アイドル | idol | +| アニメ・映像・写真 | anime | +| 3D | 3d | +| ゲーム制作 | game | +| 音楽 | music | +| 小説 | novel | +| ドール | doll | +| アート・デザイン | art | +| プログラム | program | +| 創作・ハンドメイド | handmade | +| 歴史・評論・情報 | history | +| 鉄道・旅行・ミリタリー | railroad | +| ショップ | shop | +| その他 | other | Ranking period - | デイリー | ウィークリー | マンスリー | 全期間 | - | -------- | ------------ | ---------- | ------ | - | daily | weekly | monthly | all | +| デイリー | ウィークリー | マンスリー | 全期間 | +| -------- | ------------ | ---------- | ------ | +| daily | weekly | monthly | all | Sorting - | 更新の新しい順 | 更新の古い順 | 投稿の新しい順 | 投稿の古い順 | お気に入り数順 | - | -------------- | ------------ | -------------- | ------------ | -------------- | - | updater | update\_old | newer | create\_old | popular | +| 更新の新しい順 | 更新の古い順 | 投稿の新しい順 | 投稿の古い順 | お気に入り数順 | +| -------------- | ------------ | -------------- | ------------ | -------------- | +| updater | update\_old | newer | create\_old | popular | Rating - | すべて | 一般のみ | R18 のみ | - | ------ | -------- | -------- | - | all | general | adult |`, +| すべて | 一般のみ | R18 のみ | +| ------ | -------- | -------- | +| all | general | adult |`, }; async function handler(ctx) { diff --git a/lib/routes/fashionnetwork/index.ts b/lib/routes/fashionnetwork/index.ts index 2b4c8833771015..628240113fc0d8 100644 --- a/lib/routes/fashionnetwork/index.ts +++ b/lib/routes/fashionnetwork/index.ts @@ -117,16 +117,16 @@ export const route: Route = { 若订阅 [独家新闻](https://fashionnetwork.cn),网址为 \`https://fashionnetwork.cn/lists/13.html\`。截取 \`https://fashionnetwork.cn/\` 到末尾 \`.html\` 的部分 \`13\` 作为参数填入,此时路由为 [\`/fashionnetwork/cn/lists/13\`](https://rsshub.app/fashionnetwork/cn/lists/13)。 ::: - | 分类 | ID | - | ---------------------------------------------- | --------------------------------------------------- | - | [独家](https://fashionnetwork.cn/lists/13) | [13](https://rsshub.app/fashionnetwork/cn/lists/13) | - | [商业](https://fashionnetwork.cn/lists/1) | [1](https://rsshub.app/fashionnetwork/cn/lists/1) | - | [人物](https://fashionnetwork.cn/lists/8) | [8](https://rsshub.app/fashionnetwork/cn/lists/8) | - | [设计](https://fashionnetwork.cn/lists/3) | [3](https://rsshub.app/fashionnetwork/cn/lists/3) | - | [产业](https://fashionnetwork.cn/lists/5) | [5](https://rsshub.app/fashionnetwork/cn/lists/5) | - | [创新研究](https://fashionnetwork.cn/lists/6) | [6](https://rsshub.app/fashionnetwork/cn/lists/6) | - | [人事变动](https://fashionnetwork.cn/lists/12) | [12](https://rsshub.app/fashionnetwork/cn/lists/12) | - | [新闻资讯](https://fashionnetwork.cn/lists/11) | [11](https://rsshub.app/fashionnetwork/cn/lists/11) | +| 分类 | ID | +| ---------------------------------------------- | --------------------------------------------------- | +| [独家](https://fashionnetwork.cn/lists/13) | [13](https://rsshub.app/fashionnetwork/cn/lists/13) | +| [商业](https://fashionnetwork.cn/lists/1) | [1](https://rsshub.app/fashionnetwork/cn/lists/1) | +| [人物](https://fashionnetwork.cn/lists/8) | [8](https://rsshub.app/fashionnetwork/cn/lists/8) | +| [设计](https://fashionnetwork.cn/lists/3) | [3](https://rsshub.app/fashionnetwork/cn/lists/3) | +| [产业](https://fashionnetwork.cn/lists/5) | [5](https://rsshub.app/fashionnetwork/cn/lists/5) | +| [创新研究](https://fashionnetwork.cn/lists/6) | [6](https://rsshub.app/fashionnetwork/cn/lists/6) | +| [人事变动](https://fashionnetwork.cn/lists/12) | [12](https://rsshub.app/fashionnetwork/cn/lists/12) | +| [新闻资讯](https://fashionnetwork.cn/lists/11) | [11](https://rsshub.app/fashionnetwork/cn/lists/11) | `, categories: ['new-media'], diff --git a/lib/routes/feng/forum.ts b/lib/routes/feng/forum.ts index 946e9f0b587fd3..de49b4e8dc13ad 100644 --- a/lib/routes/feng/forum.ts +++ b/lib/routes/feng/forum.ts @@ -30,8 +30,8 @@ export const route: Route = { maintainers: ['TonyRL'], handler, description: `| 最新回复 | 最新发布 | 热门 | 精华 | - | -------- | -------- | ---- | ------- | - | newest | all | hot | essence |`, +| -------- | -------- | ---- | ------- | +| newest | all | hot | essence |`, }; async function handler(ctx) { diff --git a/lib/routes/ff14/ff14-global.ts b/lib/routes/ff14/ff14-global.ts index 3ffb4561ab729e..d0a2122b6aa8e1 100644 --- a/lib/routes/ff14/ff14-global.ts +++ b/lib/routes/ff14/ff14-global.ts @@ -27,14 +27,14 @@ export const route: Route = { handler, description: `Region - | North Ameria | Europe | France | Germany | Japan | - | ------------ | ------ | ------ | ------- | ----- | - | na | eu | fr | de | jp | +| North Ameria | Europe | France | Germany | Japan | +| ------------ | ------ | ------ | ------- | ----- | +| na | eu | fr | de | jp | Category - | all | topics | notices | maintenance | updates | status | developers | - | --- | ------ | ------- | ----------- | ------- | ------ | ---------- |`, +| all | topics | notices | maintenance | updates | status | developers | +| --- | ------ | ------- | ----------- | ------- | ------ | ---------- |`, }; async function handler(ctx) { diff --git a/lib/routes/ff14/ff14-zh.ts b/lib/routes/ff14/ff14-zh.ts index d6b34786e28b9a..f1f29c2a8f4327 100644 --- a/lib/routes/ff14/ff14-zh.ts +++ b/lib/routes/ff14/ff14-zh.ts @@ -32,8 +32,8 @@ export const route: Route = { handler, url: 'ff.web.sdo.com/web8/index.html', description: `| 新闻 | 公告 | 活动 | 广告 | 所有 | - | ---- | -------- | ------ | --------- | ---- | - | news | announce | events | advertise | all |`, +| ---- | -------- | ------ | --------- | ---- | +| news | announce | events | advertise | all |`, }; async function handler(ctx) { diff --git a/lib/routes/finology/category.ts b/lib/routes/finology/category.ts index b6f5b622bd783b..5f913d24415678 100644 --- a/lib/routes/finology/category.ts +++ b/lib/routes/finology/category.ts @@ -17,23 +17,23 @@ export const route: Route = { maintainers: ['Rjnishant530'], handler, description: `::: info Category - | Category | Link | - | --------------------- | ------------------ | - | **Business** | business | - | Big Shots | entrepreneurship | - | Startups | startups-india | - | Brand Games | success-stories | - | Juicy Scams | juicy-scams | - | **Finance** | finance | - | Macro Moves | economy | - | News Platter | market-news | - | Tax Club | tax | - | Your Money | your-money | - | **Invest** | investing | - | Stock Market | stock-market | - | Financial Ratios | stock-ratios | - | Investor's Psychology | behavioral-finance | - | Mutual Funds | mutual-fund | +| Category | Link | +| --------------------- | ------------------ | +| **Business** | business | +| Big Shots | entrepreneurship | +| Startups | startups-india | +| Brand Games | success-stories | +| Juicy Scams | juicy-scams | +| **Finance** | finance | +| Macro Moves | economy | +| News Platter | market-news | +| Tax Club | tax | +| Your Money | your-money | +| **Invest** | investing | +| Stock Market | stock-market | +| Financial Ratios | stock-ratios | +| Investor's Psychology | behavioral-finance | +| Mutual Funds | mutual-fund | :::`, }; diff --git a/lib/routes/finology/tag.ts b/lib/routes/finology/tag.ts index 49c23aad881680..b12859f6afc3c9 100644 --- a/lib/routes/finology/tag.ts +++ b/lib/routes/finology/tag.ts @@ -17,36 +17,36 @@ export const route: Route = { handler, url: 'insider.finology.in/tag', description: `:::note Topic - | Topic | Link | - | ------------------------ | ------------------------ | - | Investment Decisions | investment-decisions | - | Investing 101 | investing-101 | - | Stock Markets | stock-markets | - | business news india | business-news-india | - | Company Analysis | company-analysis | - | Business and brand tales | business-and-brand-tales | - | Featured | featured | - | Fundamental Analysis | fundamental-analysis | - | Business Story | business-story | - | All Biz | all-biz | - | Stock Analysis | stock-analysis | - | Automobile Industry | automobile-industry | - | Indian Economy | indian-economy | - | Govt's Words | govt%27s-words | - | Behavioral Finance | behavioral-finance | - | Global Economy | global-economy | - | Startups | startups | - | GST | gst | - | Product Review | product-review | - | My Pocket | my-pocket | - | Business Games | business-games | - | Business Models | business-models | - | Indian Indices | indian-indices | - | Banking System | banking-system | - | Debt | debt | - | World News | world-news | - | Technology | technology | - | Regulatory Bodies | regulatory-bodies | +| Topic | Link | +| ------------------------ | ------------------------ | +| Investment Decisions | investment-decisions | +| Investing 101 | investing-101 | +| Stock Markets | stock-markets | +| business news india | business-news-india | +| Company Analysis | company-analysis | +| Business and brand tales | business-and-brand-tales | +| Featured | featured | +| Fundamental Analysis | fundamental-analysis | +| Business Story | business-story | +| All Biz | all-biz | +| Stock Analysis | stock-analysis | +| Automobile Industry | automobile-industry | +| Indian Economy | indian-economy | +| Govt's Words | govt%27s-words | +| Behavioral Finance | behavioral-finance | +| Global Economy | global-economy | +| Startups | startups | +| GST | gst | +| Product Review | product-review | +| My Pocket | my-pocket | +| Business Games | business-games | +| Business Models | business-models | +| Indian Indices | indian-indices | +| Banking System | banking-system | +| Debt | debt | +| World News | world-news | +| Technology | technology | +| Regulatory Bodies | regulatory-bodies | :::`, }; diff --git a/lib/routes/finviz/news.ts b/lib/routes/finviz/news.ts index 1599e6eb623f27..2e58563a1fa539 100644 --- a/lib/routes/finviz/news.ts +++ b/lib/routes/finviz/news.ts @@ -39,8 +39,8 @@ export const route: Route = { handler, url: 'finviz.com/news.ashx', description: `| News | Blogs | - | ---- | ---- | - | news | blogs |`, +| ---- | ---- | +| news | blogs |`, }; async function handler(ctx) { diff --git a/lib/routes/fjksbm/index.ts b/lib/routes/fjksbm/index.ts index 97656ef746f108..1ab469dfbf989f 100644 --- a/lib/routes/fjksbm/index.ts +++ b/lib/routes/fjksbm/index.ts @@ -27,8 +27,8 @@ export const route: Route = { maintainers: ['nczitzk'], handler, description: `| 已发布公告 (方案),即将开始 | 网络报名进行中 | 网络报名结束等待打印准考证 | 正在打印准考证 | 考试结束,等待发布成绩 | 已发布成绩 | 新闻动态 | 政策法规 | - | --------------------------- | -------------- | -------------------------- | -------------- | ---------------------- | ---------- | -------- | -------- | - | 0 | 1 | 2 | 3 | 4 | 5 | news | policy |`, +| --------------------------- | -------------- | -------------------------- | -------------- | ---------------------- | ---------- | -------- | -------- | +| 0 | 1 | 2 | 3 | 4 | 5 | news | policy |`, }; async function handler(ctx) { diff --git a/lib/routes/flyert/creditcard.ts b/lib/routes/flyert/creditcard.ts index b558dcd2358df8..57f1415f561a9a 100644 --- a/lib/routes/flyert/creditcard.ts +++ b/lib/routes/flyert/creditcard.ts @@ -31,26 +31,26 @@ export const route: Route = { handler, url: 'flyert.com/', description: `| 信用卡模块 | bank | - | ---------- | ------------- | - | 国内信用卡 | creditcard | - | 浦发银行 | pufa | - | 招商银行 | zhaoshang | - | 中信银行 | zhongxin | - | 交通银行 | jiaotong | - | 中国银行 | zhonghang | - | 工商银行 | gongshang | - | 广发银行 | guangfa | - | 农业银行 | nongye | - | 建设银行 | jianshe | - | 汇丰银行 | huifeng | - | 民生银行 | mingsheng | - | 兴业银行 | xingye | - | 花旗银行 | huaqi | - | 上海银行 | shanghai | - | 无卡支付 | wuka | - | 投资理财 | 137 | - | 网站权益汇 | 145 | - | 境外信用卡 | intcreditcard |`, +| ---------- | ------------- | +| 国内信用卡 | creditcard | +| 浦发银行 | pufa | +| 招商银行 | zhaoshang | +| 中信银行 | zhongxin | +| 交通银行 | jiaotong | +| 中国银行 | zhonghang | +| 工商银行 | gongshang | +| 广发银行 | guangfa | +| 农业银行 | nongye | +| 建设银行 | jianshe | +| 汇丰银行 | huifeng | +| 民生银行 | mingsheng | +| 兴业银行 | xingye | +| 花旗银行 | huaqi | +| 上海银行 | shanghai | +| 无卡支付 | wuka | +| 投资理财 | 137 | +| 网站权益汇 | 145 | +| 境外信用卡 | intcreditcard |`, }; async function handler(ctx) { diff --git a/lib/routes/focustaiwan/index.ts b/lib/routes/focustaiwan/index.ts index bd8271bfa77e3c..2162d09b0ce206 100644 --- a/lib/routes/focustaiwan/index.ts +++ b/lib/routes/focustaiwan/index.ts @@ -27,12 +27,12 @@ export const route: Route = { maintainers: ['nczitzk'], handler, description: `| Latest | Editor's Picks | Photos of the Day | - | ------ | -------------- | ----------------- | - | news | editorspicks | photos | +| ------ | -------------- | ----------------- | +| news | editorspicks | photos | - | Politics | Cross-strait | Business | Society | Science & Tech | Culture | Sports | - | -------- | ------------ | -------- | ------- | -------------- | ------- | ------ | - | politics | cross-strait | business | society | science & tech | culture | sports |`, +| Politics | Cross-strait | Business | Society | Science & Tech | Culture | Sports | +| -------- | ------------ | -------- | ------- | -------------- | ------- | ------ | +| politics | cross-strait | business | society | science & tech | culture | sports |`, }; async function handler(ctx) { diff --git a/lib/routes/followin/index.ts b/lib/routes/followin/index.ts index 6c47b8bb8928eb..be735a808781f5 100644 --- a/lib/routes/followin/index.ts +++ b/lib/routes/followin/index.ts @@ -48,15 +48,15 @@ export const route: Route = { handler, description: `Category ID - | For You | Market | Meme | BRC20 | NFT | Thread | In-depth | Tutorials | Videos | - | ------- | ------ | ---- | ----- | --- | ------ | -------- | --------- | ------ | - | 1 | 9 | 13 | 14 | 3 | 5 | 6 | 8 | 11 | +| For You | Market | Meme | BRC20 | NFT | Thread | In-depth | Tutorials | Videos | +| ------- | ------ | ---- | ----- | --- | ------ | -------- | --------- | ------ | +| 1 | 9 | 13 | 14 | 3 | 5 | 6 | 8 | 11 | Language - | English | 简体中文 | 繁體中文 | Tiếng Việt | - | ------- | -------- | -------- | ---------- | - | en | zh-Hans | zh-Hant | vi |`, +| English | 简体中文 | 繁體中文 | Tiếng Việt | +| ------- | -------- | -------- | ---------- | +| en | zh-Hans | zh-Hant | vi |`, }; async function handler(ctx) { diff --git a/lib/routes/fortnite/news.ts b/lib/routes/fortnite/news.ts index 826ff2b2f4c154..009649e660a47d 100644 --- a/lib/routes/fortnite/news.ts +++ b/lib/routes/fortnite/news.ts @@ -22,9 +22,9 @@ export const route: Route = { handler, description: `- \`options.lang\`, optional, language, eg. \`/fortnite/news/lang=en-US\`, common languages are listed below, more languages are available one the [official website](https://www.fortnite.com/news) - | English (default) | Spanish | Japanese | French | Korean | Polish | - | ----------------- | ------- | -------- | ------ | ------ | ------ | - | en-US | es-ES | ja | fr | ko | pl |`, +| English (default) | Spanish | Japanese | French | Korean | Polish | +| ----------------- | ------- | -------- | ------ | ------ | ------ | +| en-US | es-ES | ja | fr | ko | pl |`, }; async function handler(ctx) { diff --git a/lib/routes/fortunechina/index.ts b/lib/routes/fortunechina/index.ts index 6bbbc011527c46..3e69a1d12e8b25 100644 --- a/lib/routes/fortunechina/index.ts +++ b/lib/routes/fortunechina/index.ts @@ -29,8 +29,8 @@ export const route: Route = { maintainers: ['nczitzk'], handler, description: `| 商业 | 领导力 | 科技 | 研究 | - | ------- | --------- | ---- | ------ | - | shangye | lindgaoli | keji | report |`, +| ------- | --------- | ---- | ------ | +| shangye | lindgaoli | keji | report |`, }; async function handler(ctx) { diff --git a/lib/routes/fx-markets/channel.ts b/lib/routes/fx-markets/channel.ts index d583a6dfb1fef3..a36c6258d966fa 100644 --- a/lib/routes/fx-markets/channel.ts +++ b/lib/routes/fx-markets/channel.ts @@ -21,8 +21,8 @@ export const route: Route = { maintainers: [], handler, description: `| Trading | Infrastructure | Tech and Data | Regulation | - | ------- | -------------- | ------------- | ---------- | - | trading | infrastructure | tech-and-data | regulation |`, +| ------- | -------------- | ------------- | ---------- | +| trading | infrastructure | tech-and-data | regulation |`, }; async function handler(ctx) { diff --git a/lib/routes/fxiaoke/crm.ts b/lib/routes/fxiaoke/crm.ts index 6339bca0677fa3..66f42a450810ad 100644 --- a/lib/routes/fxiaoke/crm.ts +++ b/lib/routes/fxiaoke/crm.ts @@ -30,8 +30,8 @@ export const route: Route = { maintainers: ['akynazh'], handler, description: `| 全部文章 | 文章干货 | CRM 知识 | 纷享动态 | 签约喜报 | - | -------- | -------- | -------- | --------------- | --------- | - | news | blog | articles | about-influence | customers |`, +| -------- | -------- | -------- | --------------- | --------- | +| news | blog | articles | about-influence | customers |`, }; async function handler(ctx) { diff --git a/lib/routes/gamer520/index.ts b/lib/routes/gamer520/index.ts index 36ec51d6a30948..b49d5fe7e0a6cf 100644 --- a/lib/routes/gamer520/index.ts +++ b/lib/routes/gamer520/index.ts @@ -21,9 +21,9 @@ export const route: Route = { url: 'www.gamer520.com/', description: `分类 - | 所有 | Switch 游戏下载 | 金手指 | 3A 巨作 | switch 主题 | PC 游戏 | - | ---- | --------------- | ---------- | ------- | ----------- | ------- | - | all | switchyouxi | jinshouzhi | 3ajuzuo | zhuti | pcgame |`, +| 所有 | Switch 游戏下载 | 金手指 | 3A 巨作 | switch 主题 | PC 游戏 | +| ---- | --------------- | ---------- | ------- | ----------- | ------- | +| all | switchyouxi | jinshouzhi | 3ajuzuo | zhuti | pcgame |`, }; interface Post { diff --git a/lib/routes/gamersecret/index.ts b/lib/routes/gamersecret/index.ts index 1e132ca85f63fe..b871566eb6713d 100644 --- a/lib/routes/gamersecret/index.ts +++ b/lib/routes/gamersecret/index.ts @@ -27,26 +27,26 @@ export const route: Route = { maintainers: ['nczitzk'], handler, description: `| Latest News | PC | Playstation | Nintendo | Xbox | Moblie | - | ----------- | -- | ----------- | -------- | ---- | ------ | - | latest-news | pc | playstation | nintendo | xbox | moblie | +| ----------- | -- | ----------- | -------- | ---- | ------ | +| latest-news | pc | playstation | nintendo | xbox | moblie | Or - | GENERAL | GENERAL EN | MOBILE | MOBILE EN | - | ---------------- | ------------------ | --------------- | ----------------- | - | category/general | category/generalen | category/mobile | category/mobileen | +| GENERAL | GENERAL EN | MOBILE | MOBILE EN | +| ---------------- | ------------------ | --------------- | ----------------- | +| category/general | category/generalen | category/mobile | category/mobileen | - | NINTENDO | NINTENDO EN | PC | PC EN | - | ----------------- | ------------------- | ----------- | ------------- | - | category/nintendo | category/nintendoen | category/pc | category/pcen | +| NINTENDO | NINTENDO EN | PC | PC EN | +| ----------------- | ------------------- | ----------- | ------------- | +| category/nintendo | category/nintendoen | category/pc | category/pcen | - | PLAYSTATION | PLAYSTATION EN | REVIEWS | - | -------------------- | ---------------------- | ---------------- | - | category/playstation | category/playstationen | category/reviews | +| PLAYSTATION | PLAYSTATION EN | REVIEWS | +| -------------------- | ---------------------- | ---------------- | +| category/playstation | category/playstationen | category/reviews | - | XBOX | XBOX EN | - | ------------- | --------------- | - | category/xbox | category/xboxen |`, +| XBOX | XBOX EN | +| ------------- | --------------- | +| category/xbox | category/xboxen |`, }; async function handler(ctx) { diff --git a/lib/routes/gcores/articles.ts b/lib/routes/gcores/articles.ts new file mode 100644 index 00000000000000..4052c4599df3d9 --- /dev/null +++ b/lib/routes/gcores/articles.ts @@ -0,0 +1,53 @@ +import { type Data, type Route, ViewType } from '@/types'; + +import { getCurrentPath } from '@/utils/helpers'; +import { type Context } from 'hono'; + +import { baseUrl, processItems } from './util'; + +export const __dirname = getCurrentPath(import.meta.url); + +export const handler = async (ctx: Context): Promise => { + const limit: number = Number.parseInt(ctx.req.query('limit') ?? '30', 10); + + const targetUrl: string = new URL('articles', baseUrl).href; + const apiUrl: string = new URL(`gapi/v1/articles`, baseUrl).href; + + const query = { + 'page[limit]': limit, + sort: '-published-at', + include: 'category,user,media', + 'filter[list-all]': 1, + 'filter[is-news]': 0, + }; + + return await processItems(limit, query, apiUrl, targetUrl); +}; + +export const route: Route = { + path: '/articles', + name: '文章', + url: 'www.gcores.com', + maintainers: ['nczitzk'], + handler, + example: '/gcores/articles', + parameters: undefined, + description: undefined, + categories: ['game'], + features: { + requireConfig: false, + requirePuppeteer: false, + antiCrawler: false, + supportRadar: true, + supportBT: false, + supportPodcast: false, + supportScihub: false, + }, + radar: [ + { + source: ['www.gcores.com/articles'], + target: '/gcores/articles', + }, + ], + view: ViewType.Articles, +}; diff --git a/lib/routes/gcores/category.ts b/lib/routes/gcores/category.ts index 064ae9d7f0cdce..1cdd9eec53870c 100644 --- a/lib/routes/gcores/category.ts +++ b/lib/routes/gcores/category.ts @@ -26,8 +26,8 @@ export const route: Route = { maintainers: ['MoguCloud', 'StevenRCE0'], handler, description: `| 资讯 | 视频 | 电台 | 文章 | - | ---- | ------ | ------ | -------- | - | news | videos | radios | articles |`, +| ---- | ------ | ------ | -------- | +| news | videos | radios | articles |`, }; async function handler(ctx) { diff --git a/lib/routes/gcores/namespace.ts b/lib/routes/gcores/namespace.ts index 490cf738270ed3..a7d59141f6950d 100644 --- a/lib/routes/gcores/namespace.ts +++ b/lib/routes/gcores/namespace.ts @@ -4,4 +4,5 @@ export const namespace: Namespace = { name: '机核网', url: 'gcores.com', lang: 'zh-CN', + description: '机核 GCORES', }; diff --git a/lib/routes/gcores/news.ts b/lib/routes/gcores/news.ts new file mode 100644 index 00000000000000..ceed6a004f1703 --- /dev/null +++ b/lib/routes/gcores/news.ts @@ -0,0 +1,53 @@ +import { type Data, type Route, ViewType } from '@/types'; + +import { getCurrentPath } from '@/utils/helpers'; +import { type Context } from 'hono'; + +import { baseUrl, processItems } from './util'; + +export const __dirname = getCurrentPath(import.meta.url); + +export const handler = async (ctx: Context): Promise => { + const limit: number = Number.parseInt(ctx.req.query('limit') ?? '30', 10); + + const targetUrl: string = new URL('news', baseUrl).href; + const apiUrl: string = new URL('gapi/v1/articles', baseUrl).href; + + const query = { + 'page[limit]': limit, + sort: '-published-at', + include: 'category,user,media', + 'filter[list-all]': 1, + 'filter[is-news]': 1, + }; + + return await processItems(limit, query, apiUrl, targetUrl); +}; + +export const route: Route = { + path: '/news', + name: '资讯', + url: 'www.gcores.com', + maintainers: ['nczitzk'], + handler, + example: '/gcores/news', + parameters: undefined, + description: undefined, + categories: ['game'], + features: { + requireConfig: false, + requirePuppeteer: false, + antiCrawler: false, + supportRadar: true, + supportBT: false, + supportPodcast: false, + supportScihub: false, + }, + radar: [ + { + source: ['www.gcores.com/news'], + target: '/gcores/news', + }, + ], + view: ViewType.Articles, +}; diff --git a/lib/routes/gcores/parser.ts b/lib/routes/gcores/parser.ts new file mode 100644 index 00000000000000..815ba9bb02de58 --- /dev/null +++ b/lib/routes/gcores/parser.ts @@ -0,0 +1,284 @@ +import { art } from '@/utils/render'; +import { getCurrentPath } from '@/utils/helpers'; + +import path from 'node:path'; + +const __dirname = getCurrentPath(import.meta.url); + +interface Style { + [key: string]: string; +} + +interface BlockType { + element: string | undefined; + parentElement?: string; + aliasedElements?: string[]; +} + +interface InlineStyleRange { + offset: number; + length: number; + style: string; +} + +interface EntityRange { + offset: number; + length: number; + key: number; +} + +interface Entity { + type: string; + mutability: string; + data: any; +} + +interface Block { + key: string; + text: string; + type: string; + depth: number; + inlineStyleRanges: InlineStyleRange[]; + entityRanges: EntityRange[]; + data: any; +} + +interface Content { + blocks: Block[]; + entityMap: { [key: string]: Entity }; +} + +const imageBaseUrl: string = 'https://image.gcores.com'; + +const STYLES: Readonly> = { + BOLD: { fontWeight: 'bold' }, + CODE: { fontFamily: 'monospace', wordWrap: 'break-word' }, + ITALIC: { fontStyle: 'italic' }, + STRIKETHROUGH: { textDecoration: 'line-through' }, + UNDERLINE: { textDecoration: 'underline' }, +}; + +const BLOCK_TYPES: Readonly> = { + 'header-one': { element: 'h1' }, + 'header-two': { element: 'h2' }, + 'header-three': { element: 'h3' }, + 'header-four': { element: 'h4' }, + 'header-five': { element: 'h5' }, + 'header-six': { element: 'h6' }, + 'unordered-list-item': { element: 'li', parentElement: 'ul' }, + 'ordered-list-item': { element: 'li', parentElement: 'ol' }, + blockquote: { element: 'blockquote' }, + atomic: { element: undefined }, + 'code-block': { element: 'pre' }, + unstyled: { element: 'p' }, +}; + +/** + * Creates a styled HTML fragment for a given text and style object. + * @param text - The text content. + * @param style - CSS styles as key-value pairs. + * @returns HTML string with applied styles. + */ +const createStyledFragment = (text: string, style: Readonly