API https://itchat.readthedocs.io/zh/latest/api/php
教程 https://www.yahboom.com/build.html?id=1999&cid=257html
項目地址 https://github.com/revotu/ItChatpython
更多使用 http://www.javashuo.com/article/p-hduqjifz-c.htmlgit
重要文件傳輸 : 視頻 圖片 語音 文字github
http://www.javashuo.com/article/p-xjyngefc-c.htmlshell
音樂交互bootstrap
https://itchat.readthedocs.io/zh/latest/tutorial/tutorial2/api
說明: 這玩意至關於網頁版微信,因此登錄了會擠掉電腦端。手機也會提示網頁微信已經登錄,手機通知關閉,可是手機仍然能夠接收消息(因此和手機不衝突嘍??)。微信
首先使用pip安裝itchat:app
Windows用戶能夠直接打開cmd輸入:
pip install itchat
Mac用戶因爲沒有對anaconda的python配置環境變量,須要先在終端輸入:
curl https://bootstrap.pypa.io/get-pip.py | python3
樹莓派版本無需下載pip,直接下載itchat輸入:
pip install itchat
pip命令和pip3的區別是:pip3能夠直接下載適合python3 使用的package。對於樹莓派,咱們能夠根據spyder中python的版本使用pip2或pip3下載itchat:
pip2 install itchat
https://blog.csdn.net/lockelk/article/details/85296818
能夠先查看是否已安裝及安裝的版本
pip list
解決:
先查看wxpy的安裝路徑
pip show itchat
而後將路徑添加
python 進入>>>
>>>import sys
>>>sys.path.append("/home/pi/.local/lib/python2.7/site-packages")
其中括號內的爲上一步實際查出的安裝路徑。
>>>sys.path 查看已安裝的
#!/usr/bin/env python2 # -*- coding: utf-8 -*- import sys sys.path.append("/home/pi/.local/lib/python2.7/site-packages") import itchat #登錄 掃描圖片二維碼,一次登錄永久記錄 itchat.auto_login(hotReload=True) #給文件出書助手,發送一條消息 itchat.send(u'你好', 'filehelper') #給指定用戶發消息 users=itchat.search_friends("育鈴") userName= users[0]['UserName'] print(userName) itchat.send('你好,姚寶貝蛋',toUserName=userName) #程序不停運行 itchat.run()
#!/usr/bin/env python2 # -*- coding: utf-8 -*- import sys sys.path.append("F:/dongdong/0tool/python/Anaconda3/Lib/site-packages") import itchat itchat.auto_login(hotReload=True)
https://blog.csdn.net/Lynn_coder/article/details/79436539
import itchat itchat.auto_login() itchat.send('Hello, filehelper', toUserName='filehelper')
這段代碼意思是給filehelper發送一個hello,filehelper就是文件助手。
那麼咱們想給指定的人發消息,並非把filehelper改掉這麼簡單
users=itchat.search_friends("老王") userName= users[0]['UserName'] print(userName) itchat.send('你好老王',toUserName=userName)
若是咱們想給老王發消息,就先使用itchat.search方法,會把全部備註名爲老王的聯繫人全都找出來。
以後咱們選取第一個(若是你的聯繫人列表裏只有一個老王,那麼就只會搜出來一個)
users[0]取到的是一個聯繫人對象,他裏面有個key叫UserName,它就是真正的用戶的username
以後咱們再使用itchat.send方法,就能夠成功向老王發送消息了
完整例程
#!/usr/bin/env python2 # -*- coding: utf-8 -*- import sys sys.path.append("F:/dongdong/0tool/python/Anaconda3/Lib/site-packages") import itchat #註冊程序打開和關閉函數 def lc(): print('finish login') itchat.send(u'設備連線', 'filehelper') def ec(): itchat.send(u'設備離線', 'filehelper') # 註冊打印出來消息的來源者函數 @itchat.msg_register(itchat.content.TEXT) def _(msg): # equals to print(msg['FromUserName']) print(msg.fromUserName) #登錄 圖片二維碼掃描 一次登錄以後不用從新掃描 itchat.auto_login(loginCallback=lc, exitCallback=ec,hotReload=True) #給文件出書助手,發送一條消息 itchat.send(u'你好', 'filehelper') users=itchat.search_friends("育鈴") userName= users[0]['UserName'] print(userName) itchat.send('你好,姚寶貝蛋',toUserName=userName) #程序不停運行 itchat.run() #程序中止 #itchat.logout()
這個圖片發送很奇怪,我開始死活發不出去,後來把圖片搞小了一點發出去了,後來再用原來分辨率,又能夠了,難道是當時我網速慢???
#!/usr/bin/env python2 # -*- coding: utf-8 -*- import sys sys.path.append("F:/dongdong/0tool/python/Anaconda3/Lib/site-packages") import itchat #註冊程序打開和關閉函數 def lc(): print('finish login') itchat.send(u'設備連線', 'filehelper') def ec(): itchat.send(u'設備離線', 'filehelper') # 註冊打印出來消息的來源者函數 @itchat.msg_register(itchat.content.TEXT) def _(msg): # equals to print(msg['FromUserName']) print(msg.fromUserName) #登錄 圖片二維碼掃描 一次登錄以後不用從新掃描 itchat.auto_login(loginCallback=lc, exitCallback=ec,hotReload=True) #給文件出書助手,發送一條消息 itchat.send(u'你好', 'filehelper') #找到指定用戶 users=itchat.search_friends("育鈴")#微信備註 userName= users[0]['UserName'] print(userName) itchat.send('哇,姚寶貝蛋',toUserName=userName) f="F:/dongdong/1.jpg" #圖片地址 try: itchat.send_image(f,toUserName=userName) #若是是其餘文件能夠直接send_file print("success") except: print("fail") #程序不停運行 itchat.run() #程序中止 #itchat.logout()
消息分類:
圖片或表情(PICTURE)、錄製(RECORDING)、附件(ATTACHMENT)、小視頻(VIDEO)、文本(TEXT),地圖(MAP),名片(CARD),通知(NOTE),分享(SHARING),好友邀請(FRIENDS)、語音(RECORDING)、系統消息(SYSTEM)
http://www.javashuo.com/article/p-bpfmwsyb-p.html
圖片或表情(PICTURE)、錄製(RECORDING)、附件(ATTACHMENT)、小視頻(VIDEO)、文本(TEXT),地圖(MAP),名片(CARD),通知(NOTE),分享(SHARING),好友邀請(FRIENDS)、語音(RECORDING)、系統消息(SYSTEM)
https://github.com/BossBobxuan/WeChatToCommand/blob/master/chatToCommand.py
本項目的具體需求是:樹莓派啓動微信服務和OpenCV服務,OpenCV對攝像頭實時視頻監控,當檢測到人臉後後拍照,將拍攝到的照片經過微信發送給用戶的我的好友。
http://www.javashuo.com/article/p-xjyngefc-c.html
https://www.jianshu.com/p/c8b164b840db
使用 user_info = itchat.search_chatrooms(name='XXX') 查找羣的時候,有時會遇到找不到的狀況,須要在羣設置選擇-保存到通信錄,才能被查找到
https://itchat.readthedocs.io/zh/latest/tutorial/tutorial2/
https://blog.csdn.net/weixin_33998125/article/details/85077561
https://www.alphayan.cn/index.php/2018/03/17/itchat_01/
https://itchat.readthedocs.io/zh/latest/tutorial/tutorial0/#_5
https://blog.csdn.net/xiaoxianerqq/article/details/81428054
https://blog.csdn.net/xiaoxianerqq/article/details/81428054
1,itchat:這個是主要的工具,用於鏈接微信我的帳號接口。如下是一些相關的知識點網站。
2,xlrd:這個是用來讀Excel文件的工具。
3,apscheduler:這個是用來定時調度時間的工具。
本項目中,對於微信的操做,咱們須要用到的API是itchat。 itchat是一個微信對於python封裝的api,它的功能很是強大,咱們可使用它和python對本身微信的不少信息進行爬取。
######################################### 程序說明 ######################################## # 功能: # 集合了接收消息處理,主動發送消息處理 # 使用: # 1運行後,第一次掃描二維碼登錄,能夠圖片形式,也能夠命令行形式顯示二維碼 # 2註冊接收消息和文件處理函數 # 2-1 我的用戶或者羣給本身發的消息,圖片,文件,視頻,保存等機制 # 2-2 本身經過文件助手給本身發的消息 # 3主動給別人發消息 # 3-1 本身給普通用戶或者羣發消息,各類文件,圖片,視頻 # 3-2 本身給文件助手發送消息,至關於給本身發消息,用來控制設備,發送文件給設備等 # ########################################################################################### #!/usr/bin/env python2 # -*- coding: utf-8 -*- import sys sys.path.append("F:/dongdong/0tool/python/Anaconda3/Lib/site-packages") import itchat #各種型消息的註冊 from itchat.content import * from datetime import datetime #from itchat.content import PICTURE, RECORDING, ATTACHMENT, VIDEO,TEXT ######################################### 消息發送函數 ######################################## #1-1註冊程序打開和關閉函數 def lc(): print('finish login') itchat.send(u'設備連線', 'filehelper') def ec(): itchat.send(u'設備離線', 'filehelper') #1-2給普通用戶發送圖片 def send_pic(picpath,toUserName): try: itchat.send_image(picpath,toUserName) #第一種通用發送方式 若是是其餘文件能夠直接send_file #itchat.send('@img@%s' % picpath, toUserName) #第二種指定類型發送方式 print("success_jpg") except: print("fail_jpg") #1-3給普通用戶發送文件 def send_file(filepath,toUserName): try: #itchat.send('@fil@%s' % './filex/tt.txt', toUserName=msg['FromUserName']) itchat.send_file(filepath, toUserName) # txt若是是空的就不會發送 print("success_file") except: print("fail_file") #1-4給普通用戶發送視頻 def send_video(videopath,toUserName): try: #itchat.send('@vid@%s' % './filex/videox.mp4', toUserName=msg['FromUserName']) itchat.send_video(videopath, toUserName) print("success_video") except: print("fail_video") #1-5給羣發消息 def SentChatRoomsMsg(chatroomName ,context): itchat.get_chatrooms(update=True) chatrooms = itchat.search_chatrooms(name=chatroomName) #有時會遇到找不到的狀況,須要在該羣設置選擇-保存到通信錄,才能被查找到 if len(chatrooms)==0 : print('沒有找到羣聊:' + chatroomName) # exit(0) else: print(chatrooms[0]['UserName'])#輸出羣聊標識符 itchat.send_msg(context, toUserName=chatrooms[0]['UserName'])#發送消息 ######################################### 消息處理回調函數 ######################################## # 消息分類: # 圖片或表情(PICTURE)、錄製(RECORDING)、附件(ATTACHMENT)、小視頻(VIDEO)、文本(TEXT) # 地圖(MAP),名片(CARD),通知(NOTE),分享(SHARING),好友邀請(FRIENDS)、語音(RECORDING)、系統消息(SYSTEM) # 1-3 文本消息接收和處理 # 1本身發給文件助手的 # 2別人發給己的 #@itchat.msg_register(itchat.content.TEXT,isGroupChat=True) # 2-1只針對羣消息 #@itchat.msg_register(itchat.content.TEXT) # 2-2自針對普通用戶消息 @itchat.msg_register(itchat.content.TEXT, isFriendChat=True, isGroupChat=True, isMpChat=True) # 2-3針對全部人消息 def text_reply(msg): #if msg['ToUserName'] != 'filehelper': return # 過濾掉不是文件助手的消息 #print(msg) # 打印消息 因此的信息 #print(msg["Text"]) # 收到的消息是什麼 #print(msg["ToUserName"]) # 發給誰的 rebacktxt_msg= "收到:"+msg["Text"] #判斷是不是@本人 #if msg["Text"].find(usermsgx["RemarkName"])== '育鈴': if msg["ToUserName"].find("filehelper")==0: # 若是是給文件助手發的 itchat.send(rebacktxt_msg, 'filehelper') return rebacktxt_msg # 回覆除了本身之外人的消息 #1-4文件下載---存在同級filex目錄下 #1別人發給本身的消息 #2本身發給文件助手的 @itchat.msg_register([PICTURE, RECORDING, ATTACHMENT, VIDEO]) def download_files(msg): filedpx="./filex/"+msg["FileName"] # 獲得文件路徑+名字 目錄須要手動建立 msg.download(filedpx) rebackfile_msg="收到文件類型"+msg['Type']+" 保存地址爲:filex/"+msg.fileName if msg["ToUserName"].find("filehelper")==0: # 1若是是給文件助手發的,發個提醒 itchat.send(rebackfile_msg, 'filehelper') return rebackfile_msg # 2若是是別人發給本身的,直接回復對方 ######################################### 主函數函數 ######################################## #1登錄 itchat.auto_login(hotReload=True,loginCallback=lc, exitCallback=ec) #圖片二維碼掃描 登錄以後一段時間內不用從新掃描,註冊打開和結束回調函數 #2-1找到本身的名字 usermsgx=itchat.search_friends() #獲得當前用戶的信息 首位是本身 #print(usermsgx) #個人微信ID #print(usermsgx["NickName"]) #個人備註名字 #2-2找到暱稱爲「」的用戶 users=itchat.search_friends("育鈴") #按照暱稱查找 #itchat.search_friends(userName='@abcdefg1234567') #按照ID查找 userName= users[0]['UserName'] #print(userName) #3-1-1給文件助手,發送一條消息 itchat.send(u'你好文件助手,這是一條文本測試消息', 'filehelper') #3-1-2給我的用戶,發送一條消息 #itchat.send('東小東: 這是一個來自樹莓派的測試',toUserName=userName) #3-3給我的用戶, 發送圖片 pic_file_name='./filex/1.txt' #圖片相對路徑地址 #send_pic("F:/dongdong/1.jpg",'filehelper') #圖片絕對路徑地址 #3-4發送文件 #send_file('./filex/1.txt','filehelper') #3-5發送視頻 #send_video('./filex/1.mp4','filehelper') #3-6羣名向羣裏發送內容 #SentChatRoomsMsg('溫縣獨霸', '你好') #程序保持運行 itchat.run() #程序中止 #itchat.logout()