From 426450d7ecec747d73458a72b54044ee2ef0244f Mon Sep 17 00:00:00 2001 From: sxb_201 Date: Sun, 2 Jun 2019 12:37:45 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E5=B1=B1=E4=B8=9C?= =?UTF-8?q?=E5=A4=A7=E5=AD=A6=E8=AE=A1=E7=AE=97=E6=9C=BA=E7=A7=91=E5=AD=A6?= =?UTF-8?q?=E4=B8=8E=E6=8A=80=E6=9C=AF=E5=AD=A6=E9=99=A2=20RSS=20(#2267)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 添加山东大学计算机科学与技术学院通知 * 添加山东大学计算机科学与技术学院通知 * add .toUTCString() --- docs/university.md | 10 +++++ lib/router.js | 1 + lib/routes/universities/sdu/cs.js | 61 +++++++++++++++++++++++++++++++ 3 files changed, 72 insertions(+) create mode 100644 lib/routes/universities/sdu/cs.js diff --git a/docs/university.md b/docs/university.md index 78fb6808e3..eb797158f4 100644 --- a/docs/university.md +++ b/docs/university.md @@ -632,6 +632,16 @@ https://rsshub.app/**nuist**/`bulletin` 或 https://rsshub.app/**nuist**/`bullet +### 计算机科学与技术学院通知 + + + +| 学院公告 | 学术报告 | 新闻动态 | +| -------- | -------- | -------- | +| 0 | 1 | 2 | + + + ## 上海大学 ### 上海大学教务处通知公告 diff --git a/lib/router.js b/lib/router.js index 3c0b8f7b2b..82e260c42a 100644 --- a/lib/router.js +++ b/lib/router.js @@ -635,6 +635,7 @@ router.get('/hust/aia/notice/:type?', require('./routes/universities/hust/aia/no // 山东大学 router.get('/sdu/grad/academic', require('./routes/universities/sdu/grad/academic')); router.get('/sdu/sc/:type?', require('./routes/universities/sdu/sc')); +router.get('/sdu/cs/:type?', require('./routes/universities/sdu/cs')); router.get('/sdu/cmse/:type?', require('./routes/universities/sdu/cmse')); router.get('/sdu/mech/:type?', require('./routes/universities/sdu/mech')); router.get('/sdu/epe/:type?', require('./routes/universities/sdu/epe')); diff --git a/lib/routes/universities/sdu/cs.js b/lib/routes/universities/sdu/cs.js new file mode 100644 index 0000000000..6745adf69c --- /dev/null +++ b/lib/routes/universities/sdu/cs.js @@ -0,0 +1,61 @@ +const axios = require('@/utils/axios'); +const cheerio = require('cheerio'); +const url = require('url'); + +const host = 'http://www.cs.sdu.edu.cn/'; +const typelist = ['学院公告', '学术报告', '新闻动态']; +const urlList = ['index/xygg.htm', 'xwgg/xsbg.htm', 'xwgg/xyxw.htm']; + +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 dateDict = {}; + const list = $('.sub_text .news-list') + .slice(0, 10) + .map((i, e) => { + const divs = $(e).children(); + const tlink = + 'http://www.cs.sdu.edu.cn/' + + $('a', divs[1]) + .attr('href') + .substring(3); + dateDict[tlink] = new Date($(divs[2]).text()).toUTCString(); + return tlink; + }) + .get(); + + const out = await Promise.all( + list.map(async (itemUrl) => { + 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: $('#newsTitle') + .text() + .trim(), + author: '山东大学计算机科学与技术学院', + description: $('.v_news_content').html(), + pubDate: dateDict[itemUrl], + link: itemUrl, + }; + ctx.cache.set(itemUrl, JSON.stringify(single)); + return Promise.resolve(single); + }) + ); + + ctx.state.data = { + title: `山东大学计算机科学与技术学院${typelist[type]}通知`, + link, + item: out, + }; +};