微信获取好友列表接口_微信获取用户信息接口
获取微信好友列表api是怎样操作的?现在微信即将变成我们日常生活的一部分,微信的更新也伴随着微信功能的开发与多样。下面小编就为你们讲解一下获取微信好友列表api是怎样操作的。
本部分所需环境
本文是这一教程的第二部分,需要基本的 pip 可用的 Python 环境。
本教程使用的环境如下:
Windows 8.1 (其他平台也可用)
Python 2 or 3
微信版本 6.3.25
微信控制器
在项目主页上,专门有人就微信作为智能家居入口向我强调了这些初衷。
如果微信可以成为控制器,就可以不必自制手机端客户端的麻烦。
其实这个需求实现出来十分简洁,这里我借鉴了 yaphone 的RasWxMusicbox,使用了其中个别的代码成为演示。
这是一个通过微信控制手机播放音乐的小项目,那么主要就是三个功能:
输入“帮助”,显示帮助
输入“关闭”,关闭音乐播放
输入具体歌名,进入歌曲的选择
换成代码就是这样一个逻辑:
if msg == u'关闭':
close_music()
print(u'音乐已关闭')
if msg == u'帮助':
print(u'帮助信息')
else:
print(interact_select_song(msg))
那么这次必须解决的就是如何关闭音乐,如何选取音乐跟如何使用微信交互。
关闭音乐我们这儿使用打开空文件的方法,而选用音乐我们使用网易云音乐的 API 完成:
import os
# 通过该命令安装该 API : pip install NetEaseMusicApi
from NetEaseMusicApi import interact_select_song
with open('stop.mp3', 'w') as f: pass
def close_music():
os.startfile('stop.mp3')
而微信的调用可以借助 itchat 包简单的完成,这里应注意的是:
有些账号无法与自己通信,所以我们选择与文件传输助手( filehelper )通信
为了避免针对其它消息的响应,我们在第一行过滤了无关信息
itchat.run 的选项分别为允许热拔插微信获取好友列表接口,方便调试
# 接上段程序
# 通过该命令安装该 API : pip install itchat
import itchat
@itchat.msg_register(itchat.content.TEXT)
def music_player(msg):
if msg['ToUserName'] != 'filehelper': return
if msg['Text'] == u'关闭':
close_music()
itchat.send(u'音乐已关闭', 'filehelper')
if msg['Text'] == u'帮助':
itchat.send(u'帮助信息', 'filehelper')
else:
itchat.send(interact_select_song(msg['Text']), 'filehelper')
itchat.auto_login(True)
itchat.send(HELP_MSG, 'filehelper')
itchat.run()
itchat 对常用功能都做好了封装,调用还是比较易于的。
完整的程序我放在了gist上面,使用时不要忘记安装第三方包。
通过与文件传输助手的交互,微信即可够轻松成为其它程序的入口。
群发助手
在短信的时代,逢年过节都会需要接收和发送大量的邮件。
虽然自己也发现短信就烦,但不发又怕会错过什么。
所以后来就造成了各式各样的群发工具,最简单的例如在消息中加入名字,让人觉得不像群发。
不过可惜的是,微信自带的群发助手真的也是群发。
当然,稍加操作,一切皆有也许。
例如在消息中加入昵称:
通过get_friends方法可以轻松获得所有的好友(好友首位是自己)
基于不同的好友可以发送不同的消息
这条程序运行后是真的会发消息出来,如果仅仅演示目的,把itchat.send改为print即可
#coding=utf8
import itchat, time
itchat.auto_login(True)
SINCERE_WISH = u'祝%s 新年快乐!'
friendList = itchat.get_friends(update=True)[1:]
for friend in friendList:
# 如果是演示目的,把以下的方式改为 print 即可
itchat.send(SINCERE_WISH % (friend['DisplayName']
or friend['NickName']), friend['UserName'])
time.sleep(.5)
又比如帮特定的人发送特定的消息。
我们这里借助群聊实现,划定一个群聊,在群聊内则私信发送祝福。
如果仅是创建群聊不说话,对方是不会有提示的
群聊如果不保存到通讯录,是能够在各设备之间同步的(所以 itchat 也能够读取到)
群聊在被获得的之后不会自带用户列表,所以必须使用update_chatroom更新用户列表
当然,如果仅仅演示目的,把itchat.send改为print即可
#coding=utf8
import itchat, time
itchat.auto_login(True)
REAL_SINCERE_WISH = u'祝%s 新年快乐!!'
chatroomName='wishgroup'
itchat.get_chatrooms(update=True)
chatrooms = itchat.search_chatrooms(name=chatroomName)
if chatrooms is None:
print(u'没有找到群聊:' + chatroomName)
else:
chatroom = itchat.update_chatroom(chatrooms[0]['UserName'])
for friend in chatroom['MemberList']:
friend = itchat.search_friends(userName=friend['UserName'])
# 如果是演示目的,把以下的方式改为 print 即可
itchat.send(REAL_SINCERE_WISH % (friend['DisplayName']
or friend['NickName']), friend['UserName'])
time.sleep(.5)
所以我的通讯录里会有从来不用的客户群、教师群什么的。
完整的程序我放在了gist上面,使用时不要忘记安装第三方包。
当然,为了避免误操作,完整程序中我把所有的itchat.send换成了print。
另外,不只有文字可以发送,文件、图片也都是可行的,具体操作见 itchat 的文档了。
itchat 获取微信可以获得到的各类内容也都十分方便。
其余的比如生日,节日什么的就看具体需求了。
好友删除检测
有时候我们会想知道某个好友有没有删除自己以及把自己拉入黑名单。
这一操作使用 itchat 也会变的十分简单。
原理的话,在于将好友拉入群聊时,非好友和黑名单好友不会被拉入群聊。
所以群聊的返回值中就有了好友与你关系的数据。
另外,群聊在第一次产生普通消息时就会被除创建者以外的人看到的(系统消息不算普通消息)。
这样,就可以隐蔽的完成好友检测。
写成代码的话,这个操作就是这样的:(只是演示微信获取好友列表接口,不能运行,运行版本在段末)
chatroomUserName = '@1234567'
friend = itchat.get_friends()[1]
r = itchat.add_member_into_chatroom(chatroomUserName, [friend])
if r['BaseResponse']['ErrMsg'] == '':
status = r['MemberList'][0]['MemberStatus']
itchat.delete_member_from_chatroom(chatroom['UserName'], [friend])
return { 3: u'该好友即将将你加入黑名单。',
4: u'该好友即将将你删除。', }.get(status,
u'该好友似乎与你是好友关系。')
其中,通过add_member_into_chatroom操作获得我们必须的返回值,即可受到好友的状况。
同样的,这次我们也将文件传输助手成为终端,具体办法与控制器一节类似。
这次我们确认的交互模式是接收“名片”消息,并判断名片中的好友与自己的关系。
那么获得名片信息的内容可以这样写:
import itchat
@itchat.msg_register(itchat.content.CARD)
def get_friend(msg):
if msg['ToUserName'] != 'filehelper': return
friendStatus = get_friend_status(msg['RecommendInfo'])
itchat.send(friendStatus['NickName'], 'filehelper')
itchat.auto_login(True)
itchat.run()
那么我们所必须的所有个别就都解决了,下面将它们组合出来即可。
完整的程序我放在了gist上面,使用时不要忘记安装第三方包。
在网页版微信的接口受到限制之前完全可以批量进行这一操作,检测这些好友删除了自己。
但现在仍然操作存在频率限制,所以没法做一些变通了。
之后的内容
到此处这一篇文章的主要内容就结束了。
主要从微信作为终端使用、自定义的消息交互、微信协议研究三方面开了一个简单的头。
其余有一些更加大众,如机器人,就不再赘述。