mirror of
https://github.com/DIYgod/RSSHub.git
synced 2025-12-11 07:40:26 +08:00
feat: update sjtu/tongqu data source using API (#5121)
This commit is contained in:
@@ -1243,7 +1243,13 @@ type 列表:
|
||||
|
||||
### 同去网最新活动
|
||||
|
||||
<Route author="SeanChao" example="/sjtu/tongqu" path="/sjtu/tongqu"/>
|
||||
<Route author="SeanChao" example="/sjtu/tongqu/lecture" path="/sjtu/tongqu/:type?" :paramsDesc="['类型,默认为全部']">
|
||||
|
||||
| 全部 | 最新 | 招新 | 讲座 | 户外 | 招聘 | 游学 | 比赛 | 公益 | 广告 | 其他 |
|
||||
| ---- | ------ | ----------- | ------- | --------- | ---- | ---------- | ------------ | -------------- | ---- | ------ |
|
||||
| all | newest | recruitment | lecture | outdoords | jobs | studyTours | competitions | publicWarefare | ads | others |
|
||||
|
||||
</Route>
|
||||
|
||||
### 研究生招生网招考信息
|
||||
|
||||
|
||||
@@ -599,7 +599,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('/sjtu/tongqu/:type?', require('./routes/universities/sjtu/tongqu/activity'));
|
||||
router.get('/sjtu/yzb/zkxx/:type', require('./routes/universities/sjtu/yzb/zkxx'));
|
||||
|
||||
// 江南大学
|
||||
|
||||
@@ -1,28 +1,41 @@
|
||||
const got = require('@/utils/got');
|
||||
const cheerio = require('cheerio');
|
||||
const url = require('url');
|
||||
|
||||
const urlRoot = 'https://tongqu.sjtu.edu.cn/';
|
||||
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 type = ctx.params.type || 'all';
|
||||
const config = {
|
||||
all: 0,
|
||||
newest: -1,
|
||||
recruitment: 9,
|
||||
lecture: 2,
|
||||
outdoors: 10,
|
||||
jobs: 4,
|
||||
studyTours: 5,
|
||||
competitions: 7,
|
||||
publicWarefare: 11,
|
||||
ads: 12,
|
||||
others: 8,
|
||||
};
|
||||
|
||||
const response = await got(sectionLink);
|
||||
const data = response.body;
|
||||
const $ = cheerio.load(data);
|
||||
// requests API
|
||||
const link = `${urlRoot}/api/act/type?type=${config[type]}&status=0&offset=0&offset=0&number=10&order=act.create_time&desc=true`;
|
||||
const response = await got(link);
|
||||
const data = response.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;
|
||||
});
|
||||
// parses data
|
||||
const activities = data.result.acts;
|
||||
const feeds = activities.map((e) => ({
|
||||
title: e.name,
|
||||
link: url.resolve(urlRoot, '/act/' + e.actid),
|
||||
category: e.typename,
|
||||
description: `${e.name}\r\n` + `开始时间: ${e.sign_start_time}\r\n结束时间: ${e.sign_end_time}\r\n` + `地点: ${e.location}\r\n` + `报名人数: ${e.member_count}/${e.max_member}\r\n` + `来自${e.source}\r\n`,
|
||||
}));
|
||||
|
||||
ctx.state.data = {
|
||||
title: '同去网最新活动',
|
||||
link: sectionLink,
|
||||
item: out,
|
||||
title: '同去网活动',
|
||||
link: link,
|
||||
item: feeds,
|
||||
};
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user