当前位置: 首页 > 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"""
"""

在这里插入图片描述

相关文章:

  • ChemDraw 2023|Win英文|化学结构编辑器|安装教程
  • TCP连接关闭过程的技术解析:从四次挥手到资源释放
  • JWT 不对外,Session ID 对外:构建安全可控的微服务认证架构
  • LVS+Keepalived 高可用群集
  • Python Day37
  • 智能手机上用Termux安装php+Nginx
  • MySQL索引与事物
  • LVS + Keepalived 高可用群集
  • Spring框架学习day2--Bean管理(IOC)
  • 智能穿戴新标杆:SD NAND (贴片式SD卡)与 SOC 如何定义 AI 眼镜未来技术路径
  • 华为OD机试真题——报文回路(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现
  • 回调函数的理解
  • 【LangChain】框架解析
  • ASP.NET TreeView控件使用指南
  • 深入了解linux系统—— 库的链接和加载
  • 【Linux】shell脚本的变量与运算
  • OpenAI o3安全危机:AI“抗命”背后的技术暗战与产业变局
  • 代码随想录算法训练营第五十三天
  • 什么是node.js、npm、vue
  • DeepSeek进阶教程:实时数据分析与自动化决策系统
  • 手机怎么做自己的网站/网站安全检测平台
  • 制作动态网站教程/网站编辑怎么做
  • 如何做公司网站/google推广平台怎么做
  • 网站专题页是什么/网址大全实用网址
  • 《网页设计与网站建设》第04章在线测试/app软件推广怎么做
  • 进了收费的网站怎么办理/如何制作一个网页