亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python微信操控itchat的方法

 更新時(shí)間:2019年05月31日 08:43:15   作者:東小東  
itchat是一個(gè)開源的微信個(gè)人號接口,使用python調(diào)用微信從未如此簡單。這篇文章主要介紹了Python微信操控itchat的方法,需要的朋友可以參考下

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

開源地址

https://github.com/littlecodersh/ItChat

文檔:

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

安裝:

pip3 install itchat

登入與登出

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

 import itchat
 #登入并保存登入狀態(tài),實(shí)現(xiàn)第一次運(yùn)行時(shí)掃碼,一定時(shí)間內(nèi)再次運(yùn)行就不用掃碼了,手機(jī)微信上將顯示:網(wǎng)頁微信已登入.....
 itchat.auto_login(hotReload=True)
 #發(fā)送文本數(shù)據(jù)到文件助手
 itchat.send("東小東你好123",toUserName="filehelper")

登出:

itchat.logout()

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

 def ldong():
  print('微信登入')
 def edong():
  print('微信登出')
 #登入
 itchat.auto_login(hotReload=True,loginCallback=ldong, exitCallback=edong)

命令行二維碼

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

itchat.auto_login(enableCmdQR=True)

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

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

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

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ù),然后進(jìn)行提取

@itchat.msg_register(itchat.content.TEXT)
def text_reply(msg):
 print(msg)

息捕獲

針對朋友的消息捕獲

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

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

文本

 import itchat
 #自動回復(fù)
 @itchat.msg_register(itchat.content.TEXT)
 def text_reply(msg):
  return "東小東回復(fù)數(shù)據(jù):"+msg["Text"]
 #登入
 itchat.auto_login()
 #保持運(yùn)行
 itchat.run()

文件下載

 import itchat
 #PICTURE, RECORDING, ATTACHMENT, VIDEO,TEXT
 # 圖片、錄制、附件、視頻、文本
 from itchat.content import PICTURE, RECORDING, ATTACHMENT, VIDEO,TEXT
 @itchat.msg_register([PICTURE, RECORDING, ATTACHMENT, VIDEO])
 def download_files(msg):
  filedpx="./filex/"+msg["FileName"] #得到文件路徑,目錄需要手動創(chuàng)建
 msg.download(filedpx) #下載
  return "你發(fā)送的文件類型"+msg['Type']+" 保存地址為:filex/"+msg.fileName

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

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

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

 import itchat
 #只對群消息有效
 @itchat.msg_register(itchat.content.TEXT,isGroupChat=True)
 def text_reply(msg):
  if(msg["Text"]=="11"):
   return "東小東回復(fù)數(shù)據(jù)xx:"+msg["Text"]
 #只對個(gè)人用戶有效
 @itchat.msg_register(itchat.content.TEXT)
 def text_reply(msg):
 return "東小東回復(fù)數(shù)據(jù):"+msg["Text"]
 #登入
 itchat.auto_login()
#保持運(yùn)行
 itchat.run()

@我信息監(jiān)測

 import itchat
 #只對群消息有效
 @itchat.msg_register(itchat.content.TEXT,isGroupChat=True)
 def text_reply(msg):
   #判斷是否是@本人
   if msg["Text"].find("@"+usermsgx["NickName"])==0:
    return "@"+msg.actualNickName+" 東你發(fā)的信息為:"+msg.text
 itchat.auto_login()#登入
 usermsgx=itchat.search_friends()#得到當(dāng)前用戶的信息
 itchat.run()#保持運(yùn)行

針對所有信息來源信息監(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ù)” 則是自動確認(rèn)為回復(fù)當(dāng)前發(fā)送用戶數(shù)據(jù),可以刪除該句,則不進(jìn)行數(shù)據(jù)回復(fù)

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

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

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

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

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

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

 res=itchat.send('文本信息的發(fā)送......!', toUserName=msg['FromUserName'])
 res=itchat.send('@img@%s' % './filex/zcy.gif', toUserName=msg['FromUserName'])
 res=itchat.send('@fil@%s' % './filex/tt.txt', toUserName=msg['FromUserName'])
 res=itchat.send('@vid@%s' % './filex/videox.mp4', toUserName=msg['FromUserName'])

指定類型發(fā)送2

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

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

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

 bb = itchat.send_msg('文字信息2', toUserName=msg['FromUserName'])
 bb = itchat.send_image('./filex/zcy.gif', toUserName=msg['FromUserName'])
 bb = itchat.send_file('./filex/tt.txt', toUserName=msg['FromUserName'])
 bb = itchat.send_video('./filex/videox.mp4', toUserName=msg['FromUserName'])
 print("返回值:",bb)
msg.user.send()

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

指定用戶(toUserName):

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

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

例子:

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

import itchat   
 #登入
 itchat.auto_login()
 chatroomName='傻逼群'#群名
 itchat.get_chatrooms(update=True)
 chatrooms = itchat.search_chatrooms(name=chatroomName)
 if len(chatrooms)==0 :
  print('沒有找到群聊:' + chatroomName)
  exit(0)
 else:
  print(chatrooms[0]['UserName'])#輸出群聊標(biāo)識符
  itchat.send_msg('大家好,這是發(fā)送的內(nèi)容', toUserName=chatrooms[0]['UserName'])#發(fā)送消息
 
 #保持運(yùn)行
 itchat.run()

個(gè)人的基本信息

獲取本人信息

usermsgx=itchat.search_friends()
print(usermsgx)
print(usermsgx["NickName"]) #得到昵稱

獲取所有朋友信息

friendx=itchat.get_friends()
print(friendx)

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

# 獲取特定UserName的用戶信息
 itchat.search_friends(userName='@abcdefg1234567')
 # 獲取任何一項(xiàng)等于name鍵值的用戶
 itchat.search_friends(name='littlecodersh')
 # 獲取分別對應(yīng)相應(yīng)鍵值的用戶
 itchat.search_friends(wechatAccount='littlecodersh')
 # 三、四項(xiàng)功能可以一同使用
 itchat.search_friends(name='LittleCoder機(jī)器人', 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: 這是因?yàn)槭褂胷equests包會自動將中文文件名編碼為服務(wù)器端無法識別的格式,所以需要修改requests包或者使用別的方法上傳文件。

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

def format_header_param(name, value):
  if not any(ch in value for ch in '"\\\r\n'):
   result = '%s="%s"' % (name, value)
   try:
    result.encode('ascii')
   except UnicodeEncodeError:
    pass
   else:
    return result
  if not six.PY3: # Python 2:
   value = value.encode('utf-8')
  value = email.utils.encode_rfc2231(value, 'utf-8')
  value = '%s="%s"' % (name, value.decode('utf8'))
  return value

命令行顯示二維碼

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

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

綜合:

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

import itchat
 from itchat.content import PICTURE, RECORDING, ATTACHMENT, VIDEO,TEXT,MAP
 #只對個(gè)人用戶有效
 @itchat.msg_register([TEXT])
 def text_reply(msg):
  # 查詢數(shù)據(jù)的接收者
  touserx="filehelper"#默認(rèn)為文件助手發(fā)送信息
  if msg["ToUserName"]!="filehelper":#如果非文件助手信息
   touserx=itchat.search_friends(userName=msg["ToUserName"])["NickName"]
 inuserx = itchat.search_friends(userName=msg["FromUserName"])["NickName"]#查詢數(shù)據(jù)的發(fā)送者
 totouserx=itchat.search_friends(name='東里個(gè)咚')[0]["UserName"] #通過昵稱查詢到username
 texts=msg.text #得到接收的數(shù)據(jù)
 itchat.send_msg("【"+thisuserx+"】\n"+inuserx+"-->"+touserx+" :\n"+texts,toUserName=totouserx) #發(fā)送給目標(biāo)
 #登入
 itchat.auto_login()
 thisuserx=itchat.search_friends()["NickName"] #得到當(dāng)前用戶昵稱
 #保持運(yùn)行
 itchat.run()

總結(jié)

以上所述是小編給大家介紹的Python微信操控itchat的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!

相關(guān)文章

  • Python Django框架url反向解析實(shí)現(xiàn)動態(tài)生成對應(yīng)的url鏈接示例

    Python Django框架url反向解析實(shí)現(xiàn)動態(tài)生成對應(yīng)的url鏈接示例

    這篇文章主要介紹了Python Django框架url反向解析實(shí)現(xiàn)動態(tài)生成對應(yīng)的url鏈接,結(jié)合實(shí)例形式分析了Django框架URL反向解析具體原理與應(yīng)用操作技巧,需要的朋友可以參考下
    2019-10-10
  • Python包管理工具pip用法詳解

    Python包管理工具pip用法詳解

    本文詳細(xì)講解了Python包管理工具pip的用法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • Python開發(fā)企業(yè)微信機(jī)器人每天定時(shí)發(fā)消息實(shí)例

    Python開發(fā)企業(yè)微信機(jī)器人每天定時(shí)發(fā)消息實(shí)例

    這篇文章主要介紹了Python開發(fā)企業(yè)微信機(jī)器人每天定時(shí)發(fā)消息實(shí)例,需要的朋友可以參考下
    2020-03-03
  • 詳解Flask框架中Flask-Login模塊的使用

    詳解Flask框架中Flask-Login模塊的使用

    Flask-Login 是一個(gè) Flask 模塊,可以為 Flask 應(yīng)用程序提供用戶登錄功能。這篇文章將通過一些示例為大家介紹一下Flask-Login模塊的使用,需要的可以參考一下
    2023-01-01
  • python的faker庫用法

    python的faker庫用法

    今天小編就為大家分享一篇python的faker庫用法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • 在 Python 中進(jìn)行 One-Hot 編碼

    在 Python 中進(jìn)行 One-Hot 編碼

    這篇文章主要介紹了在 Python 中進(jìn)行 One-Hot 編碼,? 在計(jì)算機(jī)科學(xué)的許多分支中,尤其是機(jī)器學(xué)習(xí)和數(shù)字電路設(shè)計(jì)中,One-Hot Encoding 被廣泛使用,下文我們就來實(shí)操在 Python 中進(jìn)行 One-Hot 編碼吧,需要的朋友可以參考一下
    2022-02-02
  • python模擬登錄百度貼吧(百度貼吧登錄)實(shí)例

    python模擬登錄百度貼吧(百度貼吧登錄)實(shí)例

    python模擬登錄百度貼吧實(shí)例分享,大家參考使用吧
    2013-12-12
  • 關(guān)于Python dict存中文字符dumps()的問題

    關(guān)于Python dict存中文字符dumps()的問題

    這篇文章主要介紹了關(guān)于Python dict存中文字符dumps()的問題,本文給大家分享問題及解決方案,給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-10-10
  • Pandas中批量替換字符的六種方法總結(jié)

    Pandas中批量替換字符的六種方法總結(jié)

    這篇文章主要為大家介紹了Pandas中實(shí)現(xiàn)批量替換字符的六種方法,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)或工作有一定幫助,需要的可以參考一下
    2022-03-03
  • Python簡單實(shí)現(xiàn)控制電腦的方法

    Python簡單實(shí)現(xiàn)控制電腦的方法

    這篇文章主要介紹了Python簡單實(shí)現(xiàn)控制電腦的方法,涉及Python基于os及win32api等模塊調(diào)用系統(tǒng)命令操作電腦的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2018-01-01

最新評論