惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The Last Watchdog
The Last Watchdog
Microsoft Security Blog
Microsoft Security Blog
宝玉的分享
宝玉的分享
小众软件
小众软件
雷峰网
雷峰网
F
Full Disclosure
B
Blog
Hugging Face - Blog
Hugging Face - Blog
GbyAI
GbyAI
月光博客
月光博客
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
TaoSecurity Blog
TaoSecurity Blog
博客园 - 聂微东
P
Palo Alto Networks Blog
N
Netflix TechBlog - Medium
S
Secure Thoughts
Google Online Security Blog
Google Online Security Blog
P
Privacy & Cybersecurity Law Blog
U
Unit 42
Cloudbric
Cloudbric
Know Your Adversary
Know Your Adversary
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Vercel News
Vercel News
博客园 - Franky
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
N
News and Events Feed by Topic
T
Tailwind CSS Blog
S
Schneier on Security
IT之家
IT之家
P
Proofpoint News Feed
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
T
Tenable Blog
Google DeepMind News
Google DeepMind News
The GitHub Blog
The GitHub Blog
T
Troy Hunt's Blog
V2EX - 技术
V2EX - 技术
Cyberwarzone
Cyberwarzone
P
Privacy International News Feed
I
InfoQ
MongoDB | Blog
MongoDB | Blog
Project Zero
Project Zero
B
Blog RSS Feed
Help Net Security
Help Net Security
H
Heimdal Security Blog
有赞技术团队
有赞技术团队
The Register - Security
The Register - Security
V
V2EX
C
CXSECURITY Database RSS Feed - CXSecurity.com
J
Java Code Geeks

Casear的技术栈

Ubuntu 26.04 装 NVIDIA 580 内网异机备份 conf 驱动 Razer_GRUB_Theme Fcitx5 输入法配置:切换中文输入法 服务器 zsh 环境配置记录:Zim + p10k + eza + zoxide # ThinkPad T490s Linux 指纹模块启用指南(KDE vanblog使用picgo图床的完整部署教程 vanblog备份恢复评论数据 如何配置一个虚拟显示器,以便远程没有显示器的系统 解决 OpenConnect VPN 由于 JScript 引擎丢失导致的 Error 1 修复 Fuck 2025 ATT&CK红队评估实战靶场二 一言 解决kde环境下切换登陆屏幕(SDDM)后显示异常 rss Linux实用软件分享 Kubuntu 上安装 显卡驱动 和 EnvyControl kubuntu 搜狗输入法安装问题解决 终端工具的选择 chatlog mac 安装 第三方应用问题 zsh 安装与配置,使用 oh-my-zsh 美化终端 pve虚拟机硬盘直通 tldr-pages 安装 pve安装Arch-linux Arch-linux安装桌面环境 提问的艺术极简板 Waline 服务端独立部署解决方案 记-先锋书店 api开发-更优雅的[规范响应数据] sqli 1-7关 Nginx Proxy Manager安装及避坑指南 Xiaomi-Mall-Home kali设置为中文 vscode连接docker查看代码 DVWA--SQL Injection(Blind)(盲注Python脚本) 使用Hexo生成大量页面时卡死问题解决 在Ubuntu上搭建Fivem服务器 互联网档案计划(Internet Archive) NEZHA监控面板美化 哪吒监控配置 CentOS7安装MySQL8.0 burpsuite ca证书安装 powerShell script 你一句春不晚,我就到了真江南 DVWA靶场--XSS(Reflected)教程 DVWA靶场--JavaScript Attacks (前端攻击) 强网杯2023 谍影重重2.0 wp shell脚本备份 MySQL数据库 青龙面板定时规则 异地容灾备份系统两地三中心 转载 关于躺平 python打包可执行文件 python定义函数 MySQL8.0以上PHP连接问题
青龙面板+wxBotWebhook实现自动推送天气
casearx@foxm · 2025-05-05 · via Casear的技术栈

请注意,本文编写于 868 天前,最后修改于 404 天前,其中某些信息可能已经过时。

# 导入requests库,用于发送HTTP请求 import requests import json # POST请求的URL,这里假设你有一个本地服务器在192.168.1.133的3001端口上运行,用于接收POST请求 webhook_url = 'http://192.168.1.133:3001/webhook/msg' # 定义一个函数,用于发送GET请求获取天气数据 def get_weather_data(city_code): # 构建请求URL,其中city_code是城市代码,用于指定要查询的城市 url = f"http://t.weather.sojson.com/api/weather/city/{city_code}" # 发送GET请求 response = requests.get(url) # 如果响应状态码不是200(即请求成功),则返回错误信息 if response.status_code != 200: return f"请求失败,状态码:{response.status_code}" # 尝试解析响应内容为JSON格式 try: weather_data = response.json() # 提取城市名称 city_name = weather_data['cityInfo']['city'] # 提取当前温度 wendu = weather_data['data']['wendu'] # 提取天气状况 weather_description = weather_data['data']['forecast'][0]['type'] # 提取空气质量 quality = weather_data['data']['quality'] # 提取PM2.5和PM10 pm25 = weather_data['data']['pm25'] pm10 = weather_data['data']['pm10'] # 提取其他信息 forecast = weather_data['data']['forecast'][0]['notice'] # 返回格式化的天气信息字符串 return f"天气推送 城市:{city_name}\n 当前温度:{wendu}℃\n 天气:{weather_description}\n 空气质量:{quality}\n PM2.5:{pm25}\n PM10:{pm10}\n 预报:{forecast}\n 信息来自中国气象网查询" except json.JSONDecodeError as e: # 如果JSON解析失败,返回错误信息 return f"解析JSON失败:{e}" # 定义一个函数,用于发送POST请求 def send_post_request(content, recipient): # 设置请求头,指定内容类型为JSON headers = { 'Content-Type': 'application/json' } # 构建POST请求的数据,包括接收者、消息类型和内容 payload = { "to": recipient, # 使用传入的recipient参数作为接收者 "type": "text", "content": content } # 发送POST请求,并将数据以JSON格式发送 response = requests.post(webhook_url, headers=headers, data=json.dumps(payload)) # 打印响应状态码 print(f"Response status code: {response.status_code}") # 主函数,程序的入口点 if __name__ == '__main__': city_code = '101080913' # 北京的城市代码 weather_info = get_weather_data(city_code) # 假设接收者名称为"艾米拉特工" recipients = ["demo01", "demo02", "demo03"] for recipient in recipients: # 发送消息给当前的接收者 send_post_request(weather_info, recipient)

1. 导入模块:

requests:用于发送HTTP请求。
json:用于处理JSON数据。

2. 定义Webhook URL

webhook_url:这是你的Webhook服务的URL,用于接收POST请求。在这个例子中,它指向本地网络的IP地址192.168.1.133上的端口3001

3. 定义获取天气数据的函数 get_weather_data(city_code)

这个函数接受一个参数city_code,这是城市的天气代码。
使用requests.get发送GET请求到API URL,该URL包含了城市代码。
检查HTTP响应的状态码,如果请求失败,返回错误信息。
解析JSON响应数据,提取城市名称、当前温度、天气状况、空气质量、PM2.5PM10值,以及预报通知。

return f"天气推送 城市:{city_name}, 当前温度:{wendu}℃, 天气:{weather_description}, 空气质量:{quality}, PM2.5:{pm25}, PM10:{pm10}, 预报:{forecast} 信息来自中国气象网查询"

可以自定义return f内的字符,实现自定义消息文本的效果
如果解析JSON时出现错误,捕获json.JSONDecodeError并返回错误信息。
返回一个包含所有提取信息的字符串。

4. 定义发送POST请求的函数 send_post_request(content)

设置请求头,指定内容类型为pplication/json
创建一个包含接收者标识、消息类型和内容的字典payload
使用requests.post发送POST请求到Webhook URL,传递payload作为JSON数据。
打印Webhook服务的响应状态码。

5. 主函数:

设置城市代码city_code01010100,这是北京的城市代码。
调用get_weather_data函数获取天气信息。
使用一个列表储存接收者的名称,再使用for循环遍历列表,实现给多个接收者发生的功能
调用send_post_request函数将天气信息发送到Webhook

6. 查询自己城市的代码

其中01010100是城市的代码,获得城市代码进入: http://www.weather.com.cn
在搜索框上输入你要需要获得天气的城市,点击查询,即可在地址栏获得相应城市编号,然后替换: http://m.weather.com.cn/data/01010100.html

7. 推送效果

image.png