From 0938c03998d5dfec954f437ddc9fd327b801213d Mon Sep 17 00:00:00 2001 From: Henry Wang Date: Fri, 14 Sep 2018 04:02:54 +0100 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8D=B3=E5=88=BB=E6=96=B0?= =?UTF-8?q?=E7=89=88=E8=B7=AF=E7=94=B1=20/jike/dev/:id=20(#694)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 测试中,完善后替代 `/jike/:id` 采用WebP #555 包含了 #692 目标关闭 #621 --- router.js | 1 + routes/jike/topicDev.js | 60 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 routes/jike/topicDev.js diff --git a/router.js b/router.js index 5c8e86f95b..ecfde16542 100644 --- a/router.js +++ b/router.js @@ -239,6 +239,7 @@ router.get('/jike/topic/text/:id', require('./routes/jike/topicText')); router.get('/jike/topic/square/:id', require('./routes/jike/topicSquare')); router.get('/jike/user/:id', require('./routes/jike/user')); router.get('/jike/daily', require('./routes/jike/daily')); +router.get('/jike/dev/:id', require('./routes/jike/topicDev')); // 极客时间 router.get('/geektime/column/:cid', require('./routes/geektime/column')); diff --git a/routes/jike/topicDev.js b/routes/jike/topicDev.js new file mode 100644 index 0000000000..3d8835505a --- /dev/null +++ b/routes/jike/topicDev.js @@ -0,0 +1,60 @@ +const axios = require('../../utils/axios'); + +module.exports = async (ctx) => { + const id = ctx.params.id; + + const response = await axios({ + method: 'post', + url: 'https://app.jike.ruguoapp.com/1.0/messages/history', + headers: { + Referer: `https://m.okjike.com/topics/${id}`, + 'App-Version': '4.1.0', + }, + data: { + loadMoreKey: null, + topic: id, + limit: 10, + }, + }); + + const data = response.data.data; + const topic = data[0].topic; + let link = `https://web.okjike.com/topic/${id}/official`; + + ctx.state.data = { + title: `${topic.content} - 即刻主题精选`, + link, + description: topic.content, + image: topic.squarePicture.picUrl || topic.squarePicture.middlePicUrl || topic.squarePicture.thumbnailUrl, + item: data.map((item) => { + let content = ''; + + // 处理正文内容 + content += item.content || item.content.trim() !== '' ? `
${item.content}

` : ''; + + // 处理缩略图, WEBP + JPEG + if (item.pictures) { + item.pictures.forEach( + (pic) => + (content += ``) + ); + } + + // 处理外链,originalLinkUrl 优先级高于 linkUrl + if (item.linkInfo && (item.linkInfo.originalLinkUrl || item.linkInfo.linkUrl)) { + link = item.linkInfo.originalLinkUrl || item.linkInfo.linkUrl; + content += `
查看外链`; + } + + return { + // 处理标题,无标题则使用「主题名称」有新消息 + title: item.content.trim() === '' ? `「${topic.content}」有新消息` : item.content, + description: `${content}`, + pubDate: new Date(item.createdAt).toUTCString(), + link, + }; + }), + }; +};