diff --git a/lib/v2/pku/cls/announcement.js b/lib/v2/pku/cls/announcement.js new file mode 100644 index 000000000..3476b9d9b --- /dev/null +++ b/lib/v2/pku/cls/announcement.js @@ -0,0 +1,42 @@ +const got = require('@/utils/got'); +const cheerio = require('cheerio'); +const { parseDate } = require('@/utils/parse-date'); + +const homeUrl = 'https://bio.pku.edu.cn/homes/Index/news/21/21.html'; + +const baseUrl = 'https://bio.pku.edu.cn'; + +module.exports = async (ctx) => { + const response = await got(homeUrl); + + const $ = cheerio.load(response.data); + + const list = $('div.normal_list>ul a') + .toArray() + .map((item) => { + item = $(item); + return { + title: $(item).find('p').text().trim(), + pubDate: parseDate($(item).find('span.date').text()), + link: baseUrl + $(item).attr('href'), + }; + }); + + const items = await Promise.all( + list.map((item) => + ctx.cache.tryGet(item.link, async () => { + const { data: response } = await got(item.link); + const $ = cheerio.load(response); + + item.description = $('div.page div.common_width div.col-md-9').first().html(); + return item; + }) + ) + ); + + ctx.state.data = { + title: '北京大学生命科学学院通知公告', + link: homeUrl, + item: items, + }; +}; diff --git a/lib/v2/pku/maintainer.js b/lib/v2/pku/maintainer.js index 5a00d657a..da84e0369 100644 --- a/lib/v2/pku/maintainer.js +++ b/lib/v2/pku/maintainer.js @@ -1,6 +1,7 @@ module.exports = { '/admission/sszs': ['pkuyjs'], '/bbs/hot': ['wooddance'], + '/cls/announcement': ['william-swl'], '/cls/lecture': ['TPOB'], '/eecs/:type?': ['Ir1d'], '/hr/:category?': ['nczitzk'], diff --git a/lib/v2/pku/radar.js b/lib/v2/pku/radar.js index 72fe004e9..084739556 100644 --- a/lib/v2/pku/radar.js +++ b/lib/v2/pku/radar.js @@ -24,6 +24,12 @@ module.exports = { source: ['/homes/Index/news_jz/7/7.html', '/'], target: '/pku/cls/lecture', }, + { + title: '生命科学学院通知公告', + docs: 'https://docs.rsshub.app/routes/university#bei-jing-da-xue', + source: ['/homes/Index/news/21/21.html', '/'], + target: '/pku/cls/announcement', + }, ], eecs: [ { diff --git a/lib/v2/pku/router.js b/lib/v2/pku/router.js index e7a39bb56..279b4c6e5 100644 --- a/lib/v2/pku/router.js +++ b/lib/v2/pku/router.js @@ -1,6 +1,7 @@ module.exports = function (router) { router.get('/admission/sszs', require('./pkuyjs')); router.get('/bbs/hot', require('./bbs/hot')); + router.get('/cls/announcement', require('./cls/announcement')); router.get('/cls/lecture', require('./cls/lecture')); router.get('/eecs/:type?', require('./eecs')); router.get('/hr/:category?', require('./hr')); diff --git a/website/docs/routes/university.md b/website/docs/routes/university.md index d8d7fb423..cc0f22a74 100644 --- a/website/docs/routes/university.md +++ b/website/docs/routes/university.md @@ -299,6 +299,10 @@ Note:[Source website](https://ece.umass.edu/seminar) may be empty when there's +### 生命科学学院通知公告 {#bei-jing-da-xue-sheng-ming-ke-xue-xue-yuan-tong-zhi-gong-gao} + + + ### 北大未名 BBS 全站十大 {#bei-jing-da-xue-bei-da-wei-ming-bbs-quan-zhan-shi-da}