以下是基于Python实现定时自动给微信好友发送天气预报的完整攻略:
1. 准备工作
首先,我们需要准备一些工具和环境:
- Python3环境
- itchat库:可以用来实现微信网页版的操作
- 和风天气API:可以用来获取天气预报信息
2. 获取和风天气API key
我们需要先在和风天气官网上注册账号并申请自己的API key。申请方法如下:
- 打开和风天气官网,点击右上角的“立即注册”按钮进行账号注册;
- 注册成功后,进入个人中心页面,点击左侧菜单栏的“API秘钥”;
- 在“API秘钥”页面中,点击“添加秘钥”按钮,填写相关信息并提交申请即可。
3. 安装itchat和requests库
我们需要使用pip3
命令来安装两个必要的Python库:itchat和requests。在终端(或命令行)中执行以下命令:
pip3 install itchat requests
4. 获取城市对应的location ID
我们需要知道所要查询天气预报的城市对应的location ID。通过访问和风天气城市搜索API,可以查询到城市的名称和所对应的location ID。
例如,查询北京的location ID,可以访问以下API链接:
https://geoapi.heweather.net/v2/city/search?location=北京&key=YOUR_KEY
其中,location
参数填写城市名称,YOUR_KEY
替换为自己申请到的API key。页面返回的JSON数据中,包含多个城市的信息,我们可以选取其中一个城市,其id
字段即为该城市的location ID。
5. 编写代码实现定时发送天气预报消息
以下是Python代码的完整示例。需要替换的部分已经用注释标出。
import itchat
import requests
from apscheduler.schedulers.blocking import BlockingScheduler
# 这里填写自己在和风天气官网申请的API Key
API_KEY = "YOUR_API_KEY"
# 这里填写所查询的城市对应的location ID
LOCATION_ID = "YOUR_LOCATION_ID"
# 每天定时发送时间
SEND_TIME = "08:00"
# 获取天气预报信息
def get_weather_info():
url = f"https://devapi.heweather.net/v7/weather/now?location={LOCATION_ID}&key={API_KEY}"
data = requests.get(url).json()
return data["now"]
# 发送消息
def send_weather_message():
itchat.login()
my_friends = itchat.get_friends(update=True)
for friend in my_friends:
# 这里过滤自己和其他非个人号(例如公众号、群组)的好友
if friend["UserName"].startswith("@") or friend["UserName"] == itchat.get_friends()[0]["UserName"]:
continue
# 获取好友微信ID
friend_id = friend["UserName"]
# 获取天气预报信息
weather_info = get_weather_info()
# 构造消息内容
weather_msg = f"今天是{weather_info['obsTime'].split('T')[0]},{weather_info['location']}现在的天气:" \
f"\n - 天气: {weather_info['text']} " \
f"\n - 温度: {weather_info['temp']}℃ " \
f"\n - 风向:{weather_info['windDir']},风力{weather_info['windScale']}级 "
# 发送消息
itchat.send(weather_msg, toUserName=friend_id)
itchat.logout()
# 配置定时任务
scheduler = BlockingScheduler()
scheduler.add_job(send_weather_message, 'cron', hour=SEND_TIME.split(':')[0], minute=SEND_TIME.split(':')[1])
scheduler.start()
示例说明
以下给出两个代码示例,分别实现每天定时8点和12点给微信好友发送天气预报消息。
示例一
假设我们要实现每天8:00给微信好友发送天气预报消息,我们需要修改以下代码:
# 每天定时发送时间
SEND_TIME = "08:00"
其中,SEND_TIME
变量指定每天定时发送的时间,格式为“HH:MM”,例如这里指定为早上8点。
示例二
假设我们要实现每天12:00给微信好友发送天气预报消息,我们需要修改以下代码:
# 每天定时发送时间
SEND_TIME = "12:00"
其中,SEND_TIME
变量指定每天定时发送的时间,格式为“HH:MM”,例如这里指定为中午12点。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于Python实现定时自动给微信好友发送天气预报 - Python技术站