tr069 发表于 2023-3-16 21:38

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":")[^"]*')
```

希望这对您有所帮助!

greenfan 发表于 2023-3-17 17:05

牛逼class

孤独的飞 发表于 2023-3-18 13:31

佩服大佬,chatgpt还能这样玩
页: [1]
查看完整版本: ChatGPT写的恶劣天气预警脚本