From e909f06bcf810d155920c8c6f2c92a04f92ed9ab Mon Sep 17 00:00:00 2001 From: Queensferry Date: Tue, 28 Apr 2020 10:28:52 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=94=B9=E8=BF=9B=E8=B1=86=E7=93=A3?= =?UTF-8?q?=E7=83=AD=E9=97=A8=E5=9B=BE=E4=B9=A6=E6=8E=92=E8=A1=8C=E8=B7=AF?= =?UTF-8?q?=E7=94=B1=20(#4546)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/social-media.md | 8 ++++---- lib/router.js | 2 +- lib/routes/douban/book/rank.js | 24 +++++++++++++----------- 3 files changed, 18 insertions(+), 16 deletions(-) diff --git a/docs/social-media.md b/docs/social-media.md index 6700c0c06..9eeca1eec 100644 --- a/docs/social-media.md +++ b/docs/social-media.md @@ -574,11 +574,11 @@ Tiny Tiny RSS 会给所有 iframe 元素添加 `sandbox="allow-scripts"` 属性 ### 热门图书排行 - + -| 虚构 | 非虚构 | -| ------- | ---------- | -| fiction | nonfiction | +| 全部 | 虚构 | 非虚构 | +| ---- | ------- | ---------- | +| | fiction | nonfiction | diff --git a/lib/router.js b/lib/router.js index b5857251e..efa21072b 100644 --- a/lib/router.js +++ b/lib/router.js @@ -173,7 +173,7 @@ router.get('/douban/book/latest', require('./routes/douban/latest_book')); router.get('/douban/event/hot/:locationId', require('./routes/douban/event/hot')); router.get('/douban/commercialpress/latest', require('./routes/douban/commercialpress/latest')); router.get('/douban/bookstore', require('./routes/douban/bookstore')); -router.get('/douban/book/rank/:type', require('./routes/douban/book/rank')); +router.get('/douban/book/rank/:type?', require('./routes/douban/book/rank')); router.get('/douban/doulist/:id', require('./routes/douban/doulist')); router.get('/douban/explore/column/:id', require('./routes/douban/explore_column')); router.get('/douban/people/:userid/status', require('./routes/douban/people/status.js')); diff --git a/lib/routes/douban/book/rank.js b/lib/routes/douban/book/rank.js index cb2e1a35d..2c7661a6f 100644 --- a/lib/routes/douban/book/rank.js +++ b/lib/routes/douban/book/rank.js @@ -1,22 +1,24 @@ const got = require('@/utils/got'); module.exports = async (ctx) => { - const { type = 'fiction' } = ctx.params; - const referer = `https://m.douban.com/subject_collection/book_${type}_hot_weekly`; + const { type = '' } = ctx.params; + const referer = `https://m.douban.com/book/${type}`; - const response = await got({ - method: 'get', - url: `https://m.douban.com/rexxar/api/v2/subject_collection/book_${type}_hot_weekly/items?start=0&count=10`, - headers: { - Referer: referer, - }, - }); + const _ = async (type) => { + const response = await got({ + url: `https://m.douban.com/rexxar/api/v2/subject_collection/book_${type}_hot_weekly/items?start=0&count=10`, + headers: { Referer: referer }, + }); + return response.data.subject_collection_items; + }; + + const items = type ? await _(type) : [...(await _('fiction')), ...(await _('nonfiction'))]; ctx.state.data = { - title: `豆瓣热门图书-${type === 'fiction' ? '虚构类' : '非虚构类'}`, + title: `豆瓣热门图书-${type ? (type === 'fiction' ? '虚构类' : '非虚构类') : '全部'}`, link: referer, description: '每周一更新', - item: response.data.subject_collection_items.map(({ title, url, cover, info, rating, null_rating_reason }) => { + item: items.map(({ title, url, cover, info, rating, null_rating_reason }) => { const rate = rating ? `${rating.value.toFixed(1)}分` : null_rating_reason; const description = `
${title}/${info}/${rate}