UNPKG

rsshub

Version:
121 lines (112 loc) 3.68 kB
import { Data, Route } from '@/types'; import cache from '@/utils/cache'; import { parseDate } from '@/utils/parse-date'; import { load } from 'cheerio'; import ofetch from '@/utils/ofetch'; import timezone from '@/utils/timezone'; const rootUrl = 'https://www.qztc.edu.cn/jwc/'; const host = 'www.qztc.edu.cn'; export const route: Route = { path: '/jwc/:type', categories: ['university'], example: '/qztc/jwc/jwdt', parameters: { type: '分类,见下表' }, features: { requireConfig: false, requirePuppeteer: false, antiCrawler: false, supportBT: false, supportPodcast: false, supportScihub: false, }, name: '教务处', maintainers: ['iQNRen'], url: 'www.qztc.edu.cn', handler, radar: [ { source: ['www.qztc.edu.cn/jwc/:type/list.htm'], target: '/jwc/:type', }, ], description: `| 板块 | 参数 | | ------- | ------- | | 教务动态 | jwdt | | 首 页 | 1020 | | 岗位介绍 | 1021 | | 管理文件 | 1022 | | 教学教改 | 1023 | | 办事指南 | 1024 | | 通知公告 | 1025 | | 下载中心 | 1026 | | 对外交流 | 1027 | | 政策文件 | 1028 | | 会议纪要 | 1029 | `, // | 学院简介 | 1949 | // | 学院领导 | 1950 | // | 组织机构 | 1951 | }; async function handler(ctx) { const type = ctx.req.param('type'); // const type = Number.parseInt(ctx.req.param('type')); const response = await ofetch(rootUrl + type + '/list.htm'); const $ = load(response); const list = $('.news.clearfix') .toArray() .map((item) => { const cheerioItem = $(item); const a = cheerioItem.find('a'); try { const title = a.attr('title') || ''; let link = a.attr('href'); if (!link) { link = ''; } else if (!link.startsWith('http')) { link = rootUrl.slice(0, -1) + link; } const pubDate = timezone(parseDate(cheerioItem.find('.news_meta').text()), +8); return { title, link, pubDate, }; } catch { return { title: '', link: '', pubDate: Date.now(), }; } }) .filter((item) => item.title && item.link); const items = await Promise.all( list.map((item) => cache.tryGet(item.link, async () => { const newItem = { ...item, description: '', }; if (host === new URL(item.link).hostname) { if (new URL(item.link).pathname.startsWith('/_upload')) { // 链接为一个文件,直接返回链接 newItem.description = item.link; } else { const response = await ofetch(item.link); const $ = load(response); newItem.description = $('.wp_articlecontent').html() || ''; } } else { // 涉及到其他站点,不方便做统一的 html 解析,直接返回链接 newItem.description = item.link; } return newItem; }) ) ); return { title: $('head > title').text() + ' - 泉州师范学院-教务处', link: rootUrl + type + '/list.htm', item: items, } as Data; }