码迷,mamicode.com
首页 > 微信 > 详细

微信机器人

时间:2019-06-05 00:01:09      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:pen   def   message   width   rdl   apt   tle   数据   toc   

用Python对你的微信好友进行数据分析,第一次用类的方法来做,接下来直接上代码

from wxpy import Bot
import openpyxl
from pyecharts import Map
import wordcloud
import matplotlib.pyplot as plt
import jieba
class WeChatRobot:
    def __init__(self,toexcel="",tocity="",tosfditu=""):
        self.bot=Bot()
        self.allfriends_info=self.bot.friends()
        self.allfriends_num=len(self.allfriends_info)
        self.excelwj=toexcel
        self.wcofcitywj=tocity
        self.shengfenwj=tosfditu技术图片
        self.run()
    def getfriends(self):
        self.friendsinfo=[]
        self.infotitle=[nick,beizhu,sex,province,city]
        for afriend in self.allfriends_info:
            nick=afriend.raw.get(self.infotitle[0],None)
            beizhu=afriend.raw.get(self.infotitle[1],None)
            sex={1:"",2:"",0:"其他"}.get(afriend.raw.get(self.infotitle[2],None),None)
            province=afriend.raw.get(self.infotitle[3],None)
            city=afriend.raw.get(self.infotitle[4],None)
            listmp=[nick,beizhu,sex,province,city]
            self.friendsinfo.append(listmp)
    def bcexcel(self,excelname):
        workbook=openpyxl.Workbook()
        sheet=workbook.active
        sheet.title=weixinhaoyou
        for _ in range(len(self.infotitle)):
            sheet.cell(row=1,column=_+1,value=self.infotitle[_])
        for i in range(self.allfriends_num):
            for j in range(len(self.infotitle)):
                sheet.cell(row=i+2,column=j+1,value=str(self.friendsinfo[i][j]))
        if excelname!="":
            workbook.save(excelname)
            print("chenggong")
    def fenxi(self):
        print(self.allfriends_info.stats_text())
    def cityciyun(self,cityname):
        citystr=""
        for i in range(self.allfriends_num):
            if self.friendsinfo[i][4] not in citystr:
                citystr +=" "+self.friendsinfo[i][4]
                wordlist=jieba.lcut(citystr)
                citystr= .join(wordlist)
                font=simhei.ttf
                wc=WordCloud(
                    background_color="white",
                    width=1300,
                    height=620,
                    max_font_size=200,
                    random_state=200,
                    )
        myword=wc.generate(citystr)
        plt.imshow(myword)
        plt.axis(off)
        plt.show()
        if cityname!="":
            wc.to_file(cityname)
            print("chenggong")
    def scsfdt(self,mapfile):
        sflist=[]
        sfnum=[]
        for i in range(self.allfriends_num):
            if self.friendsinfo[i][3] not in sflist:
                sflist.append(self.friendsinfo[i][3])
                sfnum.append(0)
        for i in range(self.allfriends_num):
            for j in range(lrn(sflist)):
                if self.friendsinfo[i][3]==sflist[j]:
                    sfnum[j]+=1
        map=Map("haoyoufenbu",width=100,heigth=800)
        map.add("",sflist,sfnum,maptype="china",is_vlauemap=True,visual_text_color=#000)
        if mapfile!="":
            map.render(mapfile)
            print("chenggong")def run(self):
        self.getfriends()
        print("get!")
        print("members",self.allfriends_num)
        self.bcexcel(self.excelwj)
        self.fenxi()
        self.cityciyun(self.wcofcitywj)
        self.scsfdt(self.shengfenwj)
        self.sccsdt(self.chengshiwj)
if __name__=="__main__":
    toexcel="D:\\python文件\\haoyoushuju.xlsx"
    totupian="D:\\python文件\\citywc.png"
    toshengfen="D:\\python文件\\sfditu.html"
    robot=WeChatRobot(toexcel,totupian,toshengfen)

运行结果如下:

技术图片技术图片

技术图片

接下来是自动回复机器人的代码

from wxpy import *
import requests
import json
bot=Bot()
robot = Bot()
def talk_robot(info=你好啊):   #定义一个默认参数
    api_url = http://www.tuling123.com/openapi/api  # 图灵接口url
    apikey =      # 图灵密钥 
    data = {key: apikey, info: info}                                   
    r = requests.post(api_url, data=data).text
    response = json.loads(r)[text]
    return response
#在群里艾特你自动回复
@robot.register()
def reply_my_friend(msg):
    message = {}.format(msg.text)
    response = talk_robot(info=message)
    return response
embed()

 

微信机器人

标签:pen   def   message   width   rdl   apt   tle   数据   toc   

原文地址:https://www.cnblogs.com/gyy-15768200938/p/10976913.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!