昨天在技术群里问大家七夕节礼物准备好了吗?大多数男程序员回复姿势都是这样的:
程序员有女朋友?
new 一个就行。
Python 只要内存够,想 new 多少个对象都不是问题。
由于行业环境的原因,程序员单身的确实多,这也是程序员的世纪难题。
今天,不是给大家发对象,只教大家方法。今天教大家怎么用 Python 给心动的人每天定时发早安或者晚安。
前提条件是,你得有一个心动对象。哇,我连心动对象都没有怎么办?骚年,那你还不赶紧行动,去寻找你的心动的 TA。
好了,直接进入今天的主题。
找对象环境
语言:Python3
编辑工具:Pycharm
导包
wxpy:操作微信的库,机器人陪你唠嗑那篇文章也用到过。
requests:用来请求目标网站。
Timer:定时器,是 Thread 的派生类,用于在指定时间后调用一个方法。
Python
from wxpy import *
import requests
from threading import Timer
1
2
3
fromwxpyimport*
importrequests
fromthreadingimportTimer
登录微信
Bot 对象,用于登陆和操作微信账号,涵盖大部分 Web 微信的功能。cache_path,设置当前会话的缓存路径,并开启缓存功能,为 None (默认) 则不开启缓存功能。开启缓存后可在短时间内避免重复扫码,缓存失效时会重新要求登陆。设为 True 时,使用默认的缓存路径 「wxpy.pkl」。
Python
bot = Bot(cache_path=True)
1
bot=Bot(cache_path=True)
获取语句
从金山词霸每日一句接口获取语录,用 requests 请求 api 地址,返回英文美句和中文翻译。
Python
def get_msg():
url = 'http://open.iciba.com/dsapi/' # 金山词霸每日一句 api 链接
html = requests.get(url)
content = html.json()['content'] # 获取每日一句英文语句
note = html.json()['note'] # 获取每日一句英文的翻译语句
return content, note
1
2
3
4
5
6
defget_msg():
url='http://open.iciba.com/dsapi/'# 金山词霸每日一句 api 链接
html=requests.get(url)
content=html.json()['content']# 获取每日一句英文语句
note=html.json()['note']# 获取每日一句英文的翻译语句
returncontent,note
发送语句
接下来把上面获取的语句发送给心动的人,输入你心动的人自己的微信昵称,注意:这里不是你对 TA 的备注,也不是 TA 的微信号,而是 TA 自己设置的微信昵称。我这里是发送给自己的小号「机器人」。自己定义的内容可以改成你觉得合适的语句。我们需要每日发送一次,用定时器设置时间为一天的秒数:86400 秒。
Python
def send_msg():
try:
msgs = get_msg()
content = msgs[0]
note = msgs[1]
my_friend = bot.friends().search(
u'机器人')[0] # 此处是对方自己的昵称,不是微信号,也不是你的备注。
my_friend.send(content) # 发送英文语句
my_friend.send(note) # 发送英文翻译
my_friend.send(u'来自 brucepk 的问候') # 自定义语句,根据自己情况更改
t = Timer(10, send_msg) # Timer(定时器)是 Thread 的派生类,用于在指定时间后调用一个方法。
t.start()
except BaseException:
my_friend = bot.friends().search(u'brucepk')[
0] # 发送不成功,则发送消息给自己,提醒消息发送失败
my_friend.send(u'消息发送失败')
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
defsend_msg():
try:
msgs=get_msg()
content=msgs[0]
note=msgs[1]
my_friend=bot.friends().search(
u'机器人')[0]# 此处是对方自己的昵称,不是微信号,也不是你的备注。
my_friend.send(content)# 发送英文语句
my_friend.send(note)# 发送英文翻译
my_friend.send(u'来自 brucepk 的问候')# 自定义语句,根据自己情况更改
t=Timer(10,send_msg)# Timer(定时器)是 Thread 的派生类,用于在指定时间后调用一个方法。
t.start()
exceptBaseException:
my_friend=bot.friends().search(u'brucepk')[
0]# 发送不成功,则发送消息给自己,提醒消息发送失败
my_friend.send(u'消息发送失败')
捕捉异常,如果发送失败的话,则发送消息给自己,提醒消息发送失败。
执行函数
最后运行主函数,即可大功告成。
Python
if __name__ == '__main__':
send_msg()
1
2
if__name__=='__main__':
send_msg()
运行结果
这样的话,岂不是一直都需要程序时刻都在运行?可以放在服务器上,我上网查了下,某云服务器可以试用半年。好了,骚年,我只能帮你到这了,接下来,看你自己的行动了。希望单身的你尽快追到心动的 TA。
在我的公众号后台回复「对象」获取源码。