From db809f7920e82fda5fc4c40d0990b6874b9172ba Mon Sep 17 00:00:00 2001 From: SeanChao Date: Thu, 16 Jan 2020 21:11:56 +0800 Subject: [PATCH] feat: add SJTU/tongqu latest activities (#3757) --- docs/university.md | 4 +++ lib/router.js | 1 + .../universities/sjtu/tongqu/activity.js | 30 +++++++++++++++++++ 3 files changed, 35 insertions(+) create mode 100644 lib/routes/universities/sjtu/tongqu/activity.js diff --git a/docs/university.md b/docs/university.md index b105e2d663..bf744475ad 100644 --- a/docs/university.md +++ b/docs/university.md @@ -866,6 +866,10 @@ https://rsshub.app/**nuist**/`bulletin` 或 https://rsshub.app/**nuist**/`bullet +### 同去网最新活动 + + + ## 上海科技大学 ### 信息科技与技术学院活动 diff --git a/lib/router.js b/lib/router.js index e3a1a5942a..3aa19eea94 100644 --- a/lib/router.js +++ b/lib/router.js @@ -570,6 +570,7 @@ router.get('/sjtu/seiee/xsb/:type?', require('./routes/universities/sjtu/seiee/x router.get('/sjtu/gs/tzgg/:type?', require('./routes/universities/sjtu/gs/tzgg')); router.get('/sjtu/jwc/:type?', require('./routes/universities/sjtu/jwc')); +router.get('/sjtu/tongqu', require('./routes/universities/sjtu/tongqu/activity')); // 江南大学 router.get('/ju/jwc/:type?', require('./routes/universities/ju/jwc')); diff --git a/lib/routes/universities/sjtu/tongqu/activity.js b/lib/routes/universities/sjtu/tongqu/activity.js new file mode 100644 index 0000000000..3733252376 --- /dev/null +++ b/lib/routes/universities/sjtu/tongqu/activity.js @@ -0,0 +1,30 @@ +const got = require('@/utils/got'); +const cheerio = require('cheerio'); +const url = require('url'); + +const urlRoot = 'https://tongqu.sjtu.edu.cn/'; + +module.exports = async (ctx) => { + const sectionLink = url.resolve(urlRoot, 'act/type?type=-1&status=0&order=act.create_time'); + + const response = await got(sectionLink); + const data = response.body; + const $ = cheerio.load(data); + + const activityInfo = $('body > script:nth-child(2)') + .html() + .match('var g_init_type_acts = (.*?);')[1]; + const activities = JSON.parse(activityInfo).acts; + const out = activities.map((i) => { + const title = '【' + i.typename + '】' + i.name; + const link = url.resolve(urlRoot, '/act/' + i.actid); + const single = { title, link }; + return single; + }); + + ctx.state.data = { + title: '同去网最新活动', + link: sectionLink, + item: out, + }; +};