Files
RSSHub/lib/v2/jsu/utils/index.js
T
01a56d98c2 feat(route): add 吉首大学相关通知公告 (#14514)
* feat(route): add 吉首大学相关通知公告

* feat(route): add 吉首大学计算机科学与工程学院、吉首大学数统学院、吉首大学主站、创新中心通知公告、教务处教务动态、教务通知

* fix: 修复文档问题

* feat(route): add 吉首大学相关通知公告

* fea(route): add 吉首大学计算机科学与工程学院、吉首大学数统学院、吉首大学主站、创新中心通知公告、教务处教务动态、教务通知

* feat(route): add 吉首大学相关通知公告

* feat(route): add 吉首大学计算机科学与工程学院、吉首大学数统学院、吉首大学主站、创新中心通知公告、教务处教务动态、教务通知

* feat(route): add 吉首大学相关通知公告

* fea(route): add 吉首大学计算机科学与工程学院、吉首大学数统学院、吉首大学主站、创新中心通知公告、教务处教务动态、教务通知

* feat(route): add 吉首大学相关通知公告

* fea(route): add 吉首大学计算机科学与工程学院、吉首大学数统学院、吉首大学主站、创新中心通知公告、教务处教务动态、教务通知

* Update lib/v2/jsu/cxzx.js

Co-authored-by: Tony <TonyRL@users.noreply.github.com>

* Update lib/v2/jsu/radar.js

Co-authored-by: Tony <TonyRL@users.noreply.github.com>

* Update lib/v2/jsu/utils/index.js

Co-authored-by: Tony <TonyRL@users.noreply.github.com>

* Update lib/v2/jsu/radar.js

Co-authored-by: Tony <TonyRL@users.noreply.github.com>

* Update lib/v2/jsu/radar.js

Co-authored-by: Tony <TonyRL@users.noreply.github.com>

* Update lib/v2/jsu/radar.js

Co-authored-by: Tony <TonyRL@users.noreply.github.com>

* Update lib/v2/jsu/radar.js

Co-authored-by: Tony <TonyRL@users.noreply.github.com>

* feat(route): add 吉首大学相关通知公告

* fea(route): add 吉首大学计算机科学与工程学院、吉首大学数统学院、吉首大学主站、创新中心通知公告、教务处教务动态、教务通知

* fix: 修复教务处返回的标题和描述为”计算机学院“

* style: 参照其他PR中Maintainer给出的建议,对radar.js 和 maintainer.js以字典序排序。

* refactor: 将整个RSS项对象作为缓存而不是单仅正文作为缓存,同时对应的修改了正文获取工具类中的内容,去除了固定的UserAgent;

* feat(route): add 吉首大学相关通知公告

* fea(route): add 吉首大学计算机科学与工程学院、吉首大学数统学院、吉首大学主站、创新中心通知公告、教务处教务动态、教务通知

* fix: 修复教务处返回的标题和描述为”计算机学院“

* style: 参照其他PR中Maintainer给出的建议,对radar.js 和 maintainer.js以字典序排序。

* refactor: 将整个RSS项对象作为缓存而不是单仅正文作为缓存,同时对应的修改了正文获取工具类中的内容,去除了固定的UserAgent;

* Update website/docs/routes/university.mdx

Co-authored-by: Tony <TonyRL@users.noreply.github.com>

* Update website/docs/routes/university.mdx

Co-authored-by: Tony <TonyRL@users.noreply.github.com>

* Update lib/v2/jsu/math.js

Co-authored-by: Tony <TonyRL@users.noreply.github.com>

* Update lib/v2/jsu/universityindex.js

Co-authored-by: Tony <TonyRL@users.noreply.github.com>

* feat(route): add 吉首大学相关通知公告

* fea(route): add 吉首大学计算机科学与工程学院、吉首大学数统学院、吉首大学主站、创新中心通知公告、教务处教务动态、教务通知

* fix: 修复教务处返回的标题和描述为”计算机学院“

* style: 参照其他PR中Maintainer给出的建议,对radar.js 和 maintainer.js以字典序排序。

* refactor: 将整个RSS项对象作为缓存而不是单仅正文作为缓存,同时对应的修改了正文获取工具类中的内容,去除了固定的UserAgent;

* Update lib/v2/jsu/rjxy.js

* Update lib/v2/jsu/math.js

* Update lib/v2/jsu/jwc.js

---------

Co-authored-by: WenjiaChen <i@wenjiachen.cn>
2024-02-22 22:22:33 +08:00

53 lines
1.8 KiB
JavaScript

const got = require('@/utils/got'); // 自订的 got
const cheerio = require('cheerio'); // 可以使用类似 jQuery 的 API HTML 解析器
/**
* 获取页面内容
* @param selector 正文CSS选择器
* @param pageUrl 页面URL
* @returns {Promise<string|string>} 页面内容,为符合RSS规范的HTML
*/
async function getPageItem(selector, pageUrl) {
const response = await got({
method: 'get',
url: pageUrl,
https: { rejectUnauthorized: false },
});
const $ = cheerio.load(response.data);
const page = $(selector);
return page ? page.html() : '无法获取内容';
}
/**
* 获取页面内容、标题、日期
* @param selector 正文CSS选择器
* @param pageUrl 页面URL
* @param titleSelector 标题CSS选择器
* @param dateSelector 日期CSS选择器
* @param dateHander 日期处理函数,在CMS系统中会以“日期:点击数”等特殊格式显示日期,需要处理切分出日期
* @returns {Promise<{date, pageInfo: string, title: (*|jQuery|string)}|{date: string, pageInfo: string, title: string}>} 页面内容、标题、日期
*/
async function getPageDetails(selector, pageUrl, titleSelector, dateSelector, dateHander = (date) => date) {
const response = await got({
method: 'get',
url: pageUrl,
https: { rejectUnauthorized: false },
});
const $ = cheerio.load(response.data);
const page = $(selector);
const date = dateHander($(dateSelector).text());
const title = $(titleSelector).text();
return page
? { pageInfo: page.html(), date, title }
: {
pageInfo: '无法获取内容',
date: '1970-1-1',
title: '无法获取标题',
};
}
module.exports = {
getPageItem,
getPageItemAndDate: getPageDetails,
};