diff --git a/docs/university.md b/docs/university.md index f57597a17c..cf22477041 100644 --- a/docs/university.md +++ b/docs/university.md @@ -1189,6 +1189,18 @@ https://rsshub.app/**nuist**/`bulletin` 或 https://rsshub.app/**nuist**/`bullet +## 中国海洋大学 + +### 信息科学与工程学院 + + + +| 学院要闻 | 学院公告 | 学院活动 | +| -------- | -------- | -------- | +| 0 | 1 | 2 | + + + ## 中国科学院 ### 上海微系统与信息技术研究所学术活动 diff --git a/lib/router.js b/lib/router.js index 769396c8d5..eeb8a1c9f7 100644 --- a/lib/router.js +++ b/lib/router.js @@ -695,6 +695,9 @@ router.get('/sdu/cmse/:type?', require('./routes/universities/sdu/cmse')); router.get('/sdu/mech/:type?', require('./routes/universities/sdu/mech')); router.get('/sdu/epe/:type?', require('./routes/universities/sdu/epe')); +// 中国海洋大学 +router.get('/ouc/it/:type?', require('./routes/universities/ouc/it')); + // 大连大学 router.get('/dlu/jiaowu/news', require('./routes/universities/dlu/jiaowu/news')); diff --git a/lib/routes/universities/ouc/it.js b/lib/routes/universities/ouc/it.js new file mode 100644 index 0000000000..fc28f4a610 --- /dev/null +++ b/lib/routes/universities/ouc/it.js @@ -0,0 +1,54 @@ +const got = require('@/utils/got'); +const cheerio = require('cheerio'); +const url = require('url'); + +const host = 'https://it.ouc.edu.cn/'; +const typelist = ['学院要闻', '学院公告', '学术活动']; +const urlList = ['xyyw/list.psp', 'xygg/list.psp', 'xshd/list.psp']; + +module.exports = async (ctx) => { + const type = parseInt(ctx.params.type) || 0; + const link = url.resolve(host, urlList[type]); + const response = await got.get(link); + const $ = cheerio.load(response.data); + + const dateDict = {}; + const list = $('#wp_news_w33') + .find('li') + .slice(0, 9) + .map((i, e) => { + const divs = $(e).children(); + const tlink = host + divs.find('a')[0].attribs.href.substring(1); + dateDict[tlink] = new Date($($(divs.children()[0]).find('p')[0]).text()).toUTCString(); + return tlink; + }) + .get(); + const out = await Promise.all( + list.map(async (itemUrl) => { + const cache = await ctx.cache.get(itemUrl); + if (cache) { + return Promise.resolve(JSON.parse(cache)); + } + const response = await got.get(itemUrl); + const $ = cheerio.load(response.data); + + const single = { + title: $('.content-tittle') + .text() + .trim(), + author: '中国海洋大学信息科学与工程学院', + description: $('.wp_articlecontent').html(), + pubDate: dateDict[itemUrl], + link: itemUrl, + }; + ctx.cache.set(itemUrl, JSON.stringify(single)); + return Promise.resolve(single); + }) + ); + + ctx.state.data = { + title: `中国海洋大学信息科学与工程学院${typelist[type]}`, + link, + item: out, + }; +};