Add 上海科技大学信息科技与技术学院 -- 活动 (#568)

Part of #566
This commit is contained in:
Henry Wang
2018-08-29 17:26:12 +08:00
committed by DIYgod
parent eaa77b9365
commit 0c3f41d552
4 changed files with 73 additions and 0 deletions
+3
View File
@@ -268,6 +268,9 @@ RSSHub 是一个轻量、易于扩展的 RSS 生成器,可以给任何奇奇
- 文章
- 大连工业大学
- 教务处新闻
- 上海科技大学
- 信息科技与技术学院
- 活动
- 上海交通大学
- 电子信息与电气工程学院
- 学术动态
+8
View File
@@ -2223,6 +2223,14 @@ type,分类
参数: 无
## 上海科技大学
### 信息科技与技术学院 -- 活动 <Author uid="HenryQW"/>
举例: [https://rsshub.app/shanghaitech/sist/activity](https://rsshub.app/shanghaitech/sist/activity)
路由: `/shanghaitech/sist/activity`
## 上海交通大学
### 电子信息与电气工程学院 -- 学术动态 <Author uid="HenryQW"/>
+3
View File
@@ -473,6 +473,9 @@ router.get('/mygalgame', require('./routes/galgame/mygalgame'));
// DPU
router.get('/dpu/jiaowu/:type?', require('./routes/dpu/jiaowu'));
// 上海科技大学
router.get('/shanghaitech/sist/activity', require('./routes/shanghaitech/sist/activity'));
// 上海交通大学
router.get('/sjtu/seiee/academic', require('./routes/sjtu/seiee/academic'));
+59
View File
@@ -0,0 +1,59 @@
const axios = require('../../../utils/axios');
const cheerio = require('cheerio');
const url = require('url');
const host = 'http://sist.shanghaitech.edu.cn/';
module.exports = async (ctx) => {
const link = url.resolve(host, 'cn/News.asp?mid=102');
const response = await axios.get(link);
const $ = cheerio.load(response.data);
const list = $('.pagebv tr')
.slice(0, 10)
.map((i, e) => ({
link: $(e)
.find('td:nth-of-type(2) a')
.attr('href'),
date: $(e)
.find('td:last-of-type')
.text()
.replace('[', '')
.replace(']', ''),
}))
.get();
const out = await Promise.all(
list.map(async (item) => {
const itemUrl = url.resolve(host, `cn/${item.link}`);
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 single = {
title: $('.pagebv tr:first-of-type')
.text()
.trim(),
link: itemUrl,
author: '上海科技大学信息科技与技术学院',
description: $('.pagebv tr:last-of-type')
.html()
.replace(/src="\//g, `src="${url.resolve(host, '.')}`)
.trim(),
pubDate: new Date(item.date),
};
ctx.cache.set(itemUrl, JSON.stringify(single), 24 * 60 * 60);
return Promise.resolve(single);
})
);
ctx.state.data = {
title: '上海科技大学信息科技与技术学院 -- 活动',
link,
item: out,
};
};