diff --git a/docs/new-media.md b/docs/new-media.md index b3e6e57c92..f08f94f3ae 100644 --- a/docs/new-media.md +++ b/docs/new-media.md @@ -176,6 +176,10 @@ pageClass: routes +### 快讯 + + + ## 币世界 ### 快讯 @@ -391,6 +395,10 @@ pageClass: routes +## 选股宝 + + + ## 决胜网 ### 最新资讯 diff --git a/lib/router.js b/lib/router.js index ccfe796a85..196f3dc1bc 100644 --- a/lib/router.js +++ b/lib/router.js @@ -376,6 +376,9 @@ router.get('/wikipedia/mainland', require('./routes/wikipedia/mainland')); // 联合国 United Nations router.get('/un/scveto', require('./routes/un/scveto')); +// 选股宝 +router.get('/xuangubao/subject/:subject_id', require('./routes/xuangubao/subject')); + // 雪球 router.get('/xueqiu/user/:id/:type?', require('./routes/xueqiu/user')); router.get('/xueqiu/favorite/:id', require('./routes/xueqiu/favorite')); @@ -1469,6 +1472,7 @@ router.get('/topys/:category', require('./routes/topys/article')); // 巴比特作者专栏 router.get('/8btc/:authorid', require('./routes/8btc/author')); +router.get('/8btc/news/flash', require('./routes/8btc/news/flash')); // VueVlog router.get('/vuevideo/:userid', require('./routes/vuevideo/user')); diff --git a/lib/routes/8btc/news/flash.js b/lib/routes/8btc/news/flash.js new file mode 100644 index 0000000000..b3403fa5de --- /dev/null +++ b/lib/routes/8btc/news/flash.js @@ -0,0 +1,41 @@ +const got = require('@/utils/got'); + +module.exports = async (ctx) => { + const response = await got({ + method: 'get', + url: `https://app.blockmeta.com/w1/news/list?num=30&cat_id=4481&page=1`, + headers: { + from: 'web', + Referer: `https://www.8btc.com/flash`, + }, + }); + + const newsflashes = response.data.list; + + let newsflashesList = []; + for (let i = 0; i < newsflashes.length; i++) { + newsflashesList = newsflashesList.concat(newsflashes[i]); + } + + const out = newsflashesList.map((item) => { + const pubDate = item.post_date_format; + const link = item.source.link; + const title = item.title; + const description = item.content; + + const single = { + title, + link, + pubDate, + description, + }; + + return single; + }); + + ctx.state.data = { + title: `快讯 - 巴比特`, + link: `https://www.8btc.com/flash`, + item: out, + }; +}; diff --git a/lib/routes/xuangubao/subject.js b/lib/routes/xuangubao/subject.js new file mode 100644 index 0000000000..9110cc5ba3 --- /dev/null +++ b/lib/routes/xuangubao/subject.js @@ -0,0 +1,47 @@ +const got = require('@/utils/got'); + +module.exports = async (ctx) => { + const subject_id = ctx.params.subject_id; + + const response = await got({ + method: 'get', + url: `https://api.xuangubao.cn/api/pc/subj/${subject_id}?limit=20`, + headers: { + Referer: `https://xuangubao.cn/subject/${subject_id}`, + }, + }); + + const subject = response.data.Subject; + const subject_title = subject.Title; + const subject_desc = subject.Desc; + + const messages = response.data.Messages; + + let messagesList = []; + for (let i = 0; i < messages.length; i++) { + messagesList = messagesList.concat(messages[i]); + } + + const out = messagesList.map((item) => { + const date = item.CreatedAt; + const link = item.OriginalUrl; + const title = item.Title; + const description = item.Summary; + + const single = { + title, + link, + pubDate: date, + description, + }; + + return single; + }); + + ctx.state.data = { + title: `${subject_title} - 主题 - 选股宝`, + link: `https://xuangubao.cn/subject/${subject_id}`, + description: `${subject_desc}`, + item: out, + }; +};