利用itchat实现模拟微信网页登录及好友性别分析+自动回复消息和文件

前两天在微信公众号(Python中文社区)上了解到一个很有趣的Python的“玩法”
就是通过itchat库来实现微信的一些基本操作
首先,我们要安装itchat库

pip install itchat

然后我们就可以利用三行简单的代码来实现网页的微信登录

import itchat #首先得导入包。。。
itchat.auto_login()   #这里可以将属性设置hotReload=True即‘热启动’
#itchat.auto_login(hotReload=True)是可以将你扫描二维码登录后的状态保存为一个itchat.pkl文件,这样可以让你下次运行时不再扫描二维码即可登录(网上看到有人说是十分钟左右,我也没做验证,所以不太清楚)。
itchat.run()   # 运行并保持在线状态

登录成功后就是这样了
利用itchat实现模拟微信网页登录及好友性别分析+自动回复消息和文件_第1张图片
然后我们就可以进行一些有趣的操作啦
你想知道你的微信好友是男的多还是女的多吗?
首先我们要将你的好友的性别读取并暂时保存下来,

  1. 这里要说一下微信好友性别返回的值
  2. 男性:1
  3. 女性:2
  4. 不明:0“不明”
import itchat
if __name__ == '__main__':
    itchat.auto_login(hotReload=True)
    #读取朋友的信息,update为更新
    friends=itchat.get_friends(update=True)[0:]
    male=female=other=0
    #这里从friend[1]开始,因为friend[0]是你自己的信息
    for i in friends[1:]:
    #只需要读取好友的sex即可,当然你还可以读取其他的内容进行分析
        sex=i["Sex"]
        if sex==1:
            male+=1
        elif sex==2:
            female+=1
        else:
            other+=1
    total=len(friends)
    print("男性好友:%.2f%%"%(float(male)/total*100)+"\n"
          +"女性朋友: %.2f%%"%(float(female)/total*100)+"\n"+
          "不明性别好友:%.2f%%"%(float(other)/total*100))

这样就能够看到你的好友性别的分布啦,也可以看到城市、年龄等的分布。还可以通过pyecharts库将数据可视化,以便让这些数据更加清晰的显示出来。

然后我们要

  1. 抓取每日一句
  2. 将每日一句的内容转换为音频(.mp3)文件
  3. 当接收到好友的消息时
  4. 给好友发送每日一句和音频文件
    抓取每日一句
#需要利用到一点爬虫的知识
#emmm```我在网上找了一小段代码
def get_news():
    """获取金山词霸的每日一句,中文和英文"""
    url = "http://open.iciba.com/dsapi/"  #这是地址
    r = requests.get(url)  #发送请求
    content = r.json()['content']
    note = r.json()['note']
    return content, note

将抓取下来的文字转换为语音
需要用到百度的语音API接口,教程很多,只需要注册一个账号即可。
利用itchat实现模拟微信网页登录及好友性别分析+自动回复消息和文件_第2张图片


def Voice(message):
    message = message
   APP_ID = '你的 App ID'
   API_KEY = '你的 Api Key'
    SECRET_KEY = '你的 Secret Key'
    client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
    print('语音提醒:', message)  #输出字符串主要是为了看抓取到的内容。
    #百度语音合成
    #可查看百度的技术文档[python技术文档](https://ai.baidu.com/docs#/TTS-Online-Python-SDK/top)
    result = client.synthesis(message, 'zh', 1, {'vol': 5})  #
    if not isinstance(result, dict):
        with open('sound.mp3', 'wb') as f:
            f.write(result)
            f.close()

文档中的说明
利用itchat实现模拟微信网页登录及好友性别分析+自动回复消息和文件_第3张图片
利用itchat实现模拟微信网页登录及好友性别分析+自动回复消息和文件_第4张图片
接下来就是发送消息和文件

#完整代码
from __future__ import unicode_literals
import itchat
from aip import AipSpeech
from wxpy import *
import requests

def get_news()
    url = "http://open.iciba.com/dsapi/"
    r = requests.get(url)
    content = r.json()['content']
    note = r.json()['note']
    return content, note

def Voice_broadcast(message):
    message = message
    APP_ID = '14865118'
    API_KEY = 'lWvOaGZY7lW8Kd6s6I3IVGvP'
    SECRET_KEY = 'v566mLWh6bq69vVK9DEfsXDVqE9o06QO'
    client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
    print('语音提醒:', message)
    #百度语音合成
    result = client.synthesis(message, 'zh', 1, {'vol': 5})
    if not isinstance(result, dict):
        with open('sound.mp3', 'wb') as f:
            f.write(result)
            f.close()
    #playsound模块播放语音

@itchat.msg_register([PICTURE,TEXT])
def simple_reply(msg):
    content, note = get_news()
    voice = note + content
    Voice_broadcast(voice)

    itchat.send(voice,msg['FromUserName'])
    try:
        itchat.send_file("sound.mp3",msg['FromUserName'])
        print("success")
    except:
        print("fail")


if __name__ == "__main__":
    itchat.auto_login(hotReload=True)
    friends_list = itchat.get_friends(update=True)
    itchat.run()

你可能感兴趣的:(Python,itchat)