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

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.lryc.cn/news/2392496.html

相关文章:

  • 模板应用更新同步到所有开发中的应用
  • git和gitee的常用语句命令
  • 52、C# 泛型 (Generics)
  • 理解 Vue 2 的响应式原理:数据劫持与依赖收集的背后
  • 深入理解 Pinia:Vue 状态管理的革新与实践
  • Dubbo高频面试题
  • Allegro X PCB设计小诀窍--05.如何在Allegro X中实现隐藏电源飞线效果
  • 一篇文章教会你ESP8266串口WIFI无线模块实现物联网无线收发,附STM32代码示例
  • 算法-基础算法
  • 特种设备作业人员-G3锅炉水处理如何备考学习?
  • Reactor模式详解:高并发场景下的事件驱动架构
  • UniApp 生产批次管理模块技术文档
  • 项目日记 -Qt音乐播放器 -设置任务栏图标与托盘图标
  • 国产 BIM 软件万翼斗拱的技术突破与现实差距 —— 在创新与迭代中寻找破局之路
  • 记录算法笔记(2025.5.29)最小栈
  • Android SurfaceFlinger核心工作机制
  • Golang|etcd服务注册与发现 策略模式
  • 深度解析UniApp盲盒系统开发:从源码架构到多端部署全流程
  • STM32的OLED显示程序亲测可用:适用于多种场景的稳定显示解决方案
  • 【AI News | 20250529】每日AI进展
  • Day12 - 计算机网络 - HTTP
  • Linux驱动学习笔记(十)
  • 如何优化Elasticsearch的搜索性能?
  • TI dsp FSI (快速串行接口)
  • 责任链模式:构建灵活可扩展的请求处理体系(Java 实现详解)
  • nlp中的频率就是权重吗
  • 融智学“新五常”框架:五维方式的重构与协同
  • wechat-003-学习笔记
  • 【大模型微调】魔搭社区GPU进行LLaMA-Factory微调大模型自我认知
  • 基于MATLAB编程针对NCV检测数据去漂移任务的完整解决方案