add 豆瓣用户广播 RSS (#1636)

* feat: add douban user's status feeds

* docs: add douban user's status feeds

* docs: modify douban user's status feed tips
This commit is contained in:
shAlfred
2019-02-28 19:05:12 +08:00
committed by DIYgod
parent f9ebd68f58
commit ff3efd68ee
3 changed files with 64 additions and 0 deletions

View File

@@ -522,6 +522,18 @@ RSSHub 提供下列 API 接口:
<route name="豆列" author="LogicJake" example="/douban/doulist/37716774" path="douban/doulist/:id" :paramsDesc="['豆列id']"/> <route name="豆列" author="LogicJake" example="/douban/doulist/37716774" path="douban/doulist/:id" :paramsDesc="['豆列id']"/>
<route name="用户广播" author="alfredcai" example="/douban/people/62759792/status" path="douban/people/:userid/status" :paramsDesc="['整数型用户 id']">
::: tip 提示
- **目前只支持整数型 id**
- 字母型的 id可以通过头像图片链接来找到其整数型 id图片命名规则`ul[userid]-*.jpg`
- 例如:用户 id: `MovieL`他的头像图片链接:`https://img1.doubanio.com/icon/ul1128221-98.jpg`他的整数型 id: `1128221`
:::
</route>
### Disqus ### Disqus
<route name="评论" author="DIYgod" example="/disqus/posts/diygod-me" path="/disqus/posts/:forum" :paramsDesc="['网站的 disqus name']"/> <route name="评论" author="DIYgod" example="/disqus/posts/diygod-me" path="/disqus/posts/:forum" :paramsDesc="['网站的 disqus name']"/>

View File

@@ -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/book/rank/:type', require('./routes/douban/book/rank'));
router.get('/douban/doulist/:id', require('./routes/douban/doulist')); router.get('/douban/doulist/:id', require('./routes/douban/doulist'));
router.get('/douban/explore/column/:id', require('./routes/douban/explore_column')); 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')); router.get('/jandan/:sub_model', require('./routes/jandan/pic'));

View File

@@ -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}<br>评分:${status.card.rating}<br>${status.card.subtitle}`;
} else {
description = `${status.card.title}<br>${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,
};
}),
};
};