diff --git a/docs/README.md b/docs/README.md index c341526a4..163f19fd6 100644 --- a/docs/README.md +++ b/docs/README.md @@ -384,6 +384,8 @@ RSSHub 提供下列 API 接口: + + ### 简书 diff --git a/router.js b/router.js index 767e0cb8c..fff220d71 100644 --- a/router.js +++ b/router.js @@ -460,6 +460,7 @@ router.get('/bugly/changelog/:platform', require('./routes/tencent/bugly/changel // wechat router.get('/wechat/wasi/:id', require('./routes/tencent/wechat/wasi')); router.get('/wechat/announce', require('./routes/tencent/wechat/announce')); +router.get('/wechat/miniprogram/plugins', require('./routes/tencent/wechat/miniprogram/plugins')); // All the Flight Deals router.get('/atfd/:locations/:nearby?', require('./routes/atfd/index')); diff --git a/routes/tencent/wechat/miniprogram/plugins.js b/routes/tencent/wechat/miniprogram/plugins.js new file mode 100644 index 000000000..f9fc98502 --- /dev/null +++ b/routes/tencent/wechat/miniprogram/plugins.js @@ -0,0 +1,59 @@ +const axios = require('../../../../utils/axios'); +const cheerio = require('cheerio'); + +module.exports = async (ctx) => { + const link = 'https://developers.weixin.qq.com/community/plugins'; + const response = await axios({ + method: 'post', + url: `https://developers.weixin.qq.com/community/ngi/plugins/cases?random=${Math.random()}`, + headers: { + Referer: link, + }, + }); + + const { pluginCases } = response.data.data; + const resultItem = await Promise.all( + pluginCases.map(async (plugin) => { + const item = { + title: plugin.title, + description: '', + link: `https://developers.weixin.qq.com/community/develop/doc/${plugin.docid}`, + author: plugin.nickname, + pubDate: new Date(plugin.createTime * 1000).toUTCString(), + }; + const url = `https://developers.weixin.qq.com/community/ngi/doc/detail/${plugin.docid}`; + const key = `miniprogram-plugin: ${url}`; + const value = await ctx.cache.get(key); + + if (value) { + item.description = value; + } else { + const pluginDetail = await axios({ + method: 'get', + url: `${url}?random=${Math.random()}`, + headers: { + Referer: link, + }, + }); + const id = 'x-rsshub'; + const $ = cheerio.load(`
${pluginDetail.data.data.Content}
`); + $('img').each((index, item) => { + item = $(item); + item.attr('src', item.attr('data-src')); + item.attr('referrerpolicy', 'no-referrer'); + }); + + item.description = $(`#${id}`).html(); + ctx.cache.set(key, item.description, 24 * 60 * 60); + } + + return Promise.resolve(item); + }) + ); + + ctx.state.data = { + title: '微信小程序插件', + link, + item: resultItem, + }; +};