// @ts-nocheck import got from '@/utils/got'; import { load } from 'cheerio'; import { parseDate } from '@/utils/parse-date'; export default async (ctx) => { const id = ctx.req.param('id'); const response = await got({ method: 'get', url: `https://m.okjike.com/users/${id}`, headers: { Referer: `https://m.okjike.com/users/${id}`, }, }); const html = response.data; const $ = load(html); const raw = $('[type = "application/json"]').html(); const data = JSON.parse(raw).props.pageProps; const getLink = (id, type) => { switch (type) { case 'REPOST': return `https://m.okjike.com/reposts/${id}`; case 'MEDIUM': return `https://www.okjike.com/medium/${id}`; default: return `https://m.okjike.com/originalPosts/${id}`; } }; const items = await Promise.all( data.posts.map(async (item) => { const typeMap = { ORIGINAL_POST: '发布', REPOST: '转发', ANSWER: '回答', QUESTION: '提问', PERSONAL_UPDATE: '创建新主题', }; let linkTemplate = ''; if (item.linkInfo && item.linkInfo.linkUrl) { linkTemplate = `${item.linkInfo.title}
`; } let imgTemplate = ''; if (item.pictures) { for (const picture of item.pictures) { imgTemplate += `
`; } } let content = item.content || (item.linkInfo && item.linkInfo.title) || (item.question && item.question.title) || item.title || ''; content = content.replaceAll(/\r\n|\n|\r/g, '
'); let shortenTitle = '一条动态'; if (content) { shortenTitle = content.replaceAll(/(
)+/g, ' '); content = `${content}

`; } let repostContent; if (item.type === 'REPOST') { const screenNameTemplate = item.target.user ? `@${item.target.user.screenName}` : ''; let repostImgTemplate = ''; if (item.target.pictures) { for (const picture of item.target.pictures) { repostImgTemplate += `
`; } } repostContent = `
转发 ${screenNameTemplate}: ${item.target.content}${repostImgTemplate}
`.replaceAll(/\r\n|\n|\r/g, '
'); content = `${content}${repostContent}`; } // 部分功能未知 /* else if (item.type === 'ANSWER') { let answerTextTemplate = ''; let answerImgTemplate = ''; let answerImgKeys = []; item.richtextContent.blocks && item.richtextContent.blocks.forEach((item) => { if (item.entityRanges.length && item.text === '[图片]') { answerImgKeys = [...answerImgKeys, ...Object.keys(item.entityRanges)]; } else { answerTextTemplate += item.text; } }); if (answerImgKeys.length) { answerImgKeys.forEach((key) => { const entity = item.richtextContent.entityMap[key]; if (entity.type.toUpperCase() === 'IMAGE') { answerImgTemplate += `
`; } }); } const answerContent = `回答: ${answerTextTemplate}${answerImgTemplate}`; content = `${content}${answerContent}`.replace(/\n|\r/g, '
'); } else if (item.type === 'QUESTION') { content = `在主题 ${item.topic.content} 提出了一个问题:

${content}`; } else if (item.type === 'PERSONAL_UPDATE') { shortenTitle = item.topic.content; content = ` 主题简介:
${item.topic.briefIntro.replace(/(?:\r\n|\r|\n)/g, '
')}`; }*/ const single = { title: `${typeMap[item.type]}了: ${shortenTitle}`, description: `${content}${linkTemplate}${imgTemplate}`.replace(/(
|\s)+$/, ''), pubDate: parseDate(item.createdAt), link: getLink(item.id, item.type), _extra: repostContent && { links: [ { url: getLink(item.target.id, item.target.type), type: 'quote', }, ], }, }; if (id === 'wenhao1996' && item.topic.id === '553870e8e4b0cafb0a1bef68') { single.link = item.urlsInText[0].url; const { data } = await got({ method: 'get', url: single.link, headers: { Referer: `https://m.okjike.com/users/${id}`, }, }); const $$ = load(data); $$('span.num,span.arrow').remove(); single.title = `一觉醒来世界发生了什么 ${$$('title').text()}`; single.description = ''; $$('div.container') .find('li.item') // eslint-disable-next-line array-callback-return .map((i, j) => { single.description += `${$$(j).find('a').text()}
`; }); } return single; }) ); ctx.set('data', { title: `${data.user.screenName}的即刻动态`, description: data.user.bio, link: `https://m.okjike.com/users/${id}`, image: data.user.avatarImage.picUrl, item: items, }); };