fix(route/neea): fix routing priority and improve descriptions (#16131)

* feat(route/neea): update routes and improve description

* fix neea jlpt routing priority

* use https instead of http

* style: simplify logic for better readability

* revert commits

* incorporate necessary changes
This commit is contained in:
2024-07-11 01:51:15 +08:00 committed by GitHub
parent 4ab140afa0
commit f256c9707a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 62 additions and 37 deletions

View File

@ -2,6 +2,9 @@ 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';
function loadContent(link) {
return cache.tryGet(link, async () => {
// 开始加载页面
@ -20,16 +23,9 @@ function loadContent(link) {
});
}
export const route: Route = {
path: '/:type?',
name: 'Unknown',
maintainers: ['SunShinenny'],
handler,
};
async function handler(ctx) {
const type = ctx.req.param('type');
const host = `http://${type}.neea.edu.cn${typeDic[type].url}`;
const host = `https://${type}.neea.edu.cn${typeDic[type].url}`;
const response = await got({
method: 'get',
url: host,
@ -43,14 +39,13 @@ async function handler(ctx) {
list.map(async (item) => {
const ReportIDname = $(item).find('#ReportIDname > a');
const ReportIDIssueTime = $(item).find('#ReportIDIssueTime');
const itemUrl = `http://${type}.neea.edu.cn` + $(ReportIDname).attr('href');
let time = new Date(ReportIDIssueTime.text()).getTime();
time += new Date().getTimezoneOffset() * 60 * 1000 + 8 * 60 * 60 * 1000; // beijing timezone
const itemUrl = `https://${type}.neea.edu.cn` + $(ReportIDname).attr('href');
const time = ReportIDIssueTime.text();
const single = {
title: $(ReportIDname).text(),
link: itemUrl,
guid: itemUrl,
pubDate: new Date(time).toUTCString(),
pubDate: timezone(parseDate(time), +8),
};
const other = await loadContent(String(itemUrl));
return Object.assign({}, single, other);
@ -86,10 +81,14 @@ const typeDic = {
url: '/html1/category/1507/1148-1.htm',
title: '中小学教师资格考试',
},
tdxl: {
url: '/html1/category/2210/313-1.htm',
title: '同等学力申请硕士学位考试',
},
// 社会证书考试
cet: {
url: '/html1/category/16093/1124-1.htm',
title: '全国四六级CET',
title: '全国四六级考试CET',
},
ncre: {
url: '/html1/category/1507/872-1.htm',
@ -102,18 +101,47 @@ const typeDic = {
pets: {
url: '/html1/category/1507/1570-1.htm',
title: '全国英语等级考试 (PETS)',
title: '全国英语等级考试PETS',
},
wsk: {
url: '/html1/category/1507/1646-1.htm',
title: '全国外语水平考试 (WSK)',
title: '全国外语水平考试WSK',
},
ccpt: {
url: '/html1/category/1507/2035-1.htm',
title: '书画等级考试 (CCPT)',
},
mets: {
url: '/html1/category/1507/2065-1.htm',
title: '医护英语水平考试 (METS)',
title: '书画等级考试CCPT',
},
};
export const route: Route = {
path: '/local/:type',
name: '国内考试动态',
url: 'www.neea.edu.cn',
maintainers: ['SunShinenny'],
example: '/neea/local/cet',
parameters: { type: '考试项目,见下表' },
categories: ['study'],
features: {
supportRadar: true,
},
radar: Object.entries(typeDic).map(([type, value]) => ({
title: `${value.title}动态`,
source: [`${type}.neea.edu.cn`, `${type}.neea.cn`],
target: `/local/${type}`,
})),
handler,
description: `| | 考试项目 | type |
| ------------ | ----------------------------- | -------- |
| | | gaokao |
| | | chengkao |
| | | yankao |
| | | zikao |
| | | ntce |
| | | tdxl |
| | CET | cet |
| | NCRE | ncre |
| | NIT | nit |
| | PETS | pets |
| | WSK | wsk |
| | CCPT | ccpt |`,
};

View File

@ -3,29 +3,26 @@ 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: '/jlpt',
categories: ['study'],
example: '/neea/jlpt',
path: '/global/jlpt',
name: '日本语能力测试(JLPT)通知',
url: 'jlpt.neea.edu.cn',
maintainers: ['nczitzk'],
example: '/neea/global/jlpt',
parameters: {},
categories: ['study'],
features: {
requireConfig: false,
requirePuppeteer: false,
antiCrawler: false,
supportBT: false,
supportPodcast: false,
supportScihub: false,
supportRadar: true,
},
radar: [
{
source: ['jlpt.neea.cn/'],
source: ['jlpt.neea.edu.cn', 'jlpt.neea.cn'],
target: '/global/jlpt',
},
],
name: '教育部考试中心日本语能力测试重要通知',
maintainers: ['nczitzk'],
handler,
url: 'jlpt.neea.cn/',
};
async function handler() {
@ -49,7 +46,7 @@ async function handler() {
return {
title: item.text(),
link: `${rootUrl}/JLPT/1/${item.attr('href')}`,
pubDate: matches ? parseDate(matches[1]) : '',
pubDate: matches ? timezone(parseDate(matches[1]), +8) : '',
};
});
@ -71,7 +68,7 @@ async function handler() {
);
return {
title: '重要通知 - 教育部考试中心日本语能力测试',
title: '日本语能力测试(JLPT)通知',
link: currentUrl,
item: items,
};

View File

@ -1,6 +1,6 @@
import type { Namespace } from '@/types';
export const namespace: Namespace = {
name: 'NEEA 中国教育考试网',
url: 'jlpt.neea.cn',
name: '中国教育考试网',
url: 'www.neea.edu.cn',
};