diff --git a/docs/new-media.md b/docs/new-media.md index 55096a1cfc..480e2f680b 100644 --- a/docs/new-media.md +++ b/docs/new-media.md @@ -870,6 +870,10 @@ Supported sub-sites: +### 公众号(CareerEngine 来源) + + + ### 公众号(Telegram 频道来源) diff --git a/lib/router.js b/lib/router.js index 1508cf3110..8ae5f2d482 100644 --- a/lib/router.js +++ b/lib/router.js @@ -461,6 +461,7 @@ router.get('/bugly/changelog/:platform', require('./routes/tencent/bugly/changel // wechat router.get('/wechat/wemp/:id', require('./routes/tencent/wechat/wemp')); router.get('/wechat/csm/:id', require('./routes/tencent/wechat/csm')); +router.get('/wechat/ce/:id', require('./routes/tencent/wechat/ce')); router.get('/wechat/announce', require('./routes/tencent/wechat/announce')); router.get('/wechat/miniprogram/plugins', require('./routes/tencent/wechat/miniprogram/plugins')); router.get('/wechat/tgchannel/:id', require('./routes/tencent/wechat/tgchannel')); diff --git a/lib/routes/tencent/wechat/ce.js b/lib/routes/tencent/wechat/ce.js new file mode 100644 index 0000000000..c1b26f4c9c --- /dev/null +++ b/lib/routes/tencent/wechat/ce.js @@ -0,0 +1,32 @@ +const parser = require('@/utils/rss-parser'); +const got = require('@/utils/got'); +const cheerio = require('cheerio'); + +module.exports = async (ctx) => { + const { id } = ctx.params; + + const feed = await parser.parseURL(`https://posts.careerengine.us/author/${id}/rss`); + + const items = await Promise.all( + feed.items.splice(0, 10).map(async (item) => { + const response = await got.get(item.link); + + const $ = cheerio.load(response.data); + + const single = { + title: item.title, + description: $('.post').html(), + pubDate: item.pubDate, + link: item.link, + }; + return Promise.resolve(single); + }) + ); + + ctx.state.data = { + title: `微信公众号 - ${feed.title}`, + link: `https://posts.careerengine.us/author/${id}/posts`, + description: feed.description, + item: items, + }; +};