Files
RSSHub/lib/v2/sysu/cse.js
Ethan Shen 8b0deaa7a6 fix(route): 中山大学计算机学院 (#8333)
* fix(route): 中山大学计算机学院

* docs: fix path and paramsDesc

Co-authored-by: TonyRL <TonyRL@users.noreply.github.com>
2022-02-25 11:22:51 +08:00

104 lines
3.0 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
const got = require('@/utils/got');
const cheerio = require('cheerio');
module.exports = async (ctx) => {
const response = await got({
method: 'get',
url: 'http://cse.sysu.edu.cn/',
headers: {
Referer: `http://cse.sysu.edu.cn/`,
},
});
const $ = cheerio.load(response.data);
// 首页有多个板块每个板块的css选择器不同而且每个板块的信息分类也不一样
const block_index = [
{
index: 1,
description_header: '学院新闻',
},
{
index: 2,
description_header: '学院通知',
},
{
index: 3,
description_header: '人才招聘',
},
{
index: 4,
description_header: '学术活动',
},
{
index: 5,
description_header: '学工通知',
},
{
index: 6,
description_header: '学生活动',
},
{
index: 7,
description_header: '教务通知',
},
{
index: 8,
description_header: '科研通知',
},
{
index: 9,
description_header: '人事通知',
},
{
index: 10,
description_header: '党群工作',
},
{
index: 11,
description_header: '校友工作',
},
{
index: 12,
description_header: '社会工作',
},
];
function getDetail(item, description_header) {
return {
title: description_header + ': ' + item.attribs.title,
description: description_header + ': ' + item.attribs.title,
link: item.attribs.href,
category: description_header,
};
}
const item_data = [];
for (let i = 0; i < block_index.length; i++) {
const block_news = $('#block-views-homepage-block-' + block_index[i].index + '> div > div.view-content > div > ul > li > a');
for (let j = 0; j < block_news.length; j++) {
item_data.push(getDetail(block_news[j], block_index[i].description_header));
}
}
function compareLink(a, b) {
let a_str = a.link;
a_str = a_str.substr(a_str.length - 4, 4);
const a_int = parseInt(a_str);
let b_str = b.link;
b_str = b_str.substr(b_str.length - 4, 4);
const b_int = parseInt(b_str);
return b_int - a_int;
}
// 使得新的通知排在前面,假设通知的发布和链接地址是相关的,而且链接地址都是"/content/4961"这样,只有四位数的。
item_data.sort(compareLink);
// console.log(item_data);
ctx.state.data = {
title: `中山大学 - 数据科学与计算机学院`,
link: `http://cse.sysu.edu.cn`,
description: `中山大学 - 数据科学与计算机学院`,
language: `zh-cn`,
item: item_data,
};
};