feat: add ssapi user activity (#4037)

This commit is contained in:
umm233 2020-02-25 00:01:12 +08:00 committed by GitHub
parent 0ce23891e9
commit 19afa0d325
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 86 additions and 0 deletions

View File

@ -733,6 +733,10 @@ Supported sub-sites
<Route author="SunShinenny" example="/sspai/author/796518" path="/sspai/author/:id" :paramsDesc="['作者 id可在作者主页URL中找到']"/>
### 作者动态
<Route author="umm233" example="/sspai/activity/d0u947vr" path="/sspai/activity/:slug" :paramsDesc="['作者 slug可在作者主页URL中找到']"/>
### 专题
<Route author="SunShinenny" example="/sspai/topics" path="/sspai/topics">

View File

@ -778,6 +778,7 @@ router.get('/sspai/author/:id', require('./routes/sspai/author'));
router.get('/sspai/topics', require('./routes/sspai/topics'));
router.get('/sspai/topic/:id', require('./routes/sspai/topic'));
router.get('/sspai/tag/:keyword', require('./routes/sspai/tag'));
router.get('/sspai/activity/:slug', require('./routes/sspai/activity'));
// 异次元软件世界
router.get('/iplay/home', require('./routes/iplay/home'));

View File

@ -0,0 +1,81 @@
const got = require('@/utils/got');
module.exports = async (ctx) => {
const slug = ctx.params.slug;
const link = `https://sspai.com/u/${slug}/updates`;
const response = await got({
method: 'get',
url: `https://sspai.com/api/v1/information/user/activity/page/get?limit=10&offset=0&slug=${slug}`,
headers: {
Referer: link,
},
});
const response_user = await got({
method: 'get',
url: `https://sspai.com/api/v1/user/slug/info/get?slug=${slug}`,
headers: {
Referer: link,
},
});
const user_data = response_user.data.data;
const user_nickname = user_data.nickname;
const data = response.data.data;
let item_title = '';
let item_desc = '';
let item_url = '';
ctx.state.data = {
title: `少数派用户「${user_nickname}」动态更新`,
link,
description: `少数派用户「${user_nickname}」的动态更新`,
item: data.map((item) => {
const content_data = item.data;
const nicknames = new Array();
const slugs = new Array();
// 根据用户action选择输出
switch (item.key) {
case 'follow_user':
// 遍历关注的用户生成title及desc
for (const i in content_data) {
nicknames[i] = content_data[i].nickname;
slugs[i] = `<a href=https://sspai.com/u/${content_data[i].slug}/updates>${content_data[i].nickname}</a>`;
}
item_title = `${item.author.nickname}${item.action}${nicknames.join('、')}`;
item_desc = `${item.author.nickname}${item.action}${slugs.join('、')}`;
item_url = `https://sspai.com/u/${slug}/follow`;
break;
case 'like_article':
item_title = `${item.author.nickname}${item.action}${content_data.title}`;
item_desc = `文章简介:<br>${content_data.summary}`;
item_url = `https://sspai.com/post/${content_data.id}`;
break;
case 'comment_article':
item_title = `${item.author.nickname}${item.action}${content_data.article_title}`;
item_desc = `${content_data.comment}`;
item_url = `https://sspai.com/post/${content_data.article_id}`;
break;
case 'release_article':
item_title = `${item.author.nickname}${item.action}${content_data.title}`;
item_desc = `${content_data.summary}`;
item_url = `https://sspai.com/post/${content_data.id}`;
break;
case 'chosen_comment':
item_title = `${item.author.nickname}在文章「${content_data.article_title}」下的${item.action}`;
item_desc = `${content_data.comment}`;
item_url = `${content_data.comment}`;
break;
}
return {
title: item_title,
description: item_desc,
link: item_url,
};
}),
};
};