获取微信好友列表api是如何操作的?

发布:2017-03-30 17:54:21来源:cuiacuia阅读:5090

  获取微信好友列表api是如何操作的?现在微信已经成为我们日常生活的一部分,微信的升级也伴随着微信功能的开发与多样。下面小编就为大家讲解一下获取微信好友列表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上面,使用时不要忘记安装第三方包。

  在网页版微信的接口受到限制之前完全可以批量进行这一操作,检测哪些好友删除了自己。

  但目前显然操作存在频率限制,所以只能做一些变通了。

  之后的内容

  到这里这一篇文章的主要内容就结束了。

  主要从微信作为终端使用、自定义的消息交互、微信协议研究三方面开了一个简单的头。

  其余有一些过于大众,如机器人,就不再赘述。

  而另一些,需要一定的基础或者不适合分享,就留给各位自行研究。

  以上就是小编为大家整理的关于获取微信好友列表api是如何操作的相关内容。更多更精彩的内容请持续关注微信素材网。

  相关阅读:

      微信美女加好友到底是什么套路?

      微信小程序头部导航栏如何设置?

      怎么看微信是否被删除好友?

发表评论
微微风
昵称

热门文章

更多

如何提高微信公众号文章点击量和转发量?

1

好看的微信男女头像,欧美男女头像分享

2

么么哒表情包分享,么么哒表情有哪些?

3

biu手指打枪爱心表情包分享,发送爱心表情包大全

4

微信支付勒索病毒是什么意思?什么是微信支付勒索病毒?

5

微信清理恶意账号是怎么回事?发生了什么?

6

微信卡包如何获得红包?怎样领红包?

7

微信公众号文章修改错别字规则是什么?有什么要注意的?

8

微信搜一搜如何做排名?优化排名的方法是什么?

9

微信如何开通公交车扫码付款?方法是什么?

10

最近更新

更多
1微信视频号直播场观购买平台
2如何防止微信群被封呢?
3微信直播的形式有哪些?
4绑定微信安全码有什么方法?
5微信怎么设置安全码?微信密码怎么修改?
6微信小程序怎样助力门店争抢红利市场?
7微信小程序怎样禁用?具体怎么操作?
8微信公众平台有什么作用?
9微信号怎么做推广?有哪些方法?
10如何关闭微信小程序?步骤是什么?