feat(route): add 华北电力大学研究生院通知 (#10233)

* Update router.js

* Create masterinfo.js

* Update university.md

* Update university.md

* Update router.js

* Update university.md

* Update masterinfo.js

* Update masterinfo.js

* Delete lib/routes/universities/ncepu directory

* commit1

* Update router.js

* Update description.art

* Update docs/university.md

Co-authored-by: Tony <TonyRL@users.noreply.github.com>

* Update docs/university.md

Co-authored-by: Tony <TonyRL@users.noreply.github.com>

* Update lib/v2/ncepu/master/masterinfo.js

Co-authored-by: Tony <TonyRL@users.noreply.github.com>

* Update lib/v2/ncepu/master/masterinfo.js

Co-authored-by: Tony <TonyRL@users.noreply.github.com>

* Update lib/v2/ncepu/master/masterinfo.js

Co-authored-by: Tony <TonyRL@users.noreply.github.com>

* Update lib/v2/ncepu/master/masterinfo.js

Co-authored-by: Tony <TonyRL@users.noreply.github.com>

* Update lib/v2/ncepu/master/masterinfo.js

Co-authored-by: Tony <TonyRL@users.noreply.github.com>

* Update lib/v2/ncepu/master/masterinfo.js

Co-authored-by: Tony <TonyRL@users.noreply.github.com>

* Delete description.art

* Update masterinfo.js

* Update masterinfo.js

* Update masterinfo.js

* Update masterinfo.js

* Update masterinfo.js
This commit is contained in:
nilleo
2022-07-17 20:39:28 +08:00
committed by GitHub
co-authored by Tony
parent 4dc3362e41
commit 50cabd3162
5 changed files with 107 additions and 0 deletions
+12
View File
@@ -3291,3 +3291,15 @@ jsjxy.hbut.edu.cn 证书链不全,自建 RSSHub 可设置环境变量 NODE_TLS
### 数据科学与计算机学院动态
<Route author="Neutrino3316 MegrezZhu nczitzk" example="/sysu/cse" path="/sysu/cse"/>
## 华北电力大学
### 北京校区研究生院
<Route author="nilleo" example="/ncepu/master/tzgg" path="/ncepu/master/:type" :paramsDesc="['类型参数']">
| 类型 | 硕士招生信息 | 通知公告 |
| -- | ------ | ---- |
| 参数 | zsxx | tzgg |
</Route>
+3
View File
@@ -0,0 +1,3 @@
module.exports = {
'/master/:type': ['nilleo'],
};
+70
View File
@@ -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('作者:&nbsp;&nbsp;', '');
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,
};
};
+19
View File
@@ -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',
},
],
},
};
+3
View File
@@ -0,0 +1,3 @@
module.exports = function (router) {
router.get('/master/:type', require('./master/masterinfo'));
};