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/gs/tzgg/:type?', require('./routes/universities/sjtu/gs/tzgg'));
|
||||||
router.get('/sjtu/jwc/:type?', require('./routes/universities/sjtu/jwc'));
|
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'));
|
router.get('/sjtu/yzb/zkxx/:type', require('./routes/universities/sjtu/yzb/zkxx'));
|
||||||
|
|
||||||
// 江南大学
|
// 江南大学
|
||||||
|
|||||||
@@ -1,28 +1,41 @@
|
|||||||
const got = require('@/utils/got');
|
const got = require('@/utils/got');
|
||||||
const cheerio = require('cheerio');
|
|
||||||
const url = require('url');
|
const url = require('url');
|
||||||
|
|
||||||
const urlRoot = 'https://tongqu.sjtu.edu.cn/';
|
const urlRoot = 'https://tongqu.sjtu.edu.cn';
|
||||||
|
|
||||||
module.exports = async (ctx) => {
|
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);
|
// requests API
|
||||||
const data = response.body;
|
const link = `${urlRoot}/api/act/type?type=${config[type]}&status=0&offset=0&offset=0&number=10&order=act.create_time&desc=true`;
|
||||||
const $ = cheerio.load(data);
|
const response = await got(link);
|
||||||
|
const data = response.data;
|
||||||
|
|
||||||
const activityInfo = $('body > script:nth-child(2)').html().match('var g_init_type_acts = (.*?);')[1];
|
// parses data
|
||||||
const activities = JSON.parse(activityInfo).acts;
|
const activities = data.result.acts;
|
||||||
const out = activities.map((i) => {
|
const feeds = activities.map((e) => ({
|
||||||
const title = '【' + i.typename + '】' + i.name;
|
title: e.name,
|
||||||
const link = url.resolve(urlRoot, '/act/' + i.actid);
|
link: url.resolve(urlRoot, '/act/' + e.actid),
|
||||||
const single = { title, link };
|
category: e.typename,
|
||||||
return single;
|
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 = {
|
ctx.state.data = {
|
||||||
title: '同去网最新活动',
|
title: '同去网活动',
|
||||||
link: sectionLink,
|
link: link,
|
||||||
item: out,
|
item: feeds,
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user