rsshub
Version:
Make RSS Great Again!
100 lines (97 loc) • 3.13 kB
JavaScript
import "./esm-shims-CzJ_djXG.mjs";
import "./config-C37vj7VH.mjs";
import "./dist-BInvbO1W.mjs";
import "./logger-Czu8UMNd.mjs";
import "./ofetch-BIyrKU3Y.mjs";
import { t as parseDate } from "./parse-date-BrP7mxXf.mjs";
import "./helpers-DxBp0Pty.mjs";
import { t as got_default } from "./got-KxxWdaxq.mjs";
import { t as timezone } from "./timezone-D8cuwzTY.mjs";
//#region lib/routes/earthquake/ceic.ts
const route = {
path: "/ceic/:type?",
categories: ["forecast"],
example: "/earthquake/ceic/1",
parameters: { type: "类型,见下表" },
features: {
requireConfig: false,
requirePuppeteer: false,
antiCrawler: false,
supportBT: false,
supportPodcast: false,
supportScihub: false
},
radar: [{
source: ["www.cea.gov.cn/cea/xwzx/zqsd/index.html", "www.cea.gov.cn/"],
target: ""
}],
name: "中国地震台",
maintainers: ["SettingDust"],
handler,
url: "www.cea.gov.cn/cea/xwzx/zqsd/index.html",
description: `| 参数 | 类型 |
| ---- | --------------------------- |
| 1 | 最近 24 小时地震信息 |
| 2 | 最近 48 小时地震信息 |
| 5 | 最近一年 3.0 级以上地震信息 |
| 7 | 最近一年 3.0 级以下地震 |
| 8 | 最近一年 4.0 级以上地震信息 |
| 9 | 最近一年 5.0 级以上地震信息 |
| 0 | 最近一年 6.0 级以上地震信息 |
可通过全局过滤参数订阅您感兴趣的地区.`
};
async function handler(ctx) {
let type = Number(ctx.req.param("type"));
type = type ?? 1;
const baseUrl = "http://www.ceic.ac.cn";
const api = `${baseUrl}/ajax/speedsearch?num=${type}`;
const mappings = {
O_TIME: "发震时刻(UTC+8)",
LOCATION_C: "参考位置",
M: "震级(M)",
EPI_LAT: "纬度(°)",
EPI_LON: "经度(°)",
EPI_DEPTH: "深度(千米)",
SAVE_TIME: "录入时间"
};
const typeMappings = {
1: "最近24小时地震信息",
2: "最近48小时地震信息",
3: "最近7天地震信息",
4: "最近30天地震信息",
5: "最近一年3.0级以上地震信息",
6: "最近一年地震信息",
7: "最近一年3.0级以下地震",
8: "最近一年4.0级以上地震信息",
9: "最近一年5.0级以上地震信息",
0: "最近一年6.0级以上地震信息"
};
if ([
3,
4,
6
].includes(type)) type = 1;
const typeName = typeMappings[type];
const data = (await got_default(api)).data.replace(/,"page":"(.*?)","num":/, ",\"num\":");
let json = JSON.parse(data.substring(1, data.length - 1)).shuju;
if (json.length > 20) json = json.slice(0, 20);
return {
title: typeName,
link: `${baseUrl}/speedsearch`,
allowEmpty: true,
item: json.map((entity) => {
const contentBuilder = [];
const { NEW_DID, LOCATION_C, M, O_TIME } = entity;
for (const mappingsKey in mappings) contentBuilder.push(`${mappings[mappingsKey]} ${entity[mappingsKey]}`);
return {
title: `${LOCATION_C}发生${M}级地震`,
link: `${baseUrl}/${NEW_DID}.html`,
pubDate: timezone(parseDate(O_TIME, "YYYY-MM-DD HH:mm:ss"), 8),
description: contentBuilder.join("<br>"),
guid: NEW_DID
};
})
};
}
//#endregion
export { route };