之前有写过一篇用云函数的方式来实现。然后突然想起来了上个星期看到了社区文章能在线运行Python的新功能,所以就想着用Python也来实现这个小情/^趣,现在我们就开始来搞吧。
1.微信公众号,如果没有微信公众号可以用测试号https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login,下面我以测试号为例,来做教程。
1.2 首先微信登录测试号后,我们需要将appID和appsecret复制下来。(复制前请先刷新一遍页面,因为a会变化)
1.3 然后你需要让你的女朋友关注一下测试号,页面上有一个人二维码,发给她让她微信扫码关注,这样二维码的右边栏就可以得到你女朋友的openid,这个后面代码有用。
1.4 然后百度一下你女朋友所在城市的城市编码,用于所在城市的天气查询。
1.5 再就是需要添加一下相应的模板消息,这里我以为我的代码为例,做了一个例子供参考。
{{first.DATA}}
当前城市:{{keyword1.DATA}}
今天天气:{{keyword2.DATA}}
现在温度:{{keyword3.DATA}}
温馨提示:{{keyword4.DATA}}
我们已经恋爱了:{{keyword5.DATA}}
距离小宝生日还有:{{keyword6.DATA}}
{{remark.DATA}}
1.6 以上工作都做好了,就可以根据下面的代码进行调整了。
import json
import urllib.request
from datetime import datetime
# 配置参数
appId = 'appId' # 对应自己的appId
appSecret = 'appSecret' # 对应自己的appSecret
touser = 'oIpRe6aPBBI-Yne8vy1clCdWUFyM' # 女朋友的openid
template_id = "ryM6DGiZt9rbKVCpkjGLJ45_n40xakLcHd1Fm6d2RdQ" # 模板id
city_code = '101200101' # 城市编码
# 获取 access_token
wxgzhurl = f"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={appId}&secret={appSecret}"
with urllib.request.urlopen(wxgzhurl) as response:
access_token_Arr = json.loads(response.read().decode('utf-8'))
ACCESS_TOKEN = access_token_Arr.get('access_token')
if ACCESS_TOKEN is None:
print("access_token 键不存在或者不正确,请使用你自己的 access_token")
else:
# 计算恋爱天数
lovestart = datetime(2022, 8, 1)
love = (datetime.now() - lovestart).days
# 计算距离下一个生日的天数
birthdaystart = datetime(2023, 9, 25)
birthday = (birthdaystart - datetime.now()).days
birthday = abs(birthday)
# 获取天气信息
tianqiurl = f'http://t.weather.sojson.com/api/weather/city/{city_code}'
with urllib.request.urlopen(tianqiurl) as response:
tianqiapi = json.loads(response.read().decode('utf-8'))
# 温馨提示
wxts = '多喝水' # 可以留空也可以写上一句
# 构造模板消息
data = {
'touser': touser,
'template_id': template_id,
'data': {
'keyword1': {'value': tianqiapi['cityInfo']['city'], 'color': "#000"},
'keyword2': {'value': f"{tianqiapi['data']['forecast'][0]['type']} 明日: {tianqiapi['data']['forecast'][1]['type']}", 'color': "#000"},
'keyword3': {'value': f"{tianqiapi['data']['forecast'][0]['low']}-{tianqiapi['data']['forecast'][0]['high']}", 'color': "#000"},
'keyword4': {'value': wxts, 'color': "#FF00FF"},
'keyword5': {'value': f"{love}天", 'color': "#FF1493"},
'keyword6': {'value': f"{birthday}天", 'color': "#C71585"}
}
}
# 发送模板消息
url = f"https://api.weixin.qq.com/cgi-bin/message/template/send?access_token={ACCESS_TOKEN}"
req = urllib.request.Request(url, data=json.dumps(data).encode('utf-8'), headers={'content-type': 'application/json'})
with urllib.request.urlopen(req) as response:
res = json.loads(response.read().decode('utf-8'))
if res['errcode'] == 0 and res['errmsg'] == "ok":
print("发送成功!")
else:
print("发送失败!请检查代码!!!")
最终实现效果如下
1.每日运行的话,可以放到云服务器或轻量服务器里,你是大佬放哪都行。
2.如果小白,可以尝试使用腾讯云的云函数,用这个更简单,下面我以云函数运行为例。
3.首先我们登录腾讯云,在搜索栏搜索云函数
4.进入云函数,点击立即体验
3.这里我们选择 按照步骤选择,然后将代码填写到下面的编辑器,根据代码里的中文提示将最开始准备的参数填写进去。
4. 然后打开创建的云函数,测试一下,看看微信收到消息没,也就是刚刚关注的测试号会给你发消息。
5.收到消息后,我们就配置下定时器,让其每天早上自动运行 (早上七点半是 30 7 * * *)
在代码的世界里,我们利用Python的魔力实现了定时发送早安信息给心爱的人。每当代码和关怀相遇,便创造了一份温馨的惊喜。愿这段代码能够像循环一样,不断地发送关怀,让爱情和技术在每一个清晨都得以完美结合。(毛用都没,更多的是陪伴,放下键盘鼠标,多陪陪就行了)
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。