From e884dc438f3b815c7a7c07a2ccf73f6cffba9b68 Mon Sep 17 00:00:00 2001 From: uuwor <155626094+uuwor@users.noreply.github.com> Date: Fri, 30 Aug 2024 02:02:48 +0800 Subject: [PATCH] feat(route): add route for https://jw.cdu.edu.cn/ (#16548) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(route): add route for https://jw.cdu.edu.cn/ 添加了成都大学教务处公告通知 * Update jwgg.ts gwgg-->jwgg * Update jwgg.ts https://jw.cdu.edu.cn/jwgg.html-->https://jw.cdu.edu.cn/jwgg.htm * Delete lib/cdu directory incorrect directory place * Add files via upload add cdu * Add files via upload fix: Enforce consistent linebreak style Error Expected linebreaks to be 'LF' but found 'CRLF'. * Add files via upload fix namespace.ts's Error Expected linebreaks to be 'LF' but found 'CRLF'. * Add files via upload correct some errors * Add files via upload 修复了不匹配问题 * Update jwgg.ts ////-->/**/ * Update jwgg.ts Enforce consistent spacing after the `//` or `/*` in a comment one tab * Update jwgg.ts A space has been added after /* * Add files via upload description repair try * Update jwgg.ts A space has been added after /* * Update lib/routes/cdu/jwgg.ts update maintainers Co-authored-by: Tony * Update jwgg.ts /**/ was used instead of //// * Update lib/routes/cdu/namespace.ts --------- --- lib/routes/cdu/jwgg.ts | 79 +++++++++++++++++++++++++++++++++++++ lib/routes/cdu/namespace.ts | 6 +++ 2 files changed, 85 insertions(+) create mode 100644 lib/routes/cdu/jwgg.ts create mode 100644 lib/routes/cdu/namespace.ts diff --git a/lib/routes/cdu/jwgg.ts b/lib/routes/cdu/jwgg.ts new file mode 100644 index 00000000000000..a850236da994f9 --- /dev/null +++ b/lib/routes/cdu/jwgg.ts @@ -0,0 +1,79 @@ +import { Route } from '@/types'; +import cache from '@/utils/cache'; +import got from '@/utils/got'; +import { load } from 'cheerio'; +import { parseDate } from '@/utils/parse-date'; +import timezone from '@/utils/timezone'; + +export const route: Route = { + path: '/jwgg', + categories: ['university'], + example: '/cdu/jwgg', + parameters: {}, + features: { + requireConfig: false, + requirePuppeteer: false, + antiCrawler: false, + supportBT: false, + supportPodcast: false, + supportScihub: false, + }, + radar: [ + { + source: ['jw.cdu.edu.cn/'], + }, + ], + name: '教务处通知公告', + maintainers: ['uuwor'], + handler, + url: 'jw.cdu.edu.cn/', +}; + +async function handler() { + const url = 'https://jw.cdu.edu.cn/jwgg.htm';// 数据来源网页(待提取网页) + const response = await got.get(url); + const data = response.data; + const $ = load(data); + const list = $('.ListTable.dataTable.no-footer tbody tr[role="row"].odd') + .slice(0, 10) + .toArray() + .map((e) => { + const element = $(e); + const title = element.find('tr.odd a').text().trim();/* 1.选择器 tr.odd a:这个选择器查找具有 class="odd" 的 元素下的 标签。 + 2..text():该方法获取选中元素的文本内容。 + 3..trim():用于去掉字符串前后的空格,确保得到干净的文本。*/ + const link = element.find('tr.odd a').attr('href'); + const date = element + .find('tr.odd td.columnDate') + .text() + .match(/\d{4}-\d{2}-\d{2}/); + const pubDate = timezone(parseDate(date), 8); + + return { + title, + link: 'https://jw.cdu.edu.cn/' + link, + author: '成都大学教务处通知公告', + pubDate, + }; + }); + + const result = await Promise.all( + list.map((item) => + cache.tryGet(item.link, async () => { + const itemReponse = await got.get(item.link); + const data = itemReponse.data; + const itemElement = load(data); + + item.description = itemElement('.v_news_content').html(); + + return item; + }) + ) + ); + + return { + title: '成大教务处通知公告', + link: url, + item: result, + }; +} diff --git a/lib/routes/cdu/namespace.ts b/lib/routes/cdu/namespace.ts new file mode 100644 index 00000000000000..ae19f4d163c53f --- /dev/null +++ b/lib/routes/cdu/namespace.ts @@ -0,0 +1,6 @@ +import type { Namespace } from '@/types'; + +export const namespace: Namespace = { + name: '成都大学', + url: 'www.cdu.edu.cn', +};