diff --git a/docs/other.md b/docs/other.md index 30c8314ec..1a18fcf24 100644 --- a/docs/other.md +++ b/docs/other.md @@ -849,6 +849,11 @@ type 为 all 时,category 参数不支持 cost 和 free +### 分类 + + + ## 油价 ### 今日油价 diff --git a/lib/router.js b/lib/router.js index a6ffdb5b0..bd1a882da 100644 --- a/lib/router.js +++ b/lib/router.js @@ -1014,6 +1014,7 @@ router.get('/fitchratings/site/:type', require('./routes/fitchratings/site')); // 移动支付 router.get('/mpaypass/news', require('./routes/mpaypass/news')); +router.get('/mpaypass/main/:type?', require('./routes/mpaypass/main')); // 新浪科技探索 router.get('/sina/discovery/:type', require('./routes/sina/discovery')); diff --git a/lib/routes/mpaypass/main.js b/lib/routes/mpaypass/main.js new file mode 100644 index 000000000..5915adbbe --- /dev/null +++ b/lib/routes/mpaypass/main.js @@ -0,0 +1,81 @@ +const axios = require('../../utils/axios'); +const cheerio = require('cheerio'); + +module.exports = async (ctx) => { + let title_url = ''; + const { type = '' } = ctx.params; + if (type) { + title_url = `http://www.mpaypass.com.cn/${type}.html`; + } else { + title_url = 'http://www.mpaypass.com.cn'; + } + + const response = await axios({ + method: 'get', + url: title_url, + }); + + const data = response.data; + + const $ = cheerio.load(data); + + let title_cn = ''; + if (type) { + title_cn = $(`a[href="http://www.mpaypass.com.cn/${type}.html"]`).text(); + } else { + title_cn = '最新文章'; + } + const list = $('.newslist') + .map(function() { + const info = { + title: $(this) + .find('#title') + .text(), + link: $(this) + .find('#pic a') + .attr('href'), + pic: $(this) + .find('#pic img') + .attr('src'), + time: $(this) + .find('#time') + .text(), + }; + return info; + }) + .get(); + + const out = await Promise.all( + list.map(async (info) => { + const title = info.title; + let date = info.time.toString(); + date = date.substring(2, date.length); + const link = info.link; + + const cache = await ctx.cache.get(link); + if (cache) { + return Promise.resolve(JSON.parse(cache)); + } + + const response = await axios.get(link); + const $ = cheerio.load(response.data); + const newsbody = $('div.newsbody').html(); + + const single = { + title: title, + link: link, + pubDate: date, + description: newsbody, + }; + + ctx.cache.set(link, JSON.stringify(single)); + return Promise.resolve(single); + }) + ); + + ctx.state.data = { + title: `移动支付网-${title_cn}`, + link: title_url, + item: out, + }; +};