欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Python微信操控(itchat)

系統(tǒng) 1784 0

itchat是一個開源的微信個人號接口,使用python調(diào)用微信從未如此簡單。

開源地址

https://github.com/littlecodersh/ItChat

文檔:

https://itchat.readthedocs.io/zh/latest/

安裝:

            pip3 install itchat
          

登入與登出

登入并向文件助手發(fā)送一句話,登入時會經(jīng)過掃碼操作,類似于電腦微信登入

            
              1
            
            
              import
            
            
               itchat

            
            
              2
            
            
              #
            
            
              登入并保存登入狀態(tài),實現(xiàn)第一次運行時掃碼,一定時間內(nèi)再次運行就不用掃碼了,手機微信上將顯示:網(wǎng)頁微信已登入.....
            
            
              3
            
             itchat.auto_login(hotReload=
            
              True)

            
            
              4
            
            
              #
            
            
              發(fā)送文本數(shù)據(jù)到文件助手
            
            
              5
            
             itchat.send(
            
              "
            
            
              東小東你好123
            
            
              "
            
            ,toUserName=
            
              "
            
            
              filehelper
            
            
              "
            
            )
          

登出:

            itchat.logout() 
          

注冊登入登出的回調(diào)方法

            
              1
            
            
              def
            
            
               ldong():

            
            
              2
            
            
              print
            
            (
            
              '
            
            
              微信登入
            
            
              '
            
            
              )

            
            
              3
            
            
              def
            
            
               edong():

            
            
              4
            
            
              print
            
            (
            
              '
            
            
              微信登出
            
            
              '
            
            
              )

            
            
              5
            
            
              #
            
            
              登入
            
            
              6
            
             itchat.auto_login(hotReload=True,loginCallback=ldong, exitCallback=edong)
          

命令行二維碼

通過以下命令可以在登陸的時候使用命令行顯示二維碼:

            itchat.auto_login(enableCmdQR=True)
          

部分系統(tǒng)可能字幅寬度有出入,可以通過將enableCmdQR賦值為特定的倍數(shù)進行調(diào)整:

            
              #
            
            
              如部分的linux系統(tǒng),塊字符的寬度為一個字符(正常應(yīng)為兩字符),故賦值為2
            
            
itchat.auto_login(enableCmdQR=2)
          

默認控制臺背景色為暗色(黑色),若背景色為淺色(白色),可以將enableCmdQR賦值為負值:

            itchat.auto_login(enableCmdQR=-1)
          

可接受監(jiān)聽的數(shù)據(jù)類型

消息分類:

圖片或表情(PICTURE)、錄制(RECORDING)、附件(ATTACHMENT)、小視頻(VIDEO)、文本(TEXT),地圖(MAP),名片(CARD),通知(NOTE),分享(SHARING),好友邀請(FRIENDS)、語音(RECORDING)、系統(tǒng)消息(SYSTEM)

獲取消息內(nèi)容:

可以通過print(msg)方法查看消息里的所有數(shù)據(jù),然后進行提取

            
              @itchat.msg_register(itchat.content.TEXT)

            
            
              def
            
            
               text_reply(msg):
    
            
            
              print
            
            (msg)
          

消息捕獲

針對朋友的消息捕獲

登入時不適用于hotReload=True,因為多次運行會多次注冊自動回復(fù),比如在沒有登出的情況下運行3次程序,就會出現(xiàn)1次接受3次發(fā)送的效果

監(jiān)聽函數(shù)只有在對方發(fā)送數(shù)據(jù)時進入

文本

            
               1
            
            
              import
            
            
               itchat

            
            
               2
            
            
              #
            
            
              自動回復(fù)
            
            
               3
            
            
              @itchat.msg_register(itchat.content.TEXT)

            
            
               4
            
            
              def
            
            
               text_reply(msg):

            
            
               5
            
            
              return
            
            
              "
            
            
              東小東回復(fù)數(shù)據(jù):
            
            
              "
            
            +msg[
            
              "
            
            
              Text
            
            
              "
            
            
              ]

            
            
               6
            
            
               7
            
            
              #
            
            
              登入
            
            
               8
            
            
              itchat.auto_login()

            
            
               9
            
            
              #
            
            
              保持運行
            
            
              10
            
             itchat.run()
          

文件下載

            
               1
            
            
              import
            
            
               itchat

            
            
               2
            
            
              #
            
            
              PICTURE, RECORDING, ATTACHMENT, VIDEO,TEXT
            
            
               3
            
            
              #
            
            
               圖片、錄制、附件、視頻、文本
            
            
               4
            
            
              from
            
             itchat.content 
            
              import
            
            
               PICTURE, RECORDING, ATTACHMENT, VIDEO,TEXT

            
            
               5
            
            
               6
            
            
              @itchat.msg_register([PICTURE, RECORDING, ATTACHMENT, VIDEO])

            
            
               7
            
            
              def
            
            
               download_files(msg):

            
            
               8
            
                 filedpx=
            
              "
            
            
              ./filex/
            
            
              "
            
            +msg[
            
              "
            
            
              FileName
            
            
              "
            
            ] 
            
              #
            
            
              得到文件路徑,目錄需要手動創(chuàng)建
            
            
               9
            
                 msg.download(filedpx) 
            
              #
            
            
              下載
            
            
              10
            
            
              return
            
            
              "
            
            
              你發(fā)送的文件類型
            
            
              "
            
            +msg[
            
              '
            
            
              Type
            
            
              '
            
            ]+
            
              "
            
            
                保存地址為:filex/
            
            
              "
            
            +msg.fileName
          

針對群聊的自動監(jiān)測

如果想添加針對群聊的監(jiān)測,則在監(jiān)聽函數(shù)加入isGroupChat=True

監(jiān)聽函數(shù)只要有數(shù)據(jù)發(fā)送就會進入,包括自己發(fā)送的數(shù)據(jù)

            
               1
            
            
              import
            
            
               itchat

            
            
               2
            
            
              #
            
            
              只對群消息有效
            
            
               3
            
             @itchat.msg_register(itchat.content.TEXT,isGroupChat=
            
              True)

            
            
               4
            
            
              def
            
            
               text_reply(msg):

            
            
               5
            
            
              if
            
            (msg[
            
              "
            
            
              Text
            
            
              "
            
            ]==
            
              "
            
            
              11
            
            
              "
            
            
              ):

            
            
               6
            
            
              return
            
            
              "
            
            
              東小東回復(fù)數(shù)據(jù)xx:
            
            
              "
            
            +msg[
            
              "
            
            
              Text
            
            
              "
            
            
              ]

            
            
               7
            
            
              #
            
            
              只對個人用戶有效
            
            
               8
            
            
              @itchat.msg_register(itchat.content.TEXT)

            
            
               9
            
            
              def
            
            
               text_reply(msg):

            
            
              10
            
            
              return
            
            
              "
            
            
              東小東回復(fù)數(shù)據(jù):
            
            
              "
            
            +msg[
            
              "
            
            
              Text
            
            
              "
            
            
              ]

            
            
              11
            
            
              #
            
            
              登入
            
            
              12
            
            
              itchat.auto_login()

            
            
              13
            
            
              #
            
            
              保持運行
            
            
              14
            
             itchat.run()
          

@我信息監(jiān)測

            
               1
            
            
              import
            
            
               itchat

            
            
               2
            
            
              #
            
            
              只對群消息有效
            
            
               3
            
             @itchat.msg_register(itchat.content.TEXT,isGroupChat=
            
              True)

            
            
               4
            
            
              def
            
            
               text_reply(msg):

            
            
               5
            
            
              #
            
            
              判斷是否是@本人
            
            
               6
            
            
              if
            
             msg[
            
              "
            
            
              Text
            
            
              "
            
            ].find(
            
              "
            
            
              @
            
            
              "
            
            +usermsgx[
            
              "
            
            
              NickName
            
            
              "
            
            ])==
            
              0:

            
            
               7
            
            
              return
            
            
              "
            
            
              @
            
            
              "
            
            +msg.actualNickName+
            
              "
            
            
               東你發(fā)的信息為:
            
            
              "
            
            +
            
              msg.text

            
            
               8
            
            
               9
            
             itchat.auto_login()
            
              #
            
            
              登入
            
            
              10
            
             usermsgx=itchat.search_friends()
            
              #
            
            
              得到當(dāng)前用戶的信息
            
            
              11
            
             itchat.run()
            
              #
            
            
              保持運行
            
          

針對所有信息來源信息監(jiān)聽

朋友、群聊、公眾號

            @itchat.msg_register(TEXT, isFriendChat=True, isGroupChat=True, isMpChat=
            
              True)

            
            
              def
            
            
               simple_reply(msg):
    
            
            
              return
            
            
              '
            
            
              I received: %s
            
            
              '
            
             % msg.text
          

數(shù)據(jù)發(fā)送

return

在接收數(shù)據(jù)函數(shù)里的return “數(shù)據(jù)” 則是自動確認為回復(fù)當(dāng)前發(fā)送用戶數(shù)據(jù),可以刪除該句,則不進行數(shù)據(jù)回復(fù)

itchat.send,可以一次性發(fā)送多條

參數(shù):(內(nèi)容,用戶)

返回值:發(fā)送結(jié)果,是否發(fā)送成功,json數(shù)據(jù)

注意:文件地址不可為中文

內(nèi)容:可為單獨的字符串內(nèi)容,其他有【@類型@地址】,類型有圖片(img)、文件(fil)、視頻(vid)

用戶:省略則發(fā)個自己,不穩(wěn)定,msg['FromUserName']表示指定用戶為觸發(fā)用戶

            
              1
            
             res=itchat.send(
            
              '
            
            
              文本信息的發(fā)送......!
            
            
              '
            
            , toUserName=msg[
            
              '
            
            
              FromUserName
            
            
              '
            
            
              ])

            
            
              2
            
             res=itchat.send(
            
              '
            
            
              @img@%s
            
            
              '
            
             % 
            
              '
            
            
              ./filex/zcy.gif
            
            
              '
            
            , toUserName=msg[
            
              '
            
            
              FromUserName
            
            
              '
            
            
              ])

            
            
              3
            
             res=itchat.send(
            
              '
            
            
              @fil@%s
            
            
              '
            
             % 
            
              '
            
            
              ./filex/tt.txt
            
            
              '
            
            , toUserName=msg[
            
              '
            
            
              FromUserName
            
            
              '
            
            
              ])

            
            
              4
            
             res=itchat.send(
            
              '
            
            
              @vid@%s
            
            
              '
            
             % 
            
              '
            
            
              ./filex/videox.mp4
            
            
              '
            
            , toUserName=msg[
            
              '
            
            
              FromUserName
            
            
              '
            
            ])
          

指定類型發(fā)送2

參數(shù):(地址,用戶)

返回值:發(fā)送結(jié)果,是否發(fā)送成功,json數(shù)據(jù)

注意:文件地址不可為中文

            
              1
            
             bb = itchat.send_msg(
            
              '
            
            
              文字信息2
            
            
              '
            
            , toUserName=msg[
            
              '
            
            
              FromUserName
            
            
              '
            
            
              ])

            
            
              2
            
             bb = itchat.send_image(
            
              '
            
            
              ./filex/zcy.gif
            
            
              '
            
            , toUserName=msg[
            
              '
            
            
              FromUserName
            
            
              '
            
            
              ])

            
            
              3
            
             bb = itchat.send_file(
            
              '
            
            
              ./filex/tt.txt
            
            
              '
            
            , toUserName=msg[
            
              '
            
            
              FromUserName
            
            
              '
            
            
              ])

            
            
              4
            
             bb = itchat.send_video(
            
              '
            
            
              ./filex/videox.mp4
            
            
              '
            
            , toUserName=msg[
            
              '
            
            
              FromUserName
            
            
              '
            
            
              ])

            
            
              5
            
            
              print
            
            (
            
              "
            
            
              返回值:
            
            
              "
            
            ,bb)
          

msg.user.send()

使用與itchat.send()相同,但是可以已經(jīng)確定toUserName=msg['FromUserName'],不可更換

指定用戶(toUserName):

文件助手(發(fā)送給自己,必備):toUserName="filehelper"

發(fā)送者:toUserName=msg['FromUserName']

例子:

通過群名向群里發(fā)送內(nèi)容,該微信群需要在運行代碼前進行手動添加到通訊錄

            
               1
            
            
              import
            
            
               itchat

            
            
               2
            
            
               3
            
            
              #
            
            
              登入
            
            
               4
            
            
              itchat.auto_login()

            
            
               5
            
             chatroomName=
            
              '
            
            
              傻逼群
            
            
              '
            
            
              #
            
            
              群名
            
            
               6
            
             itchat.get_chatrooms(update=
            
              True)

            
            
               7
            
             chatrooms = itchat.search_chatrooms(name=
            
              chatroomName)

            
            
               8
            
            
              if
            
             len(chatrooms)==
            
              0 :

            
            
               9
            
            
              print
            
            (
            
              '
            
            
              沒有找到群聊:
            
            
              '
            
             +
            
               chatroomName)

            
            
              10
            
            
                  exit(0)

            
            
              11
            
            
              else
            
            
              :

            
            
              12
            
            
              print
            
            (chatrooms[0][
            
              '
            
            
              UserName
            
            
              '
            
            ])
            
              #
            
            
              輸出群聊標(biāo)識符
            
            
              13
            
                 itchat.send_msg(
            
              '
            
            
              大家好,這是發(fā)送的內(nèi)容
            
            
              '
            
            , toUserName=chatrooms[0][
            
              '
            
            
              UserName
            
            
              '
            
            ])
            
              #
            
            
              發(fā)送消息
            
            
              14
            
            
              15
            
            
              #
            
            
              保持運行
            
            
              16
            
             itchat.run()
          

個人的基本信息

獲取本人信息

            usermsgx=
            
              itchat.search_friends()

            
            
              print
            
            
              (usermsgx)

            
            
              print
            
            (usermsgx[
            
              "
            
            
              NickName
            
            
              "
            
            ]) 
            
              #
            
            
              得到昵稱
            
          

獲取所有朋友信息

            friendx=
            
              itchat.get_friends()

            
            
              print
            
            (friendx)
          

條件獲取朋友或者自己信息

            
              1
            
            
              #
            
            
               獲取特定UserName的用戶信息
            
            
              2
            
             itchat.search_friends(userName=
            
              '
            
            
              @abcdefg1234567
            
            
              '
            
            
              )

            
            
              3
            
            
              #
            
            
               獲取任何一項等于name鍵值的用戶
            
            
              4
            
             itchat.search_friends(name=
            
              '
            
            
              littlecodersh
            
            
              '
            
            
              )

            
            
              5
            
            
              #
            
            
               獲取分別對應(yīng)相應(yīng)鍵值的用戶
            
            
              6
            
             itchat.search_friends(wechatAccount=
            
              '
            
            
              littlecodersh
            
            
              '
            
            
              )

            
            
              7
            
            
              #
            
            
               三、四項功能可以一同使用
            
            
              8
            
             itchat.search_friends(name=
            
              '
            
            
              LittleCoder機器人
            
            
              '
            
            , wechatAccount=
            
              '
            
            
              littlecodersh
            
            
              '
            
            )
          

得到用戶序號

            
              @itchat.msg_register([TEXT,MAP])

            
            
              def
            
            
               text_reply(msg):
    
            
            
              print
            
            
              (msg)
    
            
            
              print
            
            (msg[
            
              "
            
            
              User
            
            
              "
            
            ][
            
              "
            
            
              Uin
            
            
              "
            
            ])
          

更新用戶數(shù)據(jù),通過 UserName ,或者 UserName 列表

            memberList = itchat.update_friend(
            
              '
            
            
              @abcdefg1234567
            
            
              '
            
            )
          

注意:

中文文件名文件上傳

Q: 為什么中文的文件沒有辦法上傳??

A: 這是因為使用requests包會自動將中文文件名編碼為服務(wù)器端無法識別的格式,所以需要修改requests包或者使用別的方法上傳文件。

最簡單的方法即將requests包的packages/urlib3中的fields.py中的format_header_param方法改為如下內(nèi)容:

            
               1
            
            
              def
            
            
               format_header_param(name, value):

            
            
               2
            
            
              if
            
            
              not
            
             any(ch 
            
              in
            
             value 
            
              for
            
             ch 
            
              in
            
            
              '
            
            
              "\\\r\n
            
            
              '
            
            
              ):

            
            
               3
            
                     result = 
            
              '
            
            
              %s="%s"
            
            
              '
            
             %
            
               (name, value)

            
            
               4
            
            
              try
            
            
              :

            
            
               5
            
                         result.encode(
            
              '
            
            
              ascii
            
            
              '
            
            
              )

            
            
               6
            
            
              except
            
            
               UnicodeEncodeError:

            
            
               7
            
            
              pass
            
            
               8
            
            
              else
            
            
              :

            
            
               9
            
            
              return
            
            
               result

            
            
              10
            
            
              if
            
            
              not
            
             six.PY3:  
            
              #
            
            
               Python 2:
            
            
              11
            
                     value = value.encode(
            
              '
            
            
              utf-8
            
            
              '
            
            
              )

            
            
              12
            
                 value = email.utils.encode_rfc2231(value, 
            
              '
            
            
              utf-8
            
            
              '
            
            
              )

            
            
              13
            
                 value = 
            
              '
            
            
              %s="%s"
            
            
              '
            
             % (name, value.decode(
            
              '
            
            
              utf8
            
            
              '
            
            
              ))

            
            
              14
            
            
              return
            
             value
          

命令行顯示二維碼

Q: 為什么我在設(shè)定了itchat.auto_login()的enableCmdQR為True后還是沒有辦法在命令行顯示二維碼?

A: 這是由于沒有安裝可選的包pillow,可以使用右邊的命令安裝:pip install pillow

綜合:

實現(xiàn)文本信息的關(guān)聯(lián),及可以實時看到所關(guān)聯(lián)的賬號的聊天信息,當(dāng)發(fā)生聊天數(shù)據(jù)時會主動將聊天數(shù)據(jù)發(fā)送到主賬號上

Python微信操控(itchat)_第1張圖片

            
               1
            
            
              import
            
            
               itchat

            
            
               2
            
            
              from
            
             itchat.content 
            
              import
            
            
               PICTURE, RECORDING, ATTACHMENT, VIDEO,TEXT,MAP

            
            
               3
            
            
              #
            
            
              只對個人用戶有效
            
            
               4
            
            
              @itchat.msg_register([TEXT])

            
            
               5
            
            
              def
            
            
               text_reply(msg):

            
            
               6
            
            
              #
            
            
               查詢數(shù)據(jù)的接收者
            
            
               7
            
                touserx=
            
              "
            
            
              filehelper
            
            
              "
            
            
              #
            
            
              默認為文件助手發(fā)送信息
            
            
               8
            
            
              if
            
             msg[
            
              "
            
            
              ToUserName
            
            
              "
            
            ]!=
            
              "
            
            
              filehelper
            
            
              "
            
            :
            
              #
            
            
              如果非文件助手信息
            
            
               9
            
                     touserx=itchat.search_friends(userName=msg[
            
              "
            
            
              ToUserName
            
            
              "
            
            ])[
            
              "
            
            
              NickName
            
            
              "
            
            
              ]

            
            
              10
            
                inuserx = itchat.search_friends(userName=msg[
            
              "
            
            
              FromUserName
            
            
              "
            
            ])[
            
              "
            
            
              NickName
            
            
              "
            
            ]
            
              #
            
            
              查詢數(shù)據(jù)的發(fā)送者
            
            
              11
            
                totouserx=itchat.search_friends(name=
            
              '
            
            
              東里個咚
            
            
              '
            
            )[0][
            
              "
            
            
              UserName
            
            
              "
            
            ] 
            
              #
            
            
              通過昵稱查詢到username
            
            
              12
            
                texts=msg.text 
            
              #
            
            
              得到接收的數(shù)據(jù)
            
            
              13
            
                itchat.send_msg(
            
              "
            
            
            
              "
            
            +thisuserx+
            
              "
            
            
              】\n
            
            
              "
            
            +inuserx+
            
              "
            
            
              -->
            
            
              "
            
            +touserx+
            
              "
            
            
               :\n
            
            
              "
            
            +texts,toUserName=totouserx) 
            
              #
            
            
              發(fā)送給目標(biāo)
            
            
              14
            
            
              15
            
            
              #
            
            
              登入
            
            
              16
            
            
              itchat.auto_login()

            
            
              17
            
             thisuserx=itchat.search_friends()[
            
              "
            
            
              NickName
            
            
              "
            
            ] 
            
              #
            
            
              得到當(dāng)前用戶昵稱
            
            
              18
            
            
              #
            
            
              保持運行
            
            
              19
            
             itchat.run()
          

?


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 日本高清天码一区在线播放 | 精品国产精品久久 | 99久久精品免费看国产一区二区 | 日韩欧美综合在线二区三区 | 高清人人天天夜夜曰狠狠狠狠 | 国产激情久久久久久熟女老人AV | 99在线精品视频免费观里 | 国产成年人网站 | 欧美日韩视频在线第一区二区三区 | 6080yy免费毛片一级新视觉 | 日韩综合在线视频 | 国产成人精品日本亚洲麻豆 | 精品卡1卡二卡3卡 | 欧洲午夜视频 | 一区二区中文 | 天天艹日日干 | 久草久草久草久草 | 国产99精品在线观看 | 国产成年人在线观看 | 欧美乱妇在线观看 | 欧美日韩久久久 | 成人人观看的免费毛片 | 成人欧美一区二区三区在线观看 | 久久精品国产一区二区 | 欧洲免费无线码二区5 | 国产精品五区 | av免费在线观看av | 久久91综合国产91久久精品 | 深夜福利软件 | 边摸边吃奶边做激情叫床文章 | 中国一级黄色片 | 天天碰天天干 | 日本一区二区不卡 | 亚洲一区二区三区欧美 | 欧美综合一区二区三区 | 性色av免费在线观看 | 国产日本三级欧美三级妇三级四 | 国产91久久最新观看地址 | 色综合久久天天综合观看 | 91久久国产露脸精品免费 | 日日碰狠狠添天天爽五月婷 |