From 5a2a37f3e1aafb4b597d1eae38a8ffa73f48df28 Mon Sep 17 00:00:00 2001 From: DIYgod Date: Fri, 29 Nov 2019 17:41:50 +0800 Subject: [PATCH] feat: pixiv search r18, close #1333, close #2932, close #3447 --- docs/en/social-media.md | 4 ++++ docs/social-media.md | 2 +- lib/router.js | 2 +- lib/routes/pixiv/search.js | 9 ++++++++- 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/docs/en/social-media.md b/docs/en/social-media.md index 0cc34b4d0d..0b286fbbe7 100644 --- a/docs/en/social-media.md +++ b/docs/en/social-media.md @@ -44,6 +44,10 @@ pageClass: routes +### Keyword + + + ## Telegram ### Channel diff --git a/docs/social-media.md b/docs/social-media.md index 9f63d3f233..4eebb2df88 100644 --- a/docs/social-media.md +++ b/docs/social-media.md @@ -322,7 +322,7 @@ Tiny Tiny RSS 会给所有 iframe 元素添加 `sandbox="allow-scripts"` 属性 ### 关键词 - + ### 关注的新作品 diff --git a/lib/router.js b/lib/router.js index 82c4d4e3b8..b03de77b90 100644 --- a/lib/router.js +++ b/lib/router.js @@ -142,7 +142,7 @@ router.get('/pixiv/user/bookmarks/:id', require('./routes/pixiv/bookmarks')); router.get('/pixiv/user/illustfollows', require('./routes/pixiv/illustfollow')); router.get('/pixiv/user/:id/', require('./routes/pixiv/user')); router.get('/pixiv/ranking/:mode/:date?', require('./routes/pixiv/ranking')); -router.get('/pixiv/search/:keyword/:order?', require('./routes/pixiv/search')); +router.get('/pixiv/search/:keyword/:order?/:r18?', require('./routes/pixiv/search')); // 豆瓣 router.get('/douban/movie/playing', require('./routes/douban/playing')); diff --git a/lib/routes/pixiv/search.js b/lib/routes/pixiv/search.js index cae89c7548..57a539a790 100644 --- a/lib/routes/pixiv/search.js +++ b/lib/routes/pixiv/search.js @@ -10,6 +10,7 @@ module.exports = async (ctx) => { const keyword = ctx.params.keyword; const order = ctx.params.order || 'date'; + const r18 = ctx.params.r18; if (!getToken()) { throw 'pixiv not login'; @@ -22,7 +23,12 @@ module.exports = async (ctx) => { response = await searchIllust(keyword, getToken()); } - const illusts = response.data.illusts; + let illusts = response.data.illusts; + if (r18 === '1') { + illusts = illusts.filter((item) => item.x_restrict === 0); + } else if (r18 === '2') { + illusts = illusts.filter((item) => item.x_restrict === 1); + } ctx.state.data = { title: `${keyword} 的 pixiv ${order === 'popular' ? '热门' : ''}内容`, @@ -44,5 +50,6 @@ module.exports = async (ctx) => { link: `https://www.pixiv.net/member_illust.php?mode=medium&illust_id=${illust.id}`, }; }), + allowEmpty: true, }; };