/
cse.ts
128 lines (121 loc) · 3.47 KB
/
cse.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
import { Route } from '@/types';
import got from '@/utils/got';
import { load } from 'cheerio';
export const route: Route = {
path: '/cse',
categories: ['university'],
example: '/sysu/cse',
parameters: {},
features: {
requireConfig: false,
requirePuppeteer: false,
antiCrawler: true,
supportBT: false,
supportPodcast: false,
supportScihub: false,
},
radar: [
{
source: ['cse.sysu.edu.cn/'],
},
],
name: '数据科学与计算机学院动态',
maintainers: [],
handler,
url: 'cse.sysu.edu.cn/',
};
async function handler() {
const response = await got({
method: 'get',
url: 'http://cse.sysu.edu.cn/',
headers: {
Referer: `http://cse.sysu.edu.cn/`,
},
});
const $ = 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 (const element of block_index) {
const block_news = $('#block-views-homepage-block-' + element.index + '> div > div.view-content > div > ul > li > a');
for (const block_new of block_news) {
item_data.push(getDetail(block_new, element.description_header));
}
}
function compareLink(a, b) {
let a_str = a.link;
a_str = a_str.slice(-4, a_str.length - 4 + 4);
const a_int = Number.parseInt(a_str);
let b_str = b.link;
b_str = b_str.slice(-4, b_str.length - 4 + 4);
const b_int = Number.parseInt(b_str);
return b_int - a_int;
}
// 使得新的通知排在前面,假设通知的发布和链接地址是相关的,而且链接地址都是"/content/4961"这样,只有四位数的。
item_data.sort(compareLink);
// console.log(item_data);
return {
title: `中山大学 - 数据科学与计算机学院`,
link: `http://cse.sysu.edu.cn`,
description: `中山大学 - 数据科学与计算机学院`,
language: `zh-cn`,
item: item_data,
};
}