Merge pull request #6611 from huyyi/mcdonalds_news

feat: add mcdonalds news
This commit is contained in:
NeverBehave
2021-01-10 01:56:41 -05:00
committed by GitHub
3 changed files with 67 additions and 0 deletions
+11
View File
@@ -347,3 +347,14 @@ For instance, in <https://www.leboncoin.fr/recherche/?**category=10&locations=Pa
### 商品上新
<Route author="LogicJake" example="/youzan/goods/13328377" path="/youzan/goods/:id" :paramsDesc="['商铺id']"/>
## 麦当劳
### 麦当劳活动资讯
<Route author="huyyi" example="/mcdonalds/sales+event" path="/mcdonalds/:category" :paramsDesc="['分类名(可用+连接多个分类)']">
| 全部分类 | 社会责任 | 人员品牌 | 产品故事 | 优惠 | 品牌文化 | 活动速报 |
| -------- | ------- | --- | ------- | ------ | ------- | -------- |
| news_list | responsibility | brand | product | sales | culture | event |
</Route>
+5
View File
@@ -3786,6 +3786,10 @@ router.get('/nace/blog/:sort?', require('./routes/nace/blog'));
// Caixin Latest
router.get('/caixin/latest', require('./routes/caixin/latest'));
// Mcdonalds
router.get('/mcdonalds/:category', require('./routes/mcdonalds/news'));
// Pincong 品葱
router.get('/pincong/category/:category?/:sort?', require('./routes/pincong/index'));
router.get('/pincong/hot/:category?', require('./routes/pincong/hot'));
@@ -3811,4 +3815,5 @@ router.get('/simpread/changelog', require('./routes/simpread/changelog'));
// Radio Free Asia
router.get('/rfa/:language?/:channel?/:subChannel?', require('./routes/rfa/index'));
module.exports = router;
+51
View File
@@ -0,0 +1,51 @@
const got = require('@/utils/got');
const cheerio = require('cheerio');
module.exports = async (ctx) => {
const category_param = ctx.params.category || 'news_list';
const categories = category_param.split('+');
const baseUrl = "https://www.mcdonalds.com.cn/news/";
const get_news_list = async (cates) => await Promise.all(
cates.map(async (cate) => {
const response = await got.get(baseUrl + cate);
const $ = cheerio.load(response.data);
// console.log($('title').text());
const news = $('.news_list .box-container > div').slice(0, 10).map((idx, item) => {
item = $(item);
return item.find('a[target]').attr('href');
})
.get();
// console.log(news);
return Promise.resolve(news);
})
);
const all_news = [].concat.apply([], await get_news_list(categories));
const out = await Promise.all(
all_news.map(async (news_url) => {
const news_detail = await ctx.cache.tryGet(news_url, async () => {
const result = await got.get(news_url);
const $ = cheerio.load(result.data);
// console.log($('h3 ~ time').text(), news_url);
return {
title: $('h3').text(),
link: news_url,
// author: author,
pubDate: new Date($('h3 ~ time').text()).toUTCString(),
description: $('.cmsPage').html(),
};
});
return Promise.resolve(news_detail);
})
);
ctx.state.data = {
title: '麦当劳资讯',
link: baseUrl,
item: out,
};
};