当前位置: 首页 > news >正文

python和风api获取天气(JSON Web Token)

下载安装openssl
在这里插入图片描述
默认安装目录,添加C:\Program Files\OpenSSL-Win64\bin到用户Path环境变量

在这里插入图片描述

打开cmd,执行命令,会生成两个文件ed25519-private.pem,ed25519-public.pem

openssl genpkey -algorithm ED25519 -out ed25519-private.pem && openssl pkey -pubout -in ed25519-private.pem > ed25519-public.pem

和风控制台新建项目,创建凭据,上传公钥那里复制ed25519-public.pem的内容
在这里插入图片描述
在这里插入图片描述
点开项目查看凭据
在这里插入图片描述
右上角头像设置查看api host
在这里插入图片描述

官方模板代码

import requests
import jwt
import time
#填ed25519-private.pem里的内容
private_key='''-----BEGIN PRIVATE KEY-----
MC4CAQAwBQYDK2VwBCIEIP/nwGqQ316SbQ+2Bg0JXfcmS4HMZQ+ZFpeVFgkm28tM
-----END PRIVATE KEY-----'''headers = {"kid": "T7H254X7U4"#凭据id
}
payload={"sub": "3CE2Y729KF",#项目id'iat': int(time.time()) - 30,'exp': int(time.time()) + 900
}encoded_jwt = jwt.encode(payload, private_key, algorithm='EdDSA', headers = headers)print(f"JWT:  {encoded_jwt}")#api host headers
api_host = 'https://mnxxxxxmv2.re.qweatherapi.com'#填写自己的apihost
headers = {'Authorization': f'Bearer {encoded_jwt}'}
city_api = '/geo/v2/city/lookup'  #城市代码查询api
now_api = '/v7/weather/now'#实时天气api#城市代码查询
city='广安'#填写城市名查询天气
params = {'location': city}
url = f'{api_host}{city_api}'
response = requests.get(url,headers=headers,params=params)
city_id = response.json()['location'][0]['id']  # 获取城市代码
city_name = response.json()['location'][0]['name']  # 获取城市名称
country = response.json()['location'][0]['country']  # 获取国家名
#实时天气数据获取url= f'{api_host}{now_api}'
headers = {'Authorization': f'Bearer {encoded_jwt}'}
params = {'location': city_id,  #城市代码(必须)'lang': 'zh',#语言'unit': 'm'#数据单位设置,可选值包括unit=m(公制单位,默认)和unit=i(英制单位)
}
response = requests.get(url,headers=headers,params=params)
print(response)
print(response.text)
now_weather_data = response.json()
# 打印当前天气数据
print(f'城市: {country} {city_name}')  # 打印城市名
print(now_weather_data['now']['text'])  # 打印当前天气状况
print(f'温度: {now_weather_data["now"]["temp"]}°C')  # 打印当前温度
print(f'体感温度: {now_weather_data["now"]["feelsLike"]}°C')  # 打印当前体感温度
print(f'湿度: {now_weather_data["now"]["humidity"]}%')  # 打印当前湿度
print(f'风向: {now_weather_data["now"]["windDir"]}')  # 打印当前风向
print(f'风力等级: {now_weather_data["now"]["windScale"]}')  # 打印当前风力等级
print(f'风速: {now_weather_data["now"]["windSpeed"]} km/h')  # 打印当前风速
print(f'数据更新时间: {now_weather_data["updateTime"]}')  # 打印数据更新时间"""报错NotImplementedError: Algorithm 'EdDSA' could not be found. Do you have cryptography installed?
解决pip install --upgrade cryptography"""
"""

在这里插入图片描述

http://www.xdnf.cn/news/713323.html

相关文章:

  • PostgreSQL如何更新和删除表数据
  • 【达梦数据库】内存使用资源评估
  • 图片压缩工具 | 发布到咸鱼并配置网盘自动发货
  • 通义灵码2.5——基于MCP实现我的12306火车票智能查询小助手
  • 66常用控件_QTableWidget的使用
  • 如何在 Odoo 18 中创建 PDF 报告
  • 【JavaScript 高级】事件循环机制详解
  • 第一个桌面应用程序的创建
  • 实验设计与分析(第6版,Montgomery)第5章析因设计引导5.7节思考题5.2 R语言解题
  • 文科小白学习Linux系统之安全管理
  • QT使用说明
  • matlab天线阵列及GUI框架,可用于相控阵,圆形阵,矩形阵
  • 【C/C++】线程安全初始化:std::call_once详解
  • 数据中心双活架构解决方案
  • 基于大模型的颈椎病全周期预测与治疗方案研究报告
  • 软件开发新技术课设-个人博客系统(一)
  • 【HarmonyOS 5】鸿蒙应用px,vp,fp概念详解
  • VSCode + GD32F407 构建烧录
  • 深度解析 9 大 UI 设计风格
  • OpenCV 图像像素的算术操作
  • 【解决】firewalld 模块未识别
  • 体育遇上AI:解读新一代智能阅读产品
  • C/C++ 面试复习笔记(1)
  • 提升WSL中Ubuntu编译速度的完整指南
  • MySQL 索引和事务
  • MATLAB语言教程:从入门到精通的全面指南
  • uniapp分包配置,uniapp设置subPackages
  • 电脑如何保养才能用得更久
  • 【高频面试题】数组中的第K个最大元素(堆、快排进阶)
  • 动态设置微信小程序页面标题(navigationBarTitleText属性)