diff --git a/docs/README.md b/docs/README.md index d61d7a0ca..a143f3137 100644 --- a/docs/README.md +++ b/docs/README.md @@ -199,9 +199,11 @@ s 路由: `bilibili/live/search/:key/:order` -参数: key, 搜索关键字 +参数 -order ,排序方式 开播时间: live_time,人气:online +key: 搜索关键字 + +order: 排序方式,live_time 开播时间,online 人气 ### 直播分区 @@ -213,9 +215,11 @@ order ,排序方式 开播时间: live_time,人气:online 路由: `bilibili/live/area/:areaID/:order` -参数: areaID , 分区ID 分区增删较多,可通过 [分区列表](https://api.live.bilibili.com/room/v1/Area/getList) 查询 +参数 -order ,排序方式 开播时间: live_time,人气:online +areaID: 分区ID 分区增删较多,可通过 [分区列表](https://api.live.bilibili.com/room/v1/Area/getList) 查询 + +order: 排序方式,live_time 开播时间,online 人气 ## 微博 @@ -227,6 +231,14 @@ order ,排序方式 开播时间: live_time,人气:online 参数: uid,用户 id,博主主页打开控制台执行 `/uid=(\d+)/. exec(document.querySelector('.opt_box .btn_bed').getAttribute('action-data'))[1]` 获取 +::: warning 注意 +**个别**博主会有明显的数据缺失,原因未知,所以这里提供另外一种方式,但这种方式的缺点是描述不如第一种完善。出现缺失的情况较少,建议优先选择第一种方案 +::: + +举例: [https://rss.now.sh/weibo/user2/3306934123](https://rss.now.sh/weibo/user2/3306934123) + +路由: `/weibo/user2/:uid` + ### 关键词 举例: [https://rss.now.sh/weibo/keyword/DIYgod](https://rss.now.sh/weibo/keyword/DIYgod) diff --git a/router.js b/router.js index 32279f3ea..53d5b8476 100644 --- a/router.js +++ b/router.js @@ -27,9 +27,9 @@ router.get('/bilibili/live/room/:roomID', require('./routes/bilibili/liveRoom')) router.get('/bilibili/live/search/:key/:order', require('./routes/bilibili/liveSearch')); router.get('/bilibili/live/area/:areaID/:order', require('./routes/bilibili/liveArea')); - // 微博 router.get('/weibo/user/:uid', require('./routes/weibo/user')); +router.get('/weibo/user2/:uid', require('./routes/weibo/user2')); router.get('/weibo/keyword/:keyword', require('./routes/weibo/keyword')); // 网易云音乐 diff --git a/routes/weibo/user2.js b/routes/weibo/user2.js new file mode 100644 index 000000000..4d1aebb14 --- /dev/null +++ b/routes/weibo/user2.js @@ -0,0 +1,46 @@ +const axios = require('axios'); +const cheerio = require('cheerio'); +const config = require('../../config'); +const weiboUtils = require('./utils'); + +module.exports = async (ctx) => { + const uid = ctx.params.uid; + + const response = await axios({ + method: 'get', + url: `http://service.weibo.com/widget/widget_blog.php?uid=${uid}`, + headers: { + 'User-Agent': config.ua, + 'Referer': `http://service.weibo.com/widget/widget_blog.php?uid=${uid}` + } + }); + + const data = response.data; + + const $ = cheerio.load(data, { + decodeEntities: false + }); + const wbs = []; + const items = $('.wgtCell'); + let wb, item, titleEle; + items.map((index, ele) => { + wb = {}; + item = $(ele); + titleEle = item.find('.wgtCell_txt'); + wb.title = titleEle.text().replace(/^\s+|\s+$/g, ''); + if (wb.title.length > 24) { + wb.title = wb.title.slice(0, 24) + '...'; + } + wb.description = titleEle.html().replace(/^\s+|\s+$/g, '').replace(/thumbnail/, 'large'); + wb.pubDate = weiboUtils.getTime(item.find('.link_d').html()); + wb.link = item.find('.wgtCell_tm a').attr('href'); + wbs.push(wb); + }); + const name = $('.userNm').text(); + + ctx.state.data = { + title: `${name}的微博`, + link: `http://weibo.com/${uid}/`, + item: wbs, + }; +}; \ No newline at end of file