ChatGPT写的恶劣天气预警脚本
http://www.nmc.cn/f/rest/real/57816这是种养气象台关于贵阳的天气警报api,请写一个shell脚本,如果有警报,发送警报信息到matrix房间。谢谢。
这是一个简单的 shell 脚本,它可以检查贵阳的天气警报并将警报信息发送到 matrix 房间。请注意,您需要根据您的 matrix 服务器和帐户信息进行相应修改。
```sh
#!/bin/bash
# Set the URL of the weather warning API
API_URL="http://www.nmc.cn/f/rest/real/57816"
# Set the Matrix server and room information
MATRIX_SERVER="https://matrix.org"
MATRIX_ROOM="!your_room_id:matrix.org"
MATRIX_ACCESS_TOKEN="your_access_token"
# Get the weather warning data from the API
WARNING_DATA=$(curl -s "$API_URL")
# Check if there is a warning
if [[ $WARNING_DATA == *'"signallevel"'* ]]; then
# Extract the warning message
WARNING_MESSAGE=$(echo "$WARNING_DATA" | grep -oP '(?<="signallevel":")[^"]*')
# Send the warning message to the Matrix room
curl -X POST -H "Content-Type: application/json" -d "{\"msgtype\":\"m.text\", \"body\":\"$WARNING_MESSAGE\"}" "$MATRIX_SERVER/_matrix/client/r0/rooms/$MATRIX_ROOM/send/m.room.message?access_token=$MATRIX_ACCESS_TOKEN"
fi
```
请确保您已安装了 `curl` 并且已经正确设置了脚本中的 Matrix 服务器和房间信息。希望这对您有所帮助!
好的。现在还有一个问题,这个代码运行后,只发了“黄色”两个字给我,我需要的是完整的天气警报信息,请再看一下代码是不是哪里有错。谢谢。
您好,根据您提供的信息,这个问题可能是由于脚本中提取警报信息的代码不正确导致的。在原始脚本中,警报信息是通过查找 `signallevel` 字段并提取其值来获取的。但是,如果 API 返回的数据中包含多个字段或者警报信息不仅仅包含在 `signallevel` 字段中,那么这种方法可能无法正确提取完整的警报信息。
为了解决这个问题,您可以检查 API 返回的数据并确定哪些字段包含了您需要的警报信息。然后,您可以修改脚本中提取警报信息的代码,以便正确提取这些字段中的数据。
例如,如果 API 返回的数据如下所示:
```json
{
"code": 200,
"msg": "success",
"data": {
"id": 12345,
"city": "贵阳",
"warning": {
"level": "黄色",
"type": "暴雨",
"message": "贵阳市气象台发布暴雨黄色预警信号"
}
}
}
```
那么您可以修改脚本中提取警报信息的代码如下:
```sh
# Extract the warning message
WARNING_MESSAGE=$(echo "$WARNING_DATA" | grep -oP '(?<="message":")[^"]*')
```
希望这对您有所帮助! 牛逼class 佩服大佬,chatgpt还能这样玩
页:
[1]