feat: 新增 Artand 用户新作品 (#2680)

* feat: 优化"王垠的博客-当然我在扯淡"

* 删除文章数量参数

* feat: 新增 Artand 用户新作品
This commit is contained in:
junbaor 2019-07-25 11:26:32 +08:00 committed by DIYgod
parent 901bcbd3f9
commit 897e567523
3 changed files with 51 additions and 0 deletions

View File

@ -159,3 +159,9 @@ pageClass: routes
### 小米有品每日上新
<Route author="xyqfer" example="/mi/youpin/new" path="/mi/youpin/new"/>
## Artand
### 用户新作
<Route author="junbaor" example="/artand/user/work/672" path="/artand/user/work/:uid" :paramsDesc="['用户ID, 不太好找, 自行抓包研究吧']"/>

View File

@ -1553,4 +1553,7 @@ router.get('/wikihow/category/:category/:type', require('./routes/wikihow/catego
router.get('/getitfree/category/:category?', require('./routes/getitfree/category.js'));
router.get('/getitfree/search/:keyword?', require('./routes/getitfree/search.js'));
// Artand
router.get('/artand/user/work/:uid', require('./routes/artand/user/work'));
module.exports = router;

View File

@ -0,0 +1,42 @@
const got = require('@/utils/got');
module.exports = async (ctx) => {
const uid = ctx.params.uid;
const url = `https://ios2.artand.cn/user1/index?tab=work&uid=${uid}`;
const response = await got({ method: 'get', url });
const dataUser = response.data.user;
const dataList = response.data.list;
const result = await Promise.all(
dataList.map(async (item) => {
const voItem = {
title: item.name,
author: dataUser.uname,
description: '',
pubDate: new Date(item.mtime * 1000).toUTCString(),
link: `https://artand.cn/artid/${Number(item.id) + 100000}`, // +100000 的逻辑挺奇怪
};
const link = 'https://ios2.artand.cn/works/index?post_id=' + item.id;
const cache = await ctx.cache.get(link);
if (cache) {
return Promise.resolve(JSON.parse(cache));
}
const itemReponse = await got.get(link);
voItem.description = itemReponse.data.data.work.desc;
ctx.cache.set(link, JSON.stringify(voItem));
return Promise.resolve(voItem);
})
);
ctx.state.data = {
title: `${dataUser.uname} 的 Artand 新作`,
link: `https://artand.cn/${dataUser.uid}`,
description: `${dataUser.uname} 的 Artand 新作`,
item: result,
};
};