const got = require('@/utils/got'); const { parseDate } = require('@/utils/parse-date'); 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, pubDate: parseDate(item.created_at * 1000), }; }), }; };