diff --git a/docs/README.md b/docs/README.md index 826f3e4789..88dc366bc5 100644 --- a/docs/README.md +++ b/docs/README.md @@ -468,6 +468,14 @@ RSSHub 提供下列 API 接口: + + +| 虚构 | 非虚构 | +| ------- | ---------- | +| fiction | nonfiction | + + + ### Disqus diff --git a/router.js b/router.js index bf4ac4077a..33b549abe0 100644 --- a/router.js +++ b/router.js @@ -196,6 +196,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('/jandan/:sub_model', require('./routes/jandan/pic')); diff --git a/routes/douban/book/rank.js b/routes/douban/book/rank.js new file mode 100644 index 0000000000..c7193f93c1 --- /dev/null +++ b/routes/douban/book/rank.js @@ -0,0 +1,31 @@ +const axios = require('../../../utils/axios'); + +module.exports = async (ctx) => { + const { type = 'fiction' } = ctx.params; + const referer = `https://m.douban.com/subject_collection/book_${type}_hot_weekly`; + + const response = await axios({ + method: 'get', + url: `https://m.douban.com/rexxar/api/v2/subject_collection/book_${type}_hot_weekly/items?start=0&count=10`, + headers: { + Referer: referer, + }, + }); + + ctx.state.data = { + title: `豆瓣热门图书-${type === 'fiction' ? '虚构类' : '非虚构类'}`, + link: referer, + description: '每周一更新', + item: response.data.subject_collection_items.map(({ title, url, cover, info, rating }) => { + const description = `
+ ${title}/${info}/${rating.value.toFixed(1)}分 + `; + + return { + title: `${title}-${info}`, + description, + link: url, + }; + }), + }; +};