diff --git a/docs/new-media.md b/docs/new-media.md index e897a0891..7668bc723 100644 --- a/docs/new-media.md +++ b/docs/new-media.md @@ -733,6 +733,10 @@ Supported sub-sites: +### 作者动态 + + + ### 专题 diff --git a/lib/router.js b/lib/router.js index 63a800821..2813576d2 100644 --- a/lib/router.js +++ b/lib/router.js @@ -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')); diff --git a/lib/routes/sspai/activity.js b/lib/routes/sspai/activity.js new file mode 100644 index 000000000..ea6932749 --- /dev/null +++ b/lib/routes/sspai/activity.js @@ -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] = `${content_data[i].nickname}`; + } + 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 = `文章简介:
${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, + }; + }), + }; +};