zoukankan      html  css  js  c++  java
  • python 实现微信自动回复和好友签名分析

    废话不多说了,代码不多,简单粗暴,我就直接上代码:

    1.自动回复

    #coding=utf8
    import itchat
    import  time
    
    # 自动回复
    # 封装好的装饰器,当接收到的消息是Text,即文字消息
    @itchat.msg_register('Text')
    def text_reply(msg):
        # 当消息不是由自己发出的时候
        if not msg['FromUserName'] == myUserName:
            # 发送一条提示给文件助手
            itchat.send_msg(u"[%s]收到好友@%s 的信息:%s
    " %
                            (time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(msg['CreateTime'])),
                             msg['User']['NickName'],
                             msg['Text']), 'filehelper')
            # 回复给好友
            return u'[自动回复]@%s您好!抱歉 
    我现在有事不在,一会再和您联系。
    已经收到您的的信息:%s
    ' % (msg['Text'])
    
    if __name__ == '__main__':
        itchat.auto_login()
    
        # 获取自己的UserName
        myUserName = itchat.get_friends(update=True)[0]["UserName"]
        itchat.run()

    2.好友签名分析

    # coding:utf-8
    import  itchat
    import  pandas
    import re
    import jieba
    itchat.login()
    friends =itchat.get_friends()
    df_friends = pandas.DataFrame(friends)
    Signatures = df_friends.Signature
    regex1 = re.compile('<span.*?</span>') #匹配表情
    regex2 = re.compile('s{2,}')#匹配两个以上占位符。
    Signatures = [regex2.sub(' ',regex1.sub('',signature,re.S)) for signature in Signatures] #用一个空格替换表情和多个空格。
    Signatures = [signature for signature in Signatures if len(signature)>0] #去除空字符串
    text = ' '.join(Signatures)
    wordlist = jieba.cut(text, cut_all=True)
    word_freq = {}
    for word in wordlist:
        if word in word_freq:
            word_freq[word] += 1
        else:
            word_freq[word] = 1
    
    freq_word = []
    for word in word_freq.items():
        freq_word.append((word))
    freq_word.sort(key = lambda x: x[1], reverse = True)
    
    for word in freq_word:
        print(word)

     3. 个人微信对接机器人

    #coding=utf8
    import requests
    import itchat
    KEY = 'add31270c85a4c348f5b60251b01fc34'
    def get_response(msg):
        # 这里我们就像在“3. 实现最简单的与图灵机器人的交互”中做的一样
        # 构造了要发送给服务器的数据
        apiUrl = 'http://www.tuling123.com/openapi/api'
        data = {
            'key'    : KEY,
            'info'   : msg,
            'userid' : 'wechat-robot',
        }
        try:
            r = requests.post(apiUrl, data=data).json()
            # 字典的get方法在字典没有'text'值的时候会返回None而不会抛出异
            return r.get('text')
        # 为了防止服务器没有正常响应导致程序异常退出,这里用try-except捕获了异常
        # 如果服务器没能正常交互(返回非json或无法连接),那么就会进入下面的return
        except:
            # 将会返回一个None
            return
    # 这里是我们在“1. 实现微信消息的获取”中已经用到过的同样的注册方法
    @itchat.msg_register(itchat.content.TEXT)
    def tuling_reply(msg):
        # 为了保证在图灵Key出现问题的时候仍旧可以回复,这里设置一个默认回复
        defaultReply = 'I received: ' + msg['Text']
        # 如果图灵Key出现问题,那么reply将会是None
        reply = get_response(msg['Text'])
        # a or b的意思是,如果a有内容,那么返回a,否则返回b
        # 有内容一般就是指非空或者非None,你可以用`if a: print('True')`来测试
        return reply or defaultReply
    
    # 为了让实验过程更加方便(修改程序不用多次扫码),我们使用热启动
    itchat.auto_login(hotReload=True)
    itchat.run()
  • 相关阅读:
    位运算(&)实现分享弹窗上的图标动态显示/隐藏
    MySql如何编写高效的SQL
    Xamarin跨平台移动开发解决方案
    android wireshark抓包和fiddler抓包
    webview使用总结及注意事项
    让你的Android程序更省电
    android precelable和Serialization序列化数据传输
    图片下载缓存防止OOM
    二分搜索怎么用?我和快手面试官进行了深度探讨
    二分查找详解
  • 原文地址:https://www.cnblogs.com/zhengweizhao/p/8306699.html
Copyright © 2011-2022 走看看