diff --git a/docs/blog.md b/docs/blog.md index 79370ed06e..64f747824e 100644 --- a/docs/blog.md +++ b/docs/blog.md @@ -30,6 +30,32 @@ pageClass: routes +## 博客园 + +### 10天推荐排行榜 + + + +### 48小时阅读排行 + + + +### 编辑推荐 + + + +### 分类 + + + +在博客园主页的分类出可查看所有类型. 例如, go的分类地址为: `https://www.cnblogs.com/cate/go/`, 则: [`/cnblogs/cate/go`](https://rsshub.app/cnblogs/cate/go) + + + +### 精华区 + + + ## Gwern Branwen ### 博客 diff --git a/lib/v2/cnblogs/common.js b/lib/v2/cnblogs/common.js new file mode 100644 index 0000000000..b0500d91ad --- /dev/null +++ b/lib/v2/cnblogs/common.js @@ -0,0 +1,38 @@ +const got = require('@/utils/got'); +const cheerio = require('cheerio'); +const { parseDate } = require('@/utils/parse-date'); +const timezone = require('@/utils/timezone'); + + +module.exports = async (ctx) => { + const link = `https://www.cnblogs.com${ctx.path}`; + const response = await got(link); + const data = response.data; + + const $ = cheerio.load(data); + const list = $('#post_list article') + .toArray() + .map((item) => { + item = $(item); + return { + title: item.find('.post-item-title').text(), + link: item.find('.post-item-title').attr('href'), + pubDate: timezone( + parseDate( + item.find('.post-item-foot .post-meta-item span').text() || + item.find('.editorpick-item-meta').text(), + ['YYYY-MM-DD HH:mm', 'YYYY-MM-DD'] + ), + +8 + ), + description: item.find('.post-item-summary').text(), + author: item.find('.post-item-author span').text(), + }; + }); + + ctx.state.data = { + title: $('title').text(), + link, + item: list, + }; +}; diff --git a/lib/v2/cnblogs/maintainer.js b/lib/v2/cnblogs/maintainer.js new file mode 100644 index 0000000000..ef44b47d5b --- /dev/null +++ b/lib/v2/cnblogs/maintainer.js @@ -0,0 +1,7 @@ +module.exports = { + '/aggsite/topdiggs': ['hujingnb'], + '/aggsite/topviews': ['hujingnb'], + '/aggsite/headline': ['hujingnb'], + '/cate/:type': ['hujingnb'], + '/pick': ['hujingnb'], +}; diff --git a/lib/v2/cnblogs/radar.js b/lib/v2/cnblogs/radar.js new file mode 100644 index 0000000000..562be92aa9 --- /dev/null +++ b/lib/v2/cnblogs/radar.js @@ -0,0 +1,37 @@ +module.exports = { + 'cnblogs.com': { + _name: '博客园', + www: [ + { + title: '10天推荐排行榜', + docs: 'https://docs.rsshub.app/blog.html#博客园', + source: ['/aggsite/topdiggs'], + target: '/cnblogs/aggsite/topdiggs', + }, + { + title: '48小时阅读排行', + docs: 'https://docs.rsshub.app/blog.html#博客园', + source: ['/aggsite/topviews'], + target: '/cnblogs/aggsite/topviews', + }, + { + title: '编辑推荐', + docs: 'https://docs.rsshub.app/blog.html#博客园', + source: ['/aggsite/headline'], + target: '/cnblogs/aggsite/headline', + }, + { + title: '分类', + docs: 'https://docs.rsshub.app/blog.html#博客园', + source: ['/cate/:type'], + target: '/cnblogs/cate/:type', + }, + { + title: '精华区', + docs: 'https://docs.rsshub.app/blog.html#博客园', + source: ['/pick'], + target: '/cnblogs/pick', + }, + ], + }, +}; diff --git a/lib/v2/cnblogs/router.js b/lib/v2/cnblogs/router.js new file mode 100644 index 0000000000..3a416e1463 --- /dev/null +++ b/lib/v2/cnblogs/router.js @@ -0,0 +1,7 @@ +module.exports = (router) => { + router.get('/aggsite/topdiggs', require('./common')); + router.get('/aggsite/topviews', require('./common')); + router.get('/aggsite/headline', require('./common')); + router.get('/cate/:type', require('./common')); + router.get('/pick', require('./common')); +};