python使用itchat发送微信消息提醒
最近在学习一点python,先找了找有趣的应用,实际修改跑了一下提高兴趣程度。
找到itchat,它的简介是这样的:
“itchat是一个开源的微信个人号接口,使用python调用微信从未如此简单。
使用不到三十行的代码,你就可以完成一个能够处理所有信息的微信机器人。
当然,该api的使用远不止一个机器人,更多的功能等着你来发现,比如这些。
该接口与公众号接口itchatmp共享类似的操作方式,学习一次掌握两个工具。
如今微信已经成为了个人社交的很大一部分,希望这个项目能够帮助你扩展你的个人的微信号、方便自己的生活。”
http://itchat.readthedocs.io/zh/latest/
itchat使用需要先下载安装,安装过程很简单,直接
pip install itchat
我安装的python3.6自带pip,如果没有pip的话我建议升级python。
在网上已经有不少itchat的应用,最简单的就是查找特定用户来发送微信消息。我结合另一个示范将消息扩展了一点:间隔特定时间给特定的好友发送微信消息提醒(久坐提醒?)
代码如下:
#-*-coding:utf8-*-
import itchat
import datetime, os, platform,time def timerfun(sched_time) :
flag = 0
while True:
now = datetime.datetime.now()
if now > sched_time and now < sched_time + datetime.timedelta(seconds=1) : # 因为时间秒之后的小数部分不一定相等,要标记一个范围判断
send_move()
time.sleep(1) # 每次判断间隔1s,避免多次触发事件
flag = 1
else :
#print('schedual time is {0}'.format(sched_time))
#print('now is {0}'.format(now))
if flag == 1 :
sched_time = sched_time + datetime.timedelta(hours=1) # 把目标时间增加一个小时,一个小时后触发再次执行
flag = 0 def send_move:
# nickname = input('please input your firends\' nickname : ' )
# 想给谁发信息,先查找到这个朋友,name后填微信备注即可,deepin测试成功
# users = itchat.search_friends(name=nickname)
users = itchat.search_friends(name='大壮') # 使用备注名来查找实际用户名
#获取好友全部信息,返回一个列表,列表内是一个字典
print(users)
#获取`UserName`,用于发送消息
userName = users[0]['UserName']
itchat.send("该起来动一下了!",toUserName = userName)
print('succeed') if __name__=='__main__':
itchat.auto_login(hotReload=True) # 首次扫描登录后后续自动登录
sched_time = datetime.datetime(2017,11,6,16,24,10) #设定初次触发事件的事件点
print('run the timer task at {0}'.format(sched_time))
timerfun(sched_time)
有几个地方调试了一下:
- 第9行判断时间是否到达指定时间处,因为now = datetime.datetime.now()返回的时间精确到了ms,所以直接拿精确到s的特定时间去比较会移植为False。所以我改用了判断是否在时间范围内。并且判断完后会用time.sleep(1)延时1s再次比较,避免多次命中或多次判断。
- 第17行内,每次时间判断满足指定时间范围时,将指定时间往后延一定时间,这里 + datetime.timedelta(hours=1)表示延后一个小时,达到每过一个小时触发一次send_move函数的目的
- 第33行,itchat.auto_login(hotReload=True)如注释说明的一样,避免每次都要扫描二维码登录,在登录一次之后“保持在线状态”
- 第35行,注意一下这里的print函数对sched_time字符串的使用方式。参考python手册:A datetime object is a single object containing all the information from a date object and a time object,为了按照一般时间格式打印输出,对sched_time进行了format格式化处理,我理解就是保持sched_time原本的时间形式不变,而按照字符串的方法进行处理。这里用{0}来表示格式化后的sched_time,让其能够以原来时间格式与前面待打印的字符串进行字符串拼接。
- 第32行,if __name__=='__main__'表示当前模块仅在自己运行时才运行后续的语句,否则当该模块被其他模块引用时,不会运行后续语句。每个模块都有__name__属性,当它等于'__main__'时,表示该模块被用户单独运行,可以执行特殊的操作。
这个程序正常情况下直接运行即可,第一次运行可能需要扫码登录一下。另外可以将第11行的判断间隔增大一些,减少程序运行消耗。
后续还是要继续学习python基础,只学习网上现成的实例的话,根基不稳,后续学习效率高不了。
python使用itchat发送微信消息提醒的更多相关文章
- 03: itchat发送微信消息
1.1 微信机器人自动回复消息 1.运行程序,会弹出二维码,扫描授权后即可实现自动回复信息 参考01 参考02 #coding=utf8 import itchat, time from itcha ...
- 全网最全的Windows下Anaconda2 / Anaconda3里Python语言实现定时发送微信消息给好友或群里(图文详解)
不多说,直接上干货! 缘由: (1)最近看到情侣零点送祝福,感觉还是很浪漫的事情,相信有很多人熬夜为了给爱的人送上零点祝福,但是有时等着等着就睡着了或者时间并不是卡的那么准就有点强迫症了,这是也许程序 ...
- 【玩具】使用Python自动化发送微信消息进行订水
事情是这样的,我知道淘宝上有卖一种USB接口的大按钮,估计是给工厂或者医院之类的场景设计的,样子长这样: 然后我就一直挺想搞一个的,不为别的,就是玩,但是想来想去也没想到这玩意儿对我而言能有啥用途,就 ...
- 2.转发。基于itchat的微信消息同步机器人
原文:https://www.jianshu.com/p/7aeadca0c9bd# 看到了该网址有基于itchat的微信消息同步机器人,转过来继续研究.以下是转过来的: 最近 全栈数据工程师养成攻略 ...
- 使用itchat监控微信消息,从此不再为撤回烦恼
强大的Itchat itchat是一个开源的微信个人号接口,使用python封装接入微信网页版接口,通过调用itchat来登录微信网页版收发消息. 项目简介 - itchat 掌握itchat之后,只 ...
- python实现定时发送qq消息
因为生活中老是忘记各种事情,刚好又在学python,便突发奇想通过python实现提醒任务的功能(尽管TIM有定时功能),也可定时给好友.群.讨论组发送qq消息.其工作流程是:访问数据库提取最近计划— ...
- 【python】itchat登录微信获取好友签名并生成词云
在知乎上看到一篇关于如何使用itchat统计微信好友男女比例并使用plt生成柱状图以及获取微信好友签名并生成词云的文章https://zhuanlan.zhihu.com/p/36361397,感觉挺 ...
- PHP公众号开发给用户发微信消息提醒功能
最近做的一个项目,当有用户有资金到账或者成员变动时需要给他发一条微信消息提示.针对这个,开始想使用模板消息,但是刚注册的公众号申请消息模板需要几天时间申请,在时间不足下选择了使用客服消息接口,微信文档 ...
- 登录以及发送微信消息itchat 库
项目地址点这里 itchat itchat是一个开源的微信个人号接口,使用python调用微信从未如此简单. 使用不到三十行的代码,你就可以完成一个能够处理所有信息的微信机器人. 当然,该api的 ...
随机推荐
- 从hivesql结果中读取数值到shell变量的方法
为了检查hive表中的数据,并统计展现,需要将查出的结果传入到shell变量,然后统一输出到文本. 最后使用了以下两个方法: 方法一 QUAN=$(hive -S -e "select co ...
- Altium Designer 10如何导出SMT加工信息和BOM元件清单
要委托工厂进行SMT加工,需要向工厂提供表贴元器件的位置信息(Pick Place),这些信息可以由csv保存下来. 步骤如下: 一.设定坐标原点,一般设为板子左下角,在Keepout划线的顶点处. ...
- Python学习之路基础篇--09Python基础,初识函数
函数可以分为内置函数 和 自定义函数.这次关注的主要是自定义函数.定义函数之后,就可以在任何需要它的地方调用. 1 返回值的重要性 返回值的3种情况 没有返回值 ---- 返回None 不定 retu ...
- ccf-炉石传说-201609-3
大概是CCF 第三题比较简洁的一道题吧 尽量设计好一个数据结构: node t[2][10]: 存双方的英雄和随从 int num[2]: 存隋朝的数量 用p来实现双方的切换,因为有统一 的接口 ...
- Restful levels&HATEOAS详解
RESTful: Rest是一种软件架构风格.设计风格,而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等 ...
- 各类排序算法的实现C#版
using System;using System.CodeDom;using System.Collections.Generic;using System.Linq;using System.Ru ...
- JavaScript杂谈(第六天)
js中可以使用Function创建函数 var func=new Function(); 这个对象可以将字符串转换为函数 var func=new Function("console.wri ...
- 学习笔记CB002:词干提取、词性标注、中文切词、文档分类
英文词干提取器,import nltk,porter = nltk.PorterStemmer(),porter.stem('lying') . 词性标注器,pos_tag处理词序列,根据句子动态判断 ...
- Mybatis---架构图
- 引擎设计跟踪(九.14.2 final) Inverse Kinematics: CCD 在Blade中的实现
因为工作忙, 好久没有记笔记了, 但是有时候发现还得翻以前的笔记去看, 所以还是尽量记下来备忘. 关于IK, 读了一些paper, 觉得之前翻译的那篇, welman的paper (http://gr ...