(19) 樹莓派發送微信消息

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

 

 

說明:  這玩意至關於網頁版微信,因此登錄了會擠掉電腦端。手機也會提示網頁微信已經登錄,手機通知關閉,可是手機仍然能夠接收消息(因此和手機不衝突嘍??)。微信

 

1安裝

首先使用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

 

  

 

2使用基本例程

首先解決問題,報錯找不到 itchart

https://blog.csdn.net/lockelk/article/details/85296818

能夠先查看是否已安裝及安裝的版本

2-1shell下:

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()


  

 

  

 2-2 win10下修正錯誤

 

#!/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)

  

 

3 基本使用

3-1 itchat給指定聯繫人發消息

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對攝像頭實時視頻監控,當檢測到人臉後後拍照,將拍攝到的照片經過微信發送給用戶的我的好友。

 

Python3 itchat實現微信定時發送羣消息

 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/

經過微信獲取城市PM2.5的狀態

https://blog.csdn.net/weixin_33998125/article/details/85077561

自動回覆(從Excel讀取配置)

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

 

2、py庫

1,itchat:這個是主要的工具,用於鏈接微信我的帳號接口。如下是一些相關的知識點網站。

2,xlrd:這個是用來讀Excel文件的工具。

3,apscheduler:這個是用來定時調度時間的工具。

 

 

 

本項目中,對於微信的操做,咱們須要用到的API是itchat。 itchat是一個微信對於python封裝的api,它的功能很是強大,咱們可使用它和python對本身微信的不少信息進行爬取。

 

 image.png

 

 

  

綜合示例

######################################### 程序說明 ########################################
# 功能:
#       集合了接收消息處理,主動發送消息處理
# 使用:
#       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()
相關文章
相關標籤/搜索