Python连接钉钉群机器人每天自动推送国外天气

一、天气获取

我使用的是openweather api,这个api的官方文档写的十分详细,链接:openweather

  1. 打开链接,界面如下:
    目前只有current weather Data API 和 5 Day / 3 Hour Forecast API是免费的。

  2. 点击上面图片红框里的API doc,可以看到该API的使用方法和示例:

    (1)参数1:lat和lon参数是城市的经纬度,可以利用经纬度获取该地区的天气 状况;除了lat&lon方式外,还可以直接用城市名获取,比如:

    加不加国家缩写都是可以的
    其次,还可以用城市id或邮政编码获取天气,文档里有示例,不再赘述

(2)参数2:appid是密钥,必须加上有效的密钥才可以调用API
密钥的获取方式:点击主页的sign In,然后注册个账号就行了

注册后登录,点击右上角自己的名字,点击My API keys可以看到新密钥

注意:新密钥生成后得等待15-20分钟后才生效

(3)参数3:还有个重要的参数lang,使用这个参数可以将获取的内容以指定的语言显示(中文简体:zh_cn

  1. 获取密钥后我们就可以直接调用API来获取天气了

    import requests
    import json
    #堪培拉
    url_c='https://api.openweathermap.org/data/2.5/weather?q=Canberra,AU&appid=e99******************&lang=zh_cn'
    response=requests.get(url_c,headers={'Connection':'close','Content-Type': 'charset=utf-8'}).json()
    response
    

    输出如下:

    这里温度是开尔文温度,需要转为摄氏度,减273.15即可;
    dt是时间戳格式,记录的是本地时间,需要先加上timezone转为utc之后再转为datetime格式

    import datetime
    #开尔文转成摄氏度
    def kelvin_to_celsius(kelvin):celsius=kelvin-273.15return celsius#最高温,最低温
    temp_kelvin_max=response['main']['temp_max']
    temp_celsius_max=kelvin_to_celsius(temp_kelvin_max)
    temp_kelvin_min=response['main']['temp_min']
    temp_celsius_min=kelvin_to_celsius(temp_kelvin_min)#时间戳转UTC时间
    dt=datetime.datetime.utcfromtimestamp(response['dt']+response['timezone'])
    dt=dt.strftime("%Y.%m.%d")
    

二、让钉钉群机器人自动推送天气

  1. 添加群机器人
    钉钉群设置-智能群助手-添加机器人-选择自定义机器人,安全设置勾选加签,会生成一个密钥,复制保存下来,后面会用到

    点击完成后会生成一个webhook地址,这个地址就是用来连接机器人的,也保存下来

  2. 根据加签的密钥生成签名
    使用下面代码生成签名,注意把secret换成自己的密钥

    import time
    import hmac
    import hashlib
    import base64
    import urllib.parsetimestamp = str(round(time.time() * 1000))
    secret = 'SEC*********************'
    secret_enc = secret.encode('utf-8')
    string_to_sign = '{}\n{}'.format(timestamp, secret)
    string_to_sign_enc = string_to_sign.encode('utf-8')
    hmac_code = hmac.new(secret_enc, string_to_sign_enc, digestmod=hashlib.sha256).digest()
    sign = urllib.parse.quote_plus(base64.b64encode(hmac_code))
    print(timestamp)
    print(sign)
    
  3. 连接发送消息
    注意把base_url换成自己的webhook地址

    import requests
    import re
    import json
    import sys
    import osheaders = {'Content-Type': 'application/json;charset=utf-8'}
    base_url='https://oapi.dingtalk.com/robot/send?access_token=f1b2370***********'
    api_url = '{}&timestamp={}&sign={}'.format(base_url,timestamp,sign)
    ##从钉钉机器人设置中拷贝
    string=response['name'] + "\n日期:" + dt + "\n天气状况:" + weather + "\n最高温:" + temp_max + "\n最低温:" + temp_min
    def msg(text):json_text= {"msgtype": "text","text": {"content":text}}print(requests.post(api_url,json.dumps(json_text),headers=headers).content)
    msg(string)
    

    如果发送成功会出现下面的信息:
    {“errcode”:0,“errmsg”:“ok”}

    如果报错参考钉钉官方文档:钉钉机器人推送设置

三、 设置每天自动推送

可以使用腾讯云函数实现每天定时自动推送,设置比较简单,参考这篇文章即可腾讯云函数定时推送

Python连接钉钉群机器人每天自动推送国外天气相关推荐

  1. python实现企业微信机器人的自动推送

    关于企业微信机器人的自动推送 前些天,做了一个关于企业微信机器人自动推送消息的一个小功能,在这里来聊一下其中学习到的一些内容. 由于是需要进行自动推送新闻,因此先对需要获得信息的网页进行爬取. 在爬取 ...

  2. 飞书群聊机器人每日自动推送语录及风景照片python版

    飞书群聊机器人自动推送消息 使用场景 推送机制 代码目录 代码详解 获取图片 获取有效token 上传图片并得到Image_Key 使用 完整代码 使用场景 最近使用飞书聊天,觉得蛮好用的,刚好这段时 ...

  3. delphi 企业微信消息机器人_如何使用企业微信群机器人?实时推送消息

    很多已经开通了微信企业号的企业都会采用企业微信来进行工作上的沟通.在日常工作中,特别是服务性的行业,经常需要帮助用户解决常见的而又老是重复的问题,还需要针对顾客的使用情况,发送某些提示或者引导咨询的信 ...

  4. 【钉钉-场景化能力包】群机器人数据报表推送

    客户痛点 现代企业中的员工人数随着时代发展逐渐增多,让原本的管理者管理员工也越发困难,特别是特殊行业,在设备消息推送.监控报警.信息公示等多种场景中,因为任务的复杂性比较高,需要多人一起协同时,更是让 ...

  5. 微信小程序自动推送当天天气情况Java版

    针对网上小程序推送天气消息进行二次优化与细节调整,更快速与方便的进行完成自己功能的开发 注意全文是在别人代码基础之上做的二次优化 教程开始: 1.注册微信测试账号 第二步: 彩虹屁平台注册 拉代码 修 ...

  6. 企业微信机器人实现自动推送天气预报

    start~ 因为要用到天气信息,在网上找了很多免费的api,不是有调用限制要不就是返回的结果不满意,最终看了百度的比较合适,决定用爬虫抓下来. 在百度上搜索"长春天气",将浏览器 ...

  7. 配置 Hi提醒 让直播提醒机器人消息在主播开播自动推送消息到钉钉群

    今天我们来配置Hi提醒 实现指定主播开播时推送直播提醒消息到钉钉群 主要实现是创建好钉钉群机器人,然后推送信息时选择钉钉就行了. 该通道配置完成后可推送信息至你的钉钉群中,一次配置持久使用. 直接看操 ...

  8. java 实现钉钉机器人单人私聊推送钉钉消息(invalidParameter.robotCode.notExsit机器人不存在)

    文章目录 1.创建机器人应用 2.开通机器人接口权限 3.一定要发布(否则无法调试调接口) 4.编写工具类 5.效果 常见问题异常:"code":"invalidPara ...

  9. python+selenium+docker+飞书机器人部署自动预约程序

    python+selenium+docker+飞书机器人部署自动预约程序 项目介绍 python+selenium 滑块验证 selenium提示元素无法操作 无法定位到元素 接口+服务器部署 本地测 ...

最新文章

  1. str与dict与eval的结合妙用
  2. 还在用ABAP进行SAP产品的二次开发?来了解下这种全新的二次开发理念吧
  3. 【面试】c++单例模式
  4. 【李宏毅2020 ML/DL】P74 Generative Adversarial Network | Basic Idea
  5. 数据结构之排序算法Java实现(8)—— 线性排序之计数排序算法
  6. 异步保存数据到mysql或mssql 学习笔记
  7. Windows系统备份方法解答
  8. hsqldb mysql 语法_hsqldb快速入门
  9. 骑行日志2011滇藏珠峰尼泊尔青藏 - 记那些逝去的青春
  10. 解锁计算机桌面,电脑锁屏按什么键解锁
  11. 供应链拼图:拼合未来的全球经济
  12. 多力食用油:技术赋能产品品质,健康深植品牌理念
  13. 剑客之剑系列续篇:六脉神剑——PyCharm使用宝典
  14. error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCR...
  15. 轮回 第二章 冷傲天
  16. rational rose rational purify rational quanlity 安装
  17. C语言实现简单卡尔曼滤波
  18. 文献信息资源——什么是文献?脑子里不会一片空白吧骚年!
  19. Fitzpatrick Manufacturing部署 Sawyer智能协作机器人
  20. 预约挂号医院管理项目----service_hosp模块—医院管理

热门文章

  1. 遨游浏览器跨域域漏洞利用
  2. 常用命令(转http://blog.csdn.net/ljianhui/article/details/11100625/)
  3. htc hd2 android6,古董神机HTC HD2刷上安卓6.0!运行还挺流畅_游侠网
  4. 网络上一些典型邮箱的POP3及SMTP服务器地址
  5. T5L串口屏界面开机动画、动态屏保的设置原来如此简单
  6. #737. 徐老师的字符串(微软和阿里巴巴面试原题改编)
  7. Oracle表空间满了该如何解决?
  8. java项目黑科技_黑科技神器-uTools
  9. Unity——暴风魔镜无法演示SDK所带Demo
  10. 零投资网上赚钱,用最笨的方法才是最有效的!