From d1457e3ab6aec4f9abe90bbdceb3a12c65eb18a2 Mon Sep 17 00:00:00 2001 From: Tony Date: Thu, 10 Aug 2023 03:18:07 +0800 Subject: [PATCH] feat(route): add runtrail (#12963) --- docs/new-media.md | 50 ++++++++++++++++++++--------------- lib/v2/runtrail/maintainer.js | 4 +++ lib/v2/runtrail/posts.js | 34 ++++++++++++++++++++++++ lib/v2/runtrail/radar.js | 13 +++++++++ lib/v2/runtrail/router.js | 3 +++ 5 files changed, 82 insertions(+), 22 deletions(-) create mode 100644 lib/v2/runtrail/maintainer.js create mode 100644 lib/v2/runtrail/posts.js create mode 100644 lib/v2/runtrail/radar.js create mode 100644 lib/v2/runtrail/router.js diff --git a/docs/new-media.md b/docs/new-media.md index dc300a0b8..e7f646ab2 100644 --- a/docs/new-media.md +++ b/docs/new-media.md @@ -481,7 +481,7 @@ pageClass: routes ### Headline - + ### News @@ -904,7 +904,7 @@ Edition ::: tip 提示 -在 Matataki 发表的文章会上传到星际文件系统(IPFS),永久保存。即使站内文章因为各种原因消失,用 RSS 获取过带 IPFS 连接的 Feed Item 的话,还是可以从 RSS 阅读器找回文章的。 +在 Matataki 发表的文章会上传到星际文件系统(IPFS),永久保存。即使站内文章因为各种原因消失,用 RSS 获取过带 IPFS 连接的 Feed Item 的话,还是可以从 RSS 阅读器找回文章的。 IPFS 网关有可能失效,那时候换成其他网关。 ::: @@ -3113,50 +3113,50 @@ column 为 third 时可选的 category: - 人工智能 - | 学术 | 开发者 | - | -------- | -------- | + | 学术 | 开发者 | + | -------- | -------- | | academic | yanxishe | - 数智化 - | 零售数智化 | 金融数智化 | 工业数智化 | 医疗数智化 | 城市数智化 | - | ---------- | ---------- | ---------- | ---------- | ----------- | + | 零售数智化 | 金融数智化 | 工业数智化 | 医疗数智化 | 城市数智化 | + | ---------- | ---------- | ---------- | ---------- | ----------- | | redigital | findigital | mandigital | medigital | citydigital | - 金融科技 - | 科技巨头 | 银行 AI | 金融云 | 风控与安全 | - | -------- | ------- | ------------ | ------------ | + | 科技巨头 | 银行 AI | 金融云 | 风控与安全 | + | -------- | ------- | ------------ | ------------ | | BigTech | bank | FinanceCloud | DataSecurity | - 医疗科技 - | 医疗 AI | 投融资 | 医疗器械 | 互联网医疗 | 生物医药 | 健康险 | - | -------- | ------ | -------- | ---------------- | ------------ | ------------ | + | 医疗 AI | 投融资 | 医疗器械 | 互联网医疗 | 生物医药 | 健康险 | + | -------- | ------ | -------- | ---------------- | ------------ | ------------ | | healthai | touzi | qixie | hulianwangyiliao | shengwuyiyao | jiankangxian | - 芯片 - | 材料设备 | 芯片设计 | 晶圆代工 | 封装测试 | - | --------- | ---------- | ------------- | --------- | + | 材料设备 | 芯片设计 | 晶圆代工 | 封装测试 | + | --------- | ---------- | ------------- | --------- | | materials | chipdesign | manufacturing | packaging | - 智慧城市 - | 智慧安防 | 智慧教育 | 智慧交通 | 智慧社区 | 智慧零售 | 智慧政务 | 智慧地产 | - | ------------- | -------------- | ------------------- | -------------- | -------------- | --------------- | -------- | + | 智慧安防 | 智慧教育 | 智慧交通 | 智慧社区 | 智慧零售 | 智慧政务 | 智慧地产 | + | ------------- | -------------- | ------------------- | -------------- | -------------- | --------------- | -------- | | smartsecurity | smarteducation | smarttransportation | smartcommunity | smartretailing | smartgovernment | proptech | - 工业互联网 - | 工业软件 | 工业安全 | 5G 工业互联网 | 工业转型实践 | - | ---------- | -------- | ------------- | ------------ | + | 工业软件 | 工业安全 | 5G 工业互联网 | 工业转型实践 | + | ---------- | -------- | ------------- | ------------ | | gysoftware | gysafety | 5ggy | gypratice | - AIoT - | 物联网 | 智能硬件 | 机器人 | 智能家居 | - | ------ | -------- | ------ | --------- | + | 物联网 | 智能硬件 | 机器人 | 智能家居 | + | ------ | -------- | ------ | --------- | | 5G | arvr | robot | smarthome | @@ -3574,6 +3574,12 @@ column 为 third 时可选的 category: +## 跑野大爆炸 + +### 最新文章 + + + ## 品途商业评论 ### 文章 @@ -3608,8 +3614,8 @@ column 为 third 时可选的 category: - `fulltext`,全文输出,例如:`/pingwest/tag/ChinaJoy/1/fulltext` -::: tip 提示 -该路由一次最多显示 30 条文章 +::: tip 提示 +该路由一次最多显示 30 条文章 ::: @@ -4200,7 +4206,7 @@ column 为 third 时可选的 category: -优先使用方法一,若是网易号搜索页面搜不到的小众网易号(文章页面不含`data-wemediaid`)则可使用此法。 +优先使用方法一,若是网易号搜索页面搜不到的小众网易号(文章页面不含`data-wemediaid`)则可使用此法。 触发反爬会只抓取到标题,建议自建。 ## 网易新闻 @@ -4948,7 +4954,7 @@ column 为 third 时可选的 category: ### 军事 - 军事新闻 - + ### 时事新闻 diff --git a/lib/v2/runtrail/maintainer.js b/lib/v2/runtrail/maintainer.js new file mode 100644 index 000000000..13972819d --- /dev/null +++ b/lib/v2/runtrail/maintainer.js @@ -0,0 +1,4 @@ +module.exports = { + '': ['TonyRL'], + '/': ['TonyRL'], +}; diff --git a/lib/v2/runtrail/posts.js b/lib/v2/runtrail/posts.js new file mode 100644 index 000000000..a5486e866 --- /dev/null +++ b/lib/v2/runtrail/posts.js @@ -0,0 +1,34 @@ +const got = require('@/utils/got'); +const { parseDate } = require('@/utils/parse-date'); + +module.exports = async (ctx) => { + const baseUrl = 'https://runtrail.cn'; + const { data: response } = await got(`${baseUrl}/wp-json/wp/v2/posts`, { + searchParams: { + _embed: true, + per_page: ctx.query.limit ? parseInt(ctx.query.limit) : 30, + }, + }); + + let data = response; + if (typeof response !== 'object') { + // remove php warnings before JSON + data = JSON.parse(response.match(/\[(.*)\]/)[0]); + } + + const items = data.map((item) => ({ + title: item.title.rendered, + description: item.content.rendered, + pubDate: parseDate(item.date_gmt), + updated: parseDate(item.modified_gmt), + author: item._embedded.author.map((a) => a.name).join(', '), + category: item._embedded['wp:term'][0].map((c) => c.name), + link: item.link, + })); + + ctx.state.data = { + title: '最新文章 - 跑野大爆炸', + link: baseUrl, + item: items, + }; +}; diff --git a/lib/v2/runtrail/radar.js b/lib/v2/runtrail/radar.js new file mode 100644 index 000000000..20c644525 --- /dev/null +++ b/lib/v2/runtrail/radar.js @@ -0,0 +1,13 @@ +module.exports = { + 'runtrail.cn': { + _name: '跑野大爆炸', + '.': [ + { + title: '最新文章', + docs: 'https://docs.rsshub.app/new-media.html#pao-ye', + source: ['/'], + target: '/runtrail', + }, + ], + }, +}; diff --git a/lib/v2/runtrail/router.js b/lib/v2/runtrail/router.js new file mode 100644 index 000000000..f0f3bc19c --- /dev/null +++ b/lib/v2/runtrail/router.js @@ -0,0 +1,3 @@ +module.exports = (router) => { + router.get('/', require('./posts')); +};