一个用于监听日本气象厅(JMA)、中国地震预警网(CEA)和台湾气象署(CWA)地震预警信息的Windows服务程序。当检测到达到设定阈值的地震时,自动触发警报和OBS录制功能。
感谢 Wolfx API 和 FAN Studio API 对本项目的强力驱动!
🐞已知bug:目前该程序由于不明原因,会在第一次自动录制结束后无法触发之后的录制,故程序会在录制结束后自动退出以刷新状态,烦请手动重启以继续使用!
- 🔔 多源监听: 同时监听日本(JMA)、中国(CEA)和台湾(CWA)的地震预警信息
- 📹 自动录制: 检测到地震时自动触发OBS录制功能
- ⏰ 智能过滤: 内置时间窗口过滤机制,避免处理过早的地震信息
- 🔧 服务管理: 专为Windows服务环境优化,可通过NSSM管理
- 🎚️ 远程控制: 内置HTTP控制服务器,支持远程暂停/恢复/测试等操作
- 📊 状态监控: 实时监控WebSocket连接状态和OBS录制状态
- 🧹 日志管理: 自动轮转和清理日志文件
- Windows操作系统
- Python 3.7+
- OBS Studio
- OBS WebSocket插件
pip install websocket-client winsound requests obs-websocket-py
编辑Python源代码中的以下配置项:
# OBS WebSocket配置 obs_password = "你的OBS WebSocket服务器密码" # 修改为你的OBS密码 obs_scene_name = "你的OBS场景" # 修改为你的OBS场景名称 # 服务配置 service_name = "你为此程序注册的服务名" # 修改为你的Windows服务名称 # 文件路径配置 alert_wav = r"你的文件路径" # 修改为警报音文件路径
nssm install "你的服务名" "python.exe" "你的脚本路径.py" nssm set "你的服务名" AppDirectory "你的脚本所在目录"
编辑批处理文件中的服务名和日志路径:
nssm start 【此处填写你注册的NSSM服务名】
notepad "【此处填写你的日志路径】"trigger_jma_intensity = "5弱" # JMA触发阈值(震度) trigger_cea_intensity = 7.0 # CEA触发阈值(烈度) trigger_cwa_intensity = "5弱" # CWA触发阈值(震度)
time_window_minutes = 10 # 忽略过早地震的时间窗口(分钟)obs_record_duration = 600 # 录制持续时间(秒),默认10分钟
使用配套的批处理文件或以下命令管理服务:
# 启动服务 nssm start 服务名 # 停止服务 nssm stop 服务名 # 重启服务 nssm restart 服务名 # 查看状态 nssm status 服务名
程序启动后,可以通过HTTP接口进行控制:
http://127.0.0.1:8787/command?cmd=命令
可用命令:
pause- 暂停监听resume- 恢复监听test- 触发测试警报status- 获取当前状态cleanuplogs- 清理旧日志wsstatus- 查看WebSocket连接状态obsstatus- 查看OBS状态obsstart- 手动启动OBS录制obsstop- 手动停止OBS录制timewindow- 获取或设置时间窗口
obvious_rec/ ├── obvious_rec.py # 主程序文件 ├── obvious_nssm.bat # 服务管理批处理 ├── logs/ # 日志目录 │ └── service_stderr.log # 主日志文件 └── README.md # 说明文档
- 确保OBS WebSocket插件已正确安装和配置
- 程序需要网络连接以访问地震预警服务
- 警报音文件需要是有效的WAV格式
- 服务运行时请勿直接关闭控制台窗口
- 录制功能需要OBS Studio正在运行
- 服务无法启动: 检查Python路径和脚本路径是否正确
- 无法连接OBS: 检查OBS WebSocket插件是否启用,密码是否正确
- 无地震警报: 检查网络连接和预警源配置
- 录制不启动: 检查OBS场景名称是否正确
⚠️ 重要: 此程序仅作为技术参考,地震预警信息请以官方发布为准。