From b965e542983cd5002983b0d465a1338d93d13784 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hagb=20=28Guo=20Junyu=20=E9=83=AD=E4=BF=8A=E4=BD=99=29?= Date: Thu, 12 Aug 2021 17:05:09 +0800 Subject: [PATCH] =?UTF-8?q?fix(route):=20=E9=87=8D=E5=BA=86=E5=A4=A7?= =?UTF-8?q?=E5=AD=A6=E6=9C=AC=E7=A7=91=E6=95=99=E5=AD=A6=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E7=BD=91=20(=E5=8E=9F=E9=87=8D=E5=BA=86=E5=A4=A7=E5=AD=A6?= =?UTF-8?q?=E6=95=99=E5=8A=A1=E7=BD=91)=20(#7944)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/university.md | 35 ++++++++++++++- lib/router.js | 2 +- .../universities/cqu/jwc/announcement.js | 44 +++++++++---------- 3 files changed, 55 insertions(+), 26 deletions(-) diff --git a/docs/university.md b/docs/university.md index ed4322e6f8..20f14afdbc 100644 --- a/docs/university.md +++ b/docs/university.md @@ -303,9 +303,40 @@ pageClass: routes ## 重庆大学 -### 教务网通知公告 +### 本科教学信息网通知公告 - + + +| 分类 | 路径 | +| ----------------------------------------------------------------- | ------------------- | +| [通知公告](http://jwc.cqu.edu.cn/index/tzgg.htm) | `index/tzgg` 或留空 | +| [通知公告 / 学籍管理](http://jwc.cqu.edu.cn/index/tzgg/xjgl.htm) | `index/tzgg/xjgl` | +| [通知公告 / 交流交换](http://jwc.cqu.edu.cn/index/tzgg/jljh1.htm) | `index/tzgg/jljh1` | +| [通知公告 / 教学运行](http://jwc.cqu.edu.cn/index/tzgg/jxyx.htm) | `index/tzgg/jxyx` | +| [通知公告 / 教学质量](http://jwc.cqu.edu.cn/index/tzgg/jxzl.htm) | `index/tzgg/jxzl` | +| [通知公告 / 教研教改](http://jwc.cqu.edu.cn/index/tzgg/jyjg.htm) | `index/tzgg/jyjg` | +| [通知公告 / 创新实践](http://jwc.cqu.edu.cn/index/tzgg/cxsj.htm) | `index/tzgg/cxsj` | +| [学籍管理 / 学籍处理](http://jwc.cqu.edu.cn/xjgl/xjcl.htm) | `xjgl/xjcl` | +| [学籍管理 / 交流交换](http://jwc.cqu.edu.cn/xjgl/jljh.htm) | `xjgl/jljh` | +| [学籍管理 / 学生推免](http://jwc.cqu.edu.cn/xjgl/xstm.htm) | `xjgl/xstm` | +| [学籍管理 / 转专业](http://jwc.cqu.edu.cn/xjgl/zzy.htm) | `xjgl/zzy` | +| [教学运行 / 学生选课](http://jwc.cqu.edu.cn/jxyx/xsxk.htm) | `jxyx/xsxk` | +| [教学运行 / 考试安排](http://jwc.cqu.edu.cn/jxyx/ksap.htm) | `jxyx/ksap` | +| [教学运行 / 助教管理](http://jwc.cqu.edu.cn/jxyx/zjgl.htm) | `jxyx/zjgl` | + + + +::: tip 提示 +路径参数的值为相应通知列表页面的地址去除后缀名和域名后的路径。 + +例如 “通知公告” 列表页面地址为 ,相应参数为 `index/tgzz`。 +::: + +::: warning 注意 +原重庆大学教务网网站变更为重庆大学本科教学信息网。该路由编写时(2021-07-29)它[正处于试运行阶段](http://jwc.cqu.edu.cn/info/1080/3482.htm)。 + +通知的分类比较迷,请小心甄别、使用(以免漏掉需要的通知)。 +::: ### 新闻网讲座预告 diff --git a/lib/router.js b/lib/router.js index 1a91d768c3..ddf3ec691c 100644 --- a/lib/router.js +++ b/lib/router.js @@ -744,7 +744,7 @@ router.get('/heu/uae/:type?', require('./routes/universities/heu/uae')); router.get('/heu/job/:type?', require('./routes/universities/heu/job')); // 重庆大学 -router.get('/cqu/jwc/announcement', require('./routes/universities/cqu/jwc/announcement')); +router.get('/cqu/jwc/:path*', require('./routes/universities/cqu/jwc/announcement')); router.get('/cqu/news/jzyg', require('./routes/universities/cqu/news/jzyg')); router.get('/cqu/news/tz', require('./routes/universities/cqu/news/tz')); router.get('/cqu/youth/:category', require('./routes/universities/cqu/youth/info')); diff --git a/lib/routes/universities/cqu/jwc/announcement.js b/lib/routes/universities/cqu/jwc/announcement.js index 26ebf7779d..af25894e09 100644 --- a/lib/routes/universities/cqu/jwc/announcement.js +++ b/lib/routes/universities/cqu/jwc/announcement.js @@ -1,35 +1,33 @@ const got = require('@/utils/got'); const cheerio = require('cheerio'); -const baseUrl = 'http://jwc.cqu.edu.cn'; - module.exports = async (ctx) => { + const category = ctx.params.path || 'index/tzgg'; + const baseUrl = `http://jwc.cqu.edu.cn/${category.replace(/[^/]*$/, '')}`; + const url = `http://jwc.cqu.edu.cn/${category}.htm`; const response = await got({ method: 'get', - url: 'http://jwc.cqu.edu.cn/announcement', - headers: { - Referer: 'http://jwc.cqu.edu.cn/', - }, + url: url, }); - - const data = response.data; - const $ = cheerio.load(data); - const links = $('.views-row a') - .slice(0, 5) + const { parseDate } = require('@/utils/parse-date'); + const $ = cheerio.load(response.data); + const links = $('li.pot-r', 'div.page-contner.fl') .map((index, item) => { item = $(item); + const a = item.find('a.no-wrap')[0]; return { - title: item.text(), - link: baseUrl + item.attr('href'), + date: parseDate(item.find('span.fr').text(), 'YYYY-MM-DD'), + title: a.attribs.title, + link: baseUrl + a.attribs.href, }; }) .get(); - const items = await Promise.all( - [...links].map(async ({ title, link }) => { + links.map(async ({ date, title, link }) => { const item = { title: title, link: link, + pubDate: date, }; const cache = await ctx.cache.get(link); if (cache) { @@ -39,17 +37,17 @@ module.exports = async (ctx) => { method: 'get', url: link, }); - const $ = cheerio.load(response.data); - item.author = $('.username').text(); - item.pubDate = $('time').attr('datetime'); - item.description = $('div .field-items').html() && $('div .field-items').find('p').text(); - ctx.cache.set(item.link, JSON.stringify(item)); - return Promise.resolve(item); + + const content = cheerio.load(response.data)('div#vsb_content', 'form[name=_newscontent_fromname]'); + item.description = content.find('div.v_news_content').html(); + ctx.cache.set(item.link, item); + return item; }) ); ctx.state.data = { - title: '重庆大学教务处通知公告', - link: 'http://jwc.cqu.edu.cn/announcement', + title: $('title').text(), + link: url, + description: $.title, item: items.filter((x) => x), }; };