企业微信群机器人每日天气提醒(shell + crontab)

介绍:
使用 shell 获取当地天气,并调用企业微信机器人发送当天天气情况。

一、新建创建机器人,获取 webhook 地址

  • 准备一个企业微信群,并右键选择「添加群机器人」
  • 选择创建群机器人
    企业微信群机器人每日天气提醒(shell + crontab)
  • 填写名称后确定,会生成对应的 webhook
    企业微信群机器人每日天气提醒(shell + crontab)

二、编写 shell 脚本,获取天气情况

1. 调用天气情况 API

天气 API (需要注册后才能使用)
注册后在用户中心可以查看 APPID 和 APPSecret
企业微信群机器人每日天气提醒(shell + crontab)

# 在终端输入该命令可以测试下
curl -s https://www.yiketianqi.com/free/day\?appid\=[替换自己的appid]\&appsecret\=[替换自己的密钥]\&unescape\=1\&cityid\=[城市 ID]
参数名 是否必填 类型 说明 备注
appid string 用户appid 注册开发账号
appsecret string 用户appsecret
cityid string 城市 ID 城市 id 参考
city string 城市名称 不要带市和区, 支持市区县, 不支持乡镇级别; 如: 青岛、铁西

更多请查看 天气 API

响应 JSON

{	
	# 城市 ID
    "cityid":"101120101", 
    # 城市名称
    "city":"济南",
    # 更新时间
    "update_time":"20:55",
    # 天气
    "wea":"晴",
    # 天气 icon
    "wea_img":"qing",
    # 实时温度
    "tem":"11",
    # 最高气温
    "tem_day":"17",
    # 最低气温
    "tem_night":"7",
    # 风向
    "win":"东南风 ",
    # 风力
    "win_speed":"1级",
    # 风速
    "win_meter":"小于12km/h",
    # 空气质量
    "air":"73"
}

2. json 返回值解析方法

  • 使用专门的Json解析库: jq - Command-line JSON processor
  • 安装,使用系统的包管理器:yum install jq
  • 使用 curl -s https://www.yiketianqi.com/free/day\?appid\=[替换自己的appid]\&appsecret\=[替换自己的密钥]\&unescape\=1\&cityid\=[城市 ID] | jq
    企业微信群机器人每日天气提醒(shell + crontab)
  • 取对应值
    | jq -r ‘.[key]’
curl -s https://www.yiketianqi.com/free/day\?appid\=[替换自己的appid]\&appsecret\=[替换自己的密钥]\&unescape\=1\&cityid\=[城市 ID] | jq -r '.wea'

3. shell 脚本思路

  1. 将 curl 获取天气结果返回值赋值给变量
RESULT=$(curl -s https://www.yiketianqi.com/free/day\?appid\=[替换自己的appid]\&appsecret\=[替换自己的密钥]\&unescape\=1\&cityid\=[城市 ID])
  1. 使用 jq 获取自己需要的天气信息
# 输出天气情况
WEATHER=$(echo $RESULT | jq -r '.wea')
# 输出温度 e.g:3➖-7
TEMP=$(echo $RESULT | jq -r '.tem_day')"➖"$(echo $RESULT | jq -r '.tem_night')
# 输出风向和风力 西南风,1级
WIN=$(echo $RESULT | jq -r '.win')","$(echo $RESULT | jq -r '.win_speed')
# 输出空气质量
AIR=$(echo $RESULT | jq -r '.air')
  1. 使用 curl 推送消息给微信群
curl '你的 webhook'     \-H 'Content-Type: application/json' \-d "{\"msgtype\":\"markdown\",\"markdown\":{\"content\": \" 具体信息\"}}"

4. 完整 shell 脚本

RESULT=$(curl -s https://www.yiketianqi.com/free/day\?appid\=[替换自己的appid]\&appsecret\=[替换自己的密钥]\&unescape\=1\&cityid\=[城市 ID])

# 输出天气情况
WEATHER=$(echo $RESULT | jq -r '.wea')
TEMP=$(echo $RESULT | jq -r '.tem_day')"➖"$(echo $RESULT | jq -r '.tem_night')
WIN=$(echo $RESULT | jq -r '.win')","$(echo $RESULT | jq -r '.win_speed')
AIR=$(echo $RESULT | jq -r '.air')

#这里做了些天气判断,根据情况输出不同的信息
if [ $WEATHER == "晴" ] ; then
    INFO='今日天气:'$WEATHER'☀️ ,今天有阳光,午休时间可以去散散步~'
elif [ $WEATHER == "云" ] || [ $WEATHER == "多云" ];
then
INFO='今日天气:'$WEATHER'☁️ ,多出门呼吸新鲜空气哟~'
elif [ $WEATHER == "阴" ] || [ $WEATHER == "多云转阴" ];
then
INFO='今日天气:'$WEATHER'⛅ ,今天是阴天,但心情不要是阴天'
elif [ $WEATHER == "雨" ] || [ $WEATHER == "小雨" ] || [ $WEATHER == "中雨" ] || [ $WEATHER=="大雨"];
then
INFO='今日天气:'$WEATHER'
上一篇:Tomcat源码分析


下一篇:Zotero | 打造最佳文献生态(合集)