From ff3efd68ee04e4ee00bfb725f3277d94a57b2745 Mon Sep 17 00:00:00 2001 From: shAlfred Date: Thu, 28 Feb 2019 19:05:12 +0800 Subject: [PATCH] =?UTF-8?q?add=20=E8=B1=86=E7=93=A3=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E5=B9=BF=E6=92=AD=20RSS=20(#1636)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: add douban user's status feeds * docs: add douban user's status feeds * docs: modify douban user's status feed tips --- docs/README.md | 12 +++++++ lib/router.js | 1 + lib/routes/douban/people/status.js | 51 ++++++++++++++++++++++++++++++ 3 files changed, 64 insertions(+) create mode 100644 lib/routes/douban/people/status.js diff --git a/docs/README.md b/docs/README.md index ec1cac5c96..36376b98b8 100644 --- a/docs/README.md +++ b/docs/README.md @@ -522,6 +522,18 @@ RSSHub 提供下列 API 接口: + + +::: tip 提示 + +- **目前只支持整数型 id** +- 字母型的 id,可以通过头像图片链接来找到其整数型 id,图片命名规则`ul[userid]-*.jpg` +- 例如:用户 id: `MovieL`他的头像图片链接:`https://img1.doubanio.com/icon/ul1128221-98.jpg`他的整数型 id: `1128221` + +::: + + + ### Disqus diff --git a/lib/router.js b/lib/router.js index 4d6bac2c8a..56b4ee220b 100644 --- a/lib/router.js +++ b/lib/router.js @@ -213,6 +213,7 @@ router.get('/douban/bookstore', require('./routes/douban/bookstore')); 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')); // 煎蛋 router.get('/jandan/:sub_model', require('./routes/jandan/pic')); diff --git a/lib/routes/douban/people/status.js b/lib/routes/douban/people/status.js new file mode 100644 index 0000000000..b0e0350b8d --- /dev/null +++ b/lib/routes/douban/people/status.js @@ -0,0 +1,51 @@ +const axios = require('../../../utils/axios'); + +function getContentByActivity(status) { + const title = `${status.author.name} ${status.activity}:${status.text}`; + let description = ''; + switch (status.activity) { + case '说': + break; + case '转发': + description = getContentByActivity(status.reshared_status).title; + break; + default: + if (status.card) { + if (status.card.rating) { + description = `${status.card.title}
评分:${status.card.rating}
${status.card.subtitle}`; + } else { + description = `${status.card.title}
${status.card.subtitle}`; + } + } + break; + } + return { title, description }; +} + +module.exports = async (ctx) => { + const userid = ctx.params.userid; + const url = `https://m.douban.com/rexxar/api/v2/status/user_timeline/${userid}?max_id=&ck=eUUA&for_mobile=1`; + + const response = await axios({ + method: 'GET', + url: url, + headers: { + Referer: `https://m.douban.com/people/${userid}/statuses`, + }, + }); + const items = response.data.items; + + ctx.state.data = { + title: `豆瓣广播-${userid}`, + link: `https://m.douban.com/people/${userid}/statuses`, + item: items.map((item) => { + const r = getContentByActivity(item.status); + return { + title: r.title, + link: item.status.sharing_url, + pubDate: item.status.create_time, + description: r.description, + }; + }), + }; +};