在一个夜黑风高的夜晚、在我拨了无数个无法接通后,我接到了一个未知男人的来电。他告诉我……….. “别来骚扰我了,我教你还不行么” 在不求人这条路上我走了好久,痛定思痛后、让我终于明白了一个道理:女友才是真谛~

微信登录

安装微信机器人模块
pip install -U wxpy
导入模块

from wxpy import *
初始化机器人,扫码登陆
bot = Bot()

通过微信网页版登录、初始化登陆时需要扫码

请求诗词API接口

Token 用于鉴别和区分每个用户,获取后 永久有效

获取 Token 的地址为,GET 方法

https://v2.jinrishici.com/token

返回值 { “status”: “success”, “data”: “RgU1rBKtLym/MhhYIXs42WNoqLyZeXY3EkAcDNrcfKkzj8ILIsAP1Hx0NGhdOO1I” }

携带Token请求,在header中指定X-User-Token

请求地址https://v2.jinrishici.com/sentence

通过urllib3构造请求头
  1. http = urllib3.PoolManager()
  2. result = http.request('GET','https://v2.jinrishici.com/sentence',
  3. headers={'X-User-Token': RgU1rBKtLym/MhhYIXs42WNoqLyZeXY3EkAcDNrcfKkzj8ILIsAP1Hx0NGhdOO1'})

计划任务

python时间调度框架APScheduler,APScheduler 四个组件分别为:触发器(trigger),作业存储(job store),执行器(executor),调度器(scheduler)。 其中触发器(trigger)规则有三种

  • date #基础规则只会执行一次
  • cron #计划任务、指定时间循环执行
  • interval #间隔任务、指定时间段循环执行
  1. scheduler = BlockingScheduler()
  2. scheduler.add_job(job, 'cron', day_of_week='1-5', hour=8, minute=20)
  3. # job为具体的执行函数,后面为时间定义:每天最好的时间给最好的她送去最好的诗词....
  4. scheduler.start()

全部代码

  1. from wxpy import *
  2. import urllib3
  3. import json
  4. from apscheduler.schedulers.blocking import BlockingScheduler
  5. '''
  6. 初始化登录状态,搜索的好友名称为自己通讯录中的备注名
  7. 返回结果为list
  8. '''
  9. bot = Bot()
  10. kele = bot.friends().search('可乐')[0]
  11. sched = BlockingScheduler()
  12. def send_message():
  13. '''
  14. 通过API获取json格式诗词、并解析出对应的 标题、作者、内容
  15. title: 诗词名
  16. author: 作者
  17. origin: 内容
  18. '''
  19. http = urllib3.PoolManager()
  20. result = http.request('GET','https://v2.jinrishici.com/sentence', headers={'X-User-Token': '*******'})
  21. s = json.loads(result.data)
  22. title = s['data']['origin']['title']
  23. author = s['data']['origin']['dynasty'] + '--' + s['data']['origin']['author']
  24. origin = json.loads(result.data)['data']['origin']['content']
  25. message = "{}\n{}\n{}\n".format(title,author,origin)
  26. kele.send(message) #发送消息
  27. def cron(event):
  28. '''
  29. 周一至周五早上8:20执行任务
  30. '''
  31. sched = BlockingScheduler()
  32. sched.add_job(event, 'cron', day_of_week='1-5', hour=8, minute=20)
  33. sched.start()
  34. if __name__ == "__main__":
  35. cron(send_message)

参考

APScheduler
今日诗词
wxpy:用Python玩微信
GitHub

400-200.png