diff --git a/docs/university.md b/docs/university.md index c676883c0..90f61d3c1 100644 --- a/docs/university.md +++ b/docs/university.md @@ -3669,6 +3669,13 @@ jsjxy.hbut.edu.cn 证书链不全,自建 RSSHub 可设置环境变量 NODE_TLS +### 选课信息教务通知 + + +::: warning 注意 +由于选课通知仅允许校园网访问,需自行部署。 +::: + ## 中国科学技术大学 ### 官网通知公告 diff --git a/lib/v2/ouc/jwgl.js b/lib/v2/ouc/jwgl.js new file mode 100644 index 000000000..6f2a88262 --- /dev/null +++ b/lib/v2/ouc/jwgl.js @@ -0,0 +1,42 @@ +const got = require('@/utils/got'); +const cheerio = require('cheerio'); +const { parseDate } = require('@/utils/parse-date'); + +module.exports = async (ctx) => { + const link = 'http://jwgl.ouc.edu.cn/public/listSchoolNotices.action?currentPage=1&recordsPerPage=15&qtitle='; + const response = await got(link); + const $ = cheerio.load(response.data); + const list = $('div.datalist table tbody tr') + .toArray() + .map((e) => { + e = $(e); + const noticeId = e + .find('a') + .attr('onclick') + .match(/viewNotice\('(.+?)'\)/)[1]; + const tds = e.find('td'); + return { + title: tds.eq(2).text(), + link: 'http://jwgl.ouc.edu.cn/public/viewSchoolNoticeDetail.action?schoolNoticeId=' + noticeId, + pubDate: parseDate(tds.eq(3).text(), 'YYYY-MM-DD HH:mm'), + }; + }); + + const out = await Promise.all( + list.map((item) => + ctx.cache.tryGet(item.link, async () => { + const response = await got(item.link); + const $ = cheerio.load(response.data); + item.description = $('div.notice').html(); + return item; + }) + ) + ); + + ctx.state.data = { + title: '中国海洋大学选课信息教务通知', + link, + description: '中国海洋大学选课信息教务通知', + item: out, + }; +}; diff --git a/lib/v2/ouc/maintainer.js b/lib/v2/ouc/maintainer.js index dc547d772..7cb365c2b 100644 --- a/lib/v2/ouc/maintainer.js +++ b/lib/v2/ouc/maintainer.js @@ -2,5 +2,6 @@ module.exports = { '/it/postgraduate': ['shengmaosu'], '/it/:type?': ['GeoffreyChen777'], '/jwc': ['3401797899'], + '/jwgl': ['3401797899'], '/yjs': ['shengmaosu'], }; diff --git a/lib/v2/ouc/radar.js b/lib/v2/ouc/radar.js index 6399cbc26..5b5a6e6cb 100644 --- a/lib/v2/ouc/radar.js +++ b/lib/v2/ouc/radar.js @@ -1,14 +1,6 @@ module.exports = { 'ouc.edu.cn': { _name: '中国海洋大学', - jwc: [ - { - title: '教务处', - docs: 'https://docs.rsshub.app/university.html#zhong-guo-hai-yang-da-xue', - source: ['/', '/6517/list.htm'], - target: '/ouc/jwc', - }, - ], it: [ { title: '信息科学与工程学院', @@ -23,6 +15,22 @@ module.exports = { target: '/ouc/it/postgraduate', }, ], + jwc: [ + { + title: '教务处', + docs: 'https://docs.rsshub.app/university.html#zhong-guo-hai-yang-da-xue', + source: ['/', '/6517/list.htm'], + target: '/ouc/jwc', + }, + ], + jwgl: [ + { + title: '选课信息教务通知', + docs: 'https://docs.rsshub.app/university.html#zhong-guo-hai-yang-da-xue', + source: ['/cas/login.action', '/public/SchoolNotice.jsp'], + target: '/ouc/jwgl', + }, + ], yz: [ { title: '研究生院', diff --git a/lib/v2/ouc/router.js b/lib/v2/ouc/router.js index 96f4ae329..5ca322591 100644 --- a/lib/v2/ouc/router.js +++ b/lib/v2/ouc/router.js @@ -2,5 +2,6 @@ module.exports = (router) => { router.get('/it/postgraduate', require('./it-postgraduate')); router.get('/it/:type?', require('./it')); router.get('/jwc', require('./jwc')); + router.get('/jwgl', require('./jwgl')); router.get('/yjs', require('./yjs')); };