UNPKG

rsshub

Version:
100 lines (97 loc) 3.13 kB
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 };