diff --git a/docs/bbs.md b/docs/bbs.md index b65a81c29f..96b70c888f 100644 --- a/docs/bbs.md +++ b/docs/bbs.md @@ -241,6 +241,12 @@ pageClass: routes +## 三星盖乐世社区 + +### 最新帖子 + + + ## 书友社区 ### 导读 diff --git a/lib/router.js b/lib/router.js index f26d967853..78ee0f4c1c 100644 --- a/lib/router.js +++ b/lib/router.js @@ -2799,6 +2799,9 @@ router.get('/law/jh', require('./routes/law/jh')); // Mobilism router.get('/mobilism/release', require('./routes/mobilism/release')); +// 三星盖乐世社区 +router.get('/samsungmembers/latest', require('./routes/samsungmembers/latest')); + // 东莞教研网 router.get('/dgjyw/:type', require('./routes/dgjyw/index')); diff --git a/lib/routes/samsungmembers/latest.js b/lib/routes/samsungmembers/latest.js new file mode 100644 index 0000000000..f0ad9e288f --- /dev/null +++ b/lib/routes/samsungmembers/latest.js @@ -0,0 +1,42 @@ +const url = require('url'); +const got = require('@/utils/got'); +const cheerio = require('cheerio'); + +module.exports = async (ctx) => { + const currentUrl = 'http://www.samsungmembers.cn/bbs/'; + const response = await got({ + method: 'get', + url: currentUrl, + }); + const $ = cheerio.load(response.data); + const list = $('div.ImgList dl dt') + .slice(0, 15) + .map((_, item) => { + item = $(item); + const a = item.find('a'); + return { + title: a.text(), + link: url.resolve('http://www.samsungmembers.cn/', a.attr('href')), + }; + }) + .get(); + + const items = await Promise.all( + list.map( + async (item) => + await ctx.cache.tryGet(item.link, async () => { + const res = await got({ method: 'get', url: item.link }); + const content = cheerio.load(res.data); + item.pubDate = new Date(content('p.data').text() + ' GMT+8').toUTCString(); + item.description = content('div.BSHARE_POP').html(); + return item; + }) + ) + ); + + ctx.state.data = { + title: '三星盖乐世社区 - 最新帖子', + link: currentUrl, + item: items, + }; +};