用python wxpy管理微信公衆號,並利用微信獲取本身的開源數據。

以前瞭解到itchat 乃至於 wxpy時 是利用tuling聊天機器人的接口。調用接口並保存雙方的問答結果能夠做爲本身的問答詞庫的一個數據庫累計。這些數據能夠用於本身訓練。html

而最近但願獲取一些語音資源,用於卷積神經網絡的訓練。。數據庫

 


 

首先wxpy是itchat的升級版,經過wxpy bot.core便可原封不動的調用itchat的指令。緩存

能夠實現的簡單功能:微信

1. 調取全部微信好友的信息,包括頭像,簽名,地區,等信息。網絡

 

# -*- coding: utf-8 -*-
""" Created on Fri Jul 19 17:10:01 2019 @author: wenzhe.tian """
import wxpy as wp from collections import defaultdict import pandas as pd from tkinter import messagebox import os #初始化機器人,選擇緩存模式(掃碼)登陸
bot = wp.Bot(cache_path=True) friend = bot.core.get_friends(update=True)[0:] num = 0 for f in friend: image = bot.core.get_head_img(userName=f["UserName"]) #用 itchat.get_head_img(userName=None)來爬取好友列表的頭像
    fileImage = open(str(num) + ".jpg",'wb') #將好友頭像下載到本地
 fileImage.write(image) fileImage.close() num += 1 friend=pd.DataFrame(friend) friend.to_excel('friend.xlsx',sheet_name='Friend_Info')#全部朋友相關資料存爲excel

根據上面能夠作一些頭像集合,或者微信好友的動態圖表統計。app

 

2.  消息回覆spa

bot.friends().search('老九門裏排第十')[0].send('[強]') #表示回覆給 '老九門裏排第十' 點贊符號 至關於 friends.search() 

 


 

 

然而這些不能知足一些高級的需求好比:excel

1. 能夠自動將錄音,視頻,圖像,聊天記錄等按照檔案記錄下來。(此處修改可操做鏈接圖靈機器人,將提問和回答的信息記錄下來。做爲本身訓練的原始數據集)
code

其中 全局參數 global temp:orm

temp是一個list,能夠將最近的消息加入list,該消息信息是字典格式的全部消息包含的原始數據。 好比消息類型,發送人,接收人等等。

# -*- coding: utf-8 -*-
"""
Created on Fri Jul 19 13:10:01 2019 @author: wenzhe.tian """ import wxpy as wp from collections import defaultdict import pandas as pd from tkinter import messagebox import os bot = wp.Bot(cache_path=True) chats=bot.chats() # 全部開啓了聊天窗口的對象 groups=bot.groups() # 全部羣的對象 friends=bot.friends() # 全部好友的對象 mps=bot.mps() # 全部公衆號的對象 @bot.register()
def print_messages(msg): print(msg.create_time,msg) global temp if msg.sender.nick_name in message.keys(): message[msg.sender.nick_name].append(msg.raw) else: message[msg.sender.nick_name]=[] message[msg.sender.nick_name].append(msg.raw) path='C:\\Users\\wenzhe.tian\\Desktop\\send_mail\\wechat_infomation\\'; # 修改成但願存儲聊天,推送,圖片,視頻,音頻等信息的地址 if os.path.exists(path+msg.sender.nick_name)==False: os.makedirs(path+msg.sender.nick_name) if msg.type=='Text': f = open(path+msg.sender.nick_name+'\\message.txt','a+',encoding='utf-8') f.read() f.write('\n') f.write(str(msg.create_time)+msg.text) f.close() else: print('非文字消息,已存儲') if '.' in msg.file_name: msg.get_file(save_path=path+msg.sender.nick_name+'\\'+msg.file_name) else: msg.get_file(save_path=path+msg.sender.nick_name+'\\'+msg.file_name+'.txt')

 

                                              

 

 如上圖: 全部新回覆的消息會自動建立 代碼裏path下的文件夾,視頻,錄音等非文字內容會直接下載,推送等html格式的消息會當作文字和聊天記錄一同保存下來記錄到message.txt裏

文字能夠用於訓練,亦可用於詞雲等生成。

 例:message的文檔提取後

 

2.能夠管理微信轉發,定位到人,羣,或者公衆號。選定條件轉發,好比消息是否包含關鍵字等等

# 定位公司羣
company_group = ensure_one(bot.groups().search('公司微信羣'))

# 定位老闆
boss = ensure_one(company_group.search('BOSS'))

# 將老闆的消息轉發到文件傳輸助手
@bot.register(company_group)
def forward_boss_message(msg):
    if msg.member == boss:
        msg.forward(bot.file_helper, prefix='BOSS')

 

3. 針對某人的自動回覆,此處可設定詞彙和回覆內容(好比html格式的推送或者連接)來實現微信公衆號的一些運營。

 具體用法以下: 

@ bot.register() 的括號內必須爲一個對象,好比上文是一個公司的羣,是從全部羣中搜索名字 '公司微信羣' ,咱們以前定義的 
groups=bot.groups() # 全部羣的對象
friends=bot.friends() # 全部好友的對象
mps=bot.mps() # 全部公衆號的對象

均是對象的集合,從中篩選便可,
好比想要自動回覆 老九門裏排第十 這我的的全部text類型的消息。即
laojiu= friends.search('老九門裏排第十')[0] # 這裏其實默認搜索的是nickname

而後:
@bot.register([laojiu, groups], TEXT) # 此處表示對laojiu 和全部groups裏的對象的text類型的消息作操做

def auto_reply(msg):
    # 若是是羣聊,但沒有被 @,則不回覆
    if isinstance(msg.chat, Group) and not msg.is_at:
        return
    else:
        # 回覆消息內容和類型
        return '收到消息: {} ({})'.format(msg.text, msg.type)

暫時更新到這裏,以上。

相關文章
相關標籤/搜索