diff --git a/docs/university.md b/docs/university.md index 37c3681986..3bb74d9dcd 100644 --- a/docs/university.md +++ b/docs/university.md @@ -3291,3 +3291,15 @@ jsjxy.hbut.edu.cn 证书链不全,自建 RSSHub 可设置环境变量 NODE_TLS ### 数据科学与计算机学院动态 + +## 华北电力大学 + +### 北京校区研究生院 + + + +| 类型 | 硕士招生信息 | 通知公告 | +| -- | ------ | ---- | +| 参数 | zsxx | tzgg | + + diff --git a/lib/v2/ncepu/maintainer.js b/lib/v2/ncepu/maintainer.js new file mode 100644 index 0000000000..019359cbf2 --- /dev/null +++ b/lib/v2/ncepu/maintainer.js @@ -0,0 +1,3 @@ +module.exports = { + '/master/:type': ['nilleo'], +}; diff --git a/lib/v2/ncepu/master/masterinfo.js b/lib/v2/ncepu/master/masterinfo.js new file mode 100644 index 0000000000..0b6b8a2404 --- /dev/null +++ b/lib/v2/ncepu/master/masterinfo.js @@ -0,0 +1,70 @@ +const got = require('@/utils/got'); +const cheerio = require('cheerio'); +const timezone = require('@/utils/timezone'); +const { parseDate } = require('@/utils/parse-date'); + +const title_map = { + tzgg: '通知公告', + zsxx: '硕士招生信息', +}; +const description_map = { + tzgg: '通知公告', + zsxx: '硕士招生信息', +}; +const url_map = { + tzgg: 'tzgg', + zsxx: 'zsxx/sszsxx', +}; + +module.exports = async (ctx) => { + const type = ctx.params.type; + const response = await got(`https://yjsy.ncepu.edu.cn/${url_map[type]}/index.htm`); + const data = response.data; // 获取页面 html 数据 + + const $ = cheerio.load(data); + const list = $('.articleList ul li') + .map((_, item) => { + item = $(item); + // 单篇文章块的信息,其中文字部分是标题,属性是文章链接 + const a = item.find('a'); + // 发表日期 + const pubDate = timezone(parseDate(item.find('span').text().replace('[', '').replace(']', '')), +8); + // 相对地址转化为绝对地址 + const url_head = `https://yjsy.ncepu.edu.cn/${url_map[type]}/`; + const url_part = a.attr('href'); + const url = url_head + url_part; + // 返回格式化数据 + return { + title: a.attr('title'), + link: url, + pubDate, + }; + }) + .get(); + + const items = await Promise.all( + list.map(async (item) => { + const itemData = await ctx.cache.tryGet(item.link, async () => (await got(item.link)).data); + const content = cheerio.load(itemData); + + const articleAuthor = content('.articleAuthor').html().replace('作者:  ', ''); + const eDescription = content('.article').html(); + const files = content('.Annex').html(); + + const single = { + title: item.title, + link: item.link, + description: articleAuthor + eDescription + files, + pubDate: item.pubDate, + }; + return single; + }) + ); + + ctx.state.data = { + title: `${title_map[type]}-华北电力大学研究生院`, + link: `http://yjsy.ncepu.edu.cn/${url_map[type]}`, + description: `华北电力大学研究生院${description_map[type]}`, + item: items, + }; +}; diff --git a/lib/v2/ncepu/radar.js b/lib/v2/ncepu/radar.js new file mode 100644 index 0000000000..22ffbca8d9 --- /dev/null +++ b/lib/v2/ncepu/radar.js @@ -0,0 +1,19 @@ +module.exports = { + 'yjsy.ncepu.edu.cn': { + _name: '华北电力大学研究生院', + '.': [ + { + title: '通知公告', + docs: ' https://docs.rsshub.app/university.html#hua-bei-dian-li-da-xue', + source: ['/tzgg/index.htm', '/'], + target: '/ncepu/master/tzgg', + }, + { + title: '硕士招生信息', + docs: 'https://docs.rsshub.app/university.html#hua-bei-dian-li-da-xue', + source: ['/zsxx/sszsxx/index.htm', '/'], + target: '/ncepu/master/zsxx', + }, + ], + }, +}; diff --git a/lib/v2/ncepu/router.js b/lib/v2/ncepu/router.js new file mode 100644 index 0000000000..0c8b373df1 --- /dev/null +++ b/lib/v2/ncepu/router.js @@ -0,0 +1,3 @@ +module.exports = function (router) { + router.get('/master/:type', require('./master/masterinfo')); +};