mirror of
https://github.com/DIYgod/RSSHub.git
synced 2025-12-13 00:35:57 +08:00
增加山东大学机械工程学院通知 (#862)
This commit is contained in:
@@ -1239,6 +1239,14 @@ category 列表:
|
|||||||
|
|
||||||
</route>
|
</route>
|
||||||
|
|
||||||
|
<route name="机械工程学院通知" author="Ji4n1ng" example="/sdu/mech/0" path="/universities/sdu/mech/:type?" :paramsDesc="['默认为 `0`']">
|
||||||
|
|
||||||
|
| 通知公告 | 院所新闻 | 教学信息 | 学术动态 | 学院简报 |
|
||||||
|
| -------- | -------- | -------- | -------- | -------- |
|
||||||
|
| 0 | 1 | 2 | 3 | 4 |
|
||||||
|
|
||||||
|
</route>
|
||||||
|
|
||||||
## 传统媒体
|
## 传统媒体
|
||||||
|
|
||||||
### 央视新闻
|
### 央视新闻
|
||||||
|
|||||||
@@ -560,6 +560,7 @@ router.get('/hust/auto/news/', require('./routes/universities/hust/auto/news'));
|
|||||||
router.get('/sdu/grad/academic', require('./routes/universities/sdu/grad/academic'));
|
router.get('/sdu/grad/academic', require('./routes/universities/sdu/grad/academic'));
|
||||||
router.get('/sdu/sc/:type?', require('./routes/universities/sdu/sc'));
|
router.get('/sdu/sc/:type?', require('./routes/universities/sdu/sc'));
|
||||||
router.get('/sdu/cmse/:type?', require('./routes/universities/sdu/cmse'));
|
router.get('/sdu/cmse/:type?', require('./routes/universities/sdu/cmse'));
|
||||||
|
router.get('/sdu/mech/:type?', require('./routes/universities/sdu/mech'));
|
||||||
|
|
||||||
// ifanr
|
// ifanr
|
||||||
router.get('/ifanr/appso', require('./routes/ifanr/appso'));
|
router.get('/ifanr/appso', require('./routes/ifanr/appso'));
|
||||||
|
|||||||
59
routes/universities/sdu/mech.js
Normal file
59
routes/universities/sdu/mech.js
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
const axios = require('../../../utils/axios');
|
||||||
|
const cheerio = require('cheerio');
|
||||||
|
const url = require('url');
|
||||||
|
|
||||||
|
const typelist = ['通知公告', '院所新闻', '教学信息', '学术动态', '学院简报'];
|
||||||
|
const urlList = ['xwdt/tzgg.htm', 'xwdt/ysxw.htm', 'xwdt/jxxx.htm', 'xwdt/xsdt.htm', 'xwdt/xyjb.htm'];
|
||||||
|
const host = 'http://www.mech.sdu.edu.cn/';
|
||||||
|
|
||||||
|
module.exports = async (ctx) => {
|
||||||
|
const type = parseInt(ctx.params.type) || 0;
|
||||||
|
const link = url.resolve(host, urlList[type]);
|
||||||
|
const response = await axios.get(link);
|
||||||
|
|
||||||
|
const $ = cheerio.load(response.data);
|
||||||
|
|
||||||
|
const list = $('#page_list li a')
|
||||||
|
.map((i, e) => $(e).attr('href'))
|
||||||
|
.get();
|
||||||
|
|
||||||
|
const out = await Promise.all(
|
||||||
|
list.filter((e) => e.startsWith('../info') || e.startsWith('http://www.rd.sdu.edu.cn/')).map(async (itemUrl) => {
|
||||||
|
const isFromMech = itemUrl.startsWith('../info');
|
||||||
|
if (isFromMech) {
|
||||||
|
itemUrl = url.resolve(host, itemUrl.slice('3'));
|
||||||
|
}
|
||||||
|
const cache = await ctx.cache.get(itemUrl);
|
||||||
|
if (cache) {
|
||||||
|
return Promise.resolve(JSON.parse(cache));
|
||||||
|
}
|
||||||
|
|
||||||
|
const response = await axios.get(itemUrl);
|
||||||
|
const $ = cheerio.load(response.data);
|
||||||
|
|
||||||
|
const rawDate = $('#show_info')
|
||||||
|
.text()
|
||||||
|
.split(/\s{4}/);
|
||||||
|
let date = rawDate[0].split(':')[1];
|
||||||
|
date = date.slice(0, 4) + '-' + date.slice(5, 7) + '-' + date.slice(8, 10) + ' ' + date.slice(11);
|
||||||
|
|
||||||
|
const single = {
|
||||||
|
title: $('#show_title')
|
||||||
|
.text()
|
||||||
|
.trim(),
|
||||||
|
link: itemUrl,
|
||||||
|
author: '山东大学机械工程学院',
|
||||||
|
description: $('#show_content').html(),
|
||||||
|
pubDate: new Date(date),
|
||||||
|
};
|
||||||
|
ctx.cache.set(itemUrl, JSON.stringify(single), 24 * 60 * 60);
|
||||||
|
return Promise.resolve(single);
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
|
ctx.state.data = {
|
||||||
|
title: `山东大学机械工程学院${typelist[type]}`,
|
||||||
|
link,
|
||||||
|
item: out,
|
||||||
|
};
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user