From f633d4e96c8f4f57060a7b75d98c53d2bff24a6c Mon Sep 17 00:00:00 2001 From: CTLifeHand <101992315@qq.com> Date: Thu, 1 Nov 2018 19:04:27 +0800 Subject: [PATCH] =?UTF-8?q?Enhancement:=20=E5=A6=B9=E5=AD=90=E5=9B=BE?= =?UTF-8?q?=E5=B8=96=E5=AD=90=E5=9B=BE=E7=89=87=E6=B1=87=E6=80=BB=20(#1024?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Enhancement: 妹子图帖子图片汇总 --- routes/mzitu/category.js | 17 ++++++++++++----- routes/mzitu/home.js | 27 +++++++++++++++------------ routes/mzitu/tag.js | 17 ++++++++++++----- routes/mzitu/util.js | 14 ++++++++++++++ 4 files changed, 53 insertions(+), 22 deletions(-) create mode 100644 routes/mzitu/util.js diff --git a/routes/mzitu/category.js b/routes/mzitu/category.js index 5080c241e..7c9abba5e 100644 --- a/routes/mzitu/category.js +++ b/routes/mzitu/category.js @@ -1,4 +1,5 @@ const axios = require('../../utils/axios'); +const { getList } = require('./util'); module.exports = async (ctx) => { const { category } = ctx.params; @@ -31,10 +32,16 @@ module.exports = async (ctx) => { ctx.state.data = { title: `妹子图-${mapper[category].name}`, link: `http://www.mzitu.com/${category}`, - item: data.map((item) => ({ - title: item.title, - description: ``, - link: `http://www.mzitu.com/${item.id}`, - })), + item: await Promise.all( + data.map(async (item) => { + const list = await getList(item.id); + const listDescription = list.join(''); + return { + title: `${item.title} ${list.length} pages`, + description: `
${listDescription}`, + link: `http://www.mzitu.com/${item.id}`, + }; + }) + ), }; }; diff --git a/routes/mzitu/home.js b/routes/mzitu/home.js index 321ffcda7..1d3894fe6 100644 --- a/routes/mzitu/home.js +++ b/routes/mzitu/home.js @@ -1,4 +1,5 @@ const axios = require('../../utils/axios'); +const { getList } = require('./util'); module.exports = async (ctx) => { const { type = '' } = ctx.params; @@ -15,20 +16,22 @@ module.exports = async (ctx) => { url, }); const data = response.data; - ctx.state.data = { title: '妹子图', link: `http://www.mzitu.com/${type}`, - item: data.map((item) => { - if (type === 'hot') { - item.thumb_src = item.thumb_src_min; - } - - return { - title: item.title, - description: ``, - link: `http://www.mzitu.com/${item.id}`, - }; - }), + item: await Promise.all( + data.map(async (item) => { + if (type === 'hot') { + item.thumb_src = item.thumb_src_min; + } + const list = await getList(item.id); + const listDescription = list.join(''); + return { + title: `${item.title} ${list.length} pages`, + description: `
${listDescription}`, + link: `http://www.mzitu.com/${item.id}`, + }; + }) + ), }; }; diff --git a/routes/mzitu/tag.js b/routes/mzitu/tag.js index bce06721b..5b264dde3 100644 --- a/routes/mzitu/tag.js +++ b/routes/mzitu/tag.js @@ -1,4 +1,5 @@ const axios = require('../../utils/axios'); +const { getList } = require('./util'); module.exports = async (ctx) => { let tag = ctx.params.tag; @@ -21,10 +22,16 @@ module.exports = async (ctx) => { ctx.state.data = { title: name, link: `http://www.mzitu.com/tag/${tag}`, - item: data.map((item) => ({ - title: item.title, - description: ``, - link: `http://www.mzitu.com/${item.id}`, - })), + item: await Promise.all( + data.map(async (item) => { + const list = await getList(item.id); + const listDescription = list.join(''); + return { + title: `${item.title} ${list.length} pages`, + description: `
${listDescription}`, + link: `http://www.mzitu.com/${item.id}`, + }; + }) + ), }; }; diff --git a/routes/mzitu/util.js b/routes/mzitu/util.js new file mode 100644 index 000000000..68b14c1e5 --- /dev/null +++ b/routes/mzitu/util.js @@ -0,0 +1,14 @@ +const axios = require('../../utils/axios'); + +exports.getList = async (id) => { + const contentUrl = `http://adr.meizitu.net/wp-json/wp/v2/i?id=${id}`; + const contentResponse = await axios({ + method: 'get', + url: contentUrl, + }); + const content = contentResponse.data.content.split(','); + return content.map((url) => { + url = url.replace(/"/g, ''); + return `
`; + }); +};