From fb4ed538c6f07e9c33c8049f3a0dcefc309a5289 Mon Sep 17 00:00:00 2001 From: na2na <49822810+na2na-p@users.noreply.github.com> Date: Tue, 5 Apr 2022 01:50:23 +0900 Subject: [PATCH] wip --- src/config.ts | 1 + src/modules/earthquake/index.ts | 69 +++++++++++++++------------------ 2 files changed, 32 insertions(+), 38 deletions(-) diff --git a/src/config.ts b/src/config.ts index 1918b4f..81892a6 100644 --- a/src/config.ts +++ b/src/config.ts @@ -12,6 +12,7 @@ type Config = { mecab?: string; mecabDic?: string; memoryDir?: string; + earthQuakeMonitorPort?: number; }; const config = require('../config.json'); diff --git a/src/modules/earthquake/index.ts b/src/modules/earthquake/index.ts index 0ee8742..55eaca7 100644 --- a/src/modules/earthquake/index.ts +++ b/src/modules/earthquake/index.ts @@ -1,41 +1,42 @@ import autobind from "autobind-decorator"; import Module from "@/module"; +import config from "@/config"; import Message from "@/message"; import * as http from "http"; // 基本的に生データはstringばっかり。都合のいい形に加工済みの状態の型定義を書いています。 // ここでいくらか言及されてる(https://bultar.bbs.fc2.com/?act=reply&tid=5645851); interface 緊急地震速報 { - type: 'eew'; - time: Date; - report: string; // 第n報 最終報はstringで'final'となるので、とりあえずstring型 - epicenter: string; // 震源地 - depth: string; // 震源の深さ - magnitude: string; // 地震の規模を示すマグニチュード - latitude: string; // 緯度らしいが謎 - longitude: string; // 経度らしいが謎 - intensity: string; // 地震の強さ - index: number; // 謎 + type: "eew"; + time: Date; + report: string; // 第n報 最終報はstringで'final'となるので、とりあえずstring型 + epicenter: string; // 震源地 + depth: string; // 震源の深さ + magnitude: string; // 地震の規模を示すマグニチュード + latitude: string; // 緯度らしいが謎 + longitude: string; // 経度らしいが謎 + intensity: string; // 地震の強さ + index: number; // 謎 } interface 緊急地震速報キャンセル { - type: 'pga_alert_cancel'; - time: Date; + type: "pga_alert_cancel"; + time: Date; } interface 震度レポート { - type: 'intensity_report'; + type: "intensity_report"; time: Date; max_index: number; intensity_list: { - intensity: string; - index: number; - region_list: string[]; - }[]; + intensity: string; + index: number; + region_list: string[]; + }[]; } interface 地震検知 { - type: 'pga_alert'; + type: "pga_alert"; time: Date; max_pga: number; new: boolean; @@ -71,28 +72,20 @@ export default class extends Module { }), ); - if (rawDataJSON.type == "pga_alert") { - const data: 地震検知 = { + if (rawDataJSON.type == "intensity_report") { + const data: 震度レポート = { type: rawDataJSON.type, time: new Date(parseInt(rawDataJSON.time)), - max_pga: rawDataJSON.max_pga, - new: rawDataJSON.new, - estimated_intensity: rawDataJSON.estimated_intensity, - region_list: rawDataJSON.region_list, + max_index: rawDataJSON.max_index, + intensity_list: rawDataJSON.intensity_list, }; - this.message = - // region_listはオブジェクトなので、2行改行してから列挙する - `PGA Alert\n${data.time.toLocaleString()}\n${data.max_pga}\n${data.estimated_intensity}\n\n${data.region_list.join("\n")}`; - }else if (rawDataJSON.type == 'intensity_report'){ - const data: 震度レポート = { - type: rawDataJSON.type, - time: new Date(parseInt(rawDataJSON.time)), - max_index: rawDataJSON.max_index, - intensity_list: rawDataJSON.intensity_list, - } - this.message = - `Intensity Report\n${data.time.toLocaleString()}\n\n${data.intensity_list.map(intensity => `震度${intensity.intensity} ${intensity.region_list.join(" ")}`).join("\n")}`; - } + this.message = `震度レポート\n${data.time.toLocaleString()}\n\n${ + data.intensity_list.map((intensity) => + `震度${intensity.intensity}: ${intensity.region_list.join(" ")}` + ).join("\n") + }`; + } + console.log(rawDataJSON); // デバッグ用 this.returnResponse(res, "ok"); if (this.message) { this.ai.post({ @@ -103,7 +96,7 @@ export default class extends Module { } else { this.returnResponse(res, "debobigego"); } - }).listen(process.env.EARTHQUAKE_PORT || 9999); + }).listen(config.earthQuakeMonitorPort || 9999); } @autobind