diff --git a/docs/README.md b/docs/README.md index fb95223c8..4f7151439 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1274,6 +1274,8 @@ GitHub 官方也提供了一些 RSS: + + | 通知公告 | 工作信息 | 招生信息 | 培养信息 | 学位学科 | 国际交流 | 创新工程 | diff --git a/router.js b/router.js index 9742d09c7..b50011315 100644 --- a/router.js +++ b/router.js @@ -550,6 +550,7 @@ router.get('/sjtu/seiee/bjwb/major_select', require('./routes/universities/sjtu/ router.get('/sjtu/seiee/bjwb/major_transfer', require('./routes/universities/sjtu/seiee/bjwb/major_transfer')); router.get('/sjtu/seiee/bjwb/postgraduate', require('./routes/universities/sjtu/seiee/bjwb/postgraduate')); router.get('/sjtu/seiee/bjwb/abroad', require('./routes/universities/sjtu/seiee/bjwb/abroad')); +router.get('/sjtu/seiee/bjwb/international', require('./routes/universities/sjtu/seiee/bjwb/international')); router.get('/sjtu/gs/tzgg/:type?', require('./routes/universities/sjtu/gs/tzgg')); diff --git a/routes/universities/sjtu/seiee/bjwb/international.js b/routes/universities/sjtu/seiee/bjwb/international.js new file mode 100644 index 000000000..af655ca63 --- /dev/null +++ b/routes/universities/sjtu/seiee/bjwb/international.js @@ -0,0 +1,57 @@ +const axios = require('../../../../../utils/axios'); +const cheerio = require('cheerio'); +const url = require('url'); + +const host = 'http://bjwb.seiee.sjtu.edu.cn'; + +module.exports = async (ctx) => { + const link = url.resolve(host, `bkjwb/list/2281-1-20.htm`); + const response = await axios.get(link); + + const $ = cheerio.load(response.data); + + const list = $('.list_box_5 li') + .map((i, e) => ({ + date: $(e) + .children('span') + .text() + .slice(1, -1), + title: $(e) + .children('a') + .text() + .slice(2), + link: $(e) + .children('a') + .attr('href'), + })) + .get(); + + const out = await Promise.all( + list.map(async (item) => { + const itemUrl = url.resolve(host, 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: item.title, + link: itemUrl, + author: '上海交通大学电子信息与电气工程学院本科教务办', + description: $('.article_content').text(), + 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, + }; +};