python-itchat 統計微信羣、好友數量,及原始消息數據

參考來自:https://itchat.readthedocs.io/zh/latest/api/

#coding=utf-8
import itchat
from itchat.content import TEXT
from itchat.content import *
import sys
import time
import re
reload(sys)
sys.setdefaultencoding('utf8')
import os

@itchat.msg_register([TEXT,PICTURE,FRIENDS,CARD,MAP,SHARING,RECORDING,ATTACHMENT,VIDEO],isGroupChat=True)
def receive_msg(msg):
    groups  = itchat.get_chatrooms(update=True)
    friends = itchat.get_friends(update=True)
    print "羣數量:",len(groups)
    for i in range(0,len(groups)):
        print i+1,"--",groups[i]['NickName'],groups[i]['MemberCount'],"人"
    print "好友數量",len(friends)-1
    for f in range(1,len(friends)):#第0個好友是自己,不統計
        if friends[f]['RemarkName']: # 優先使用好友的備註名稱,沒有則使用暱稱
            user_name = friends[f]['RemarkName']
        else:
            user_name = friends[f]['NickName']
        sex = friends[f]['Sex']
        print f,"--",user_name,sex
itchat.auto_login(hotReload=True)
itchat.run()

效果:
這裏寫圖片描述

好友:

# 獲取自己的用戶信息,返回自己的屬性字典
itchat.search_friends()
# 獲取特定UserName的用戶信息
itchat.search_friends(userName='@abcdefg1234567')
# 獲取任何一項等於name鍵值的用戶
itchat.search_friends(name='wxceshi')
# 獲取分別對應相應鍵值的用戶
itchat.search_friends(wechatAccount='wceshi')
# 三、四項功能可以一同使用
itchat.search_friends(name='wxceshi', wechatAccount='wcceshi')

公衆號:

公衆號的獲取方法爲get_mps,將會返回完整的公衆號列表。
其中每個公衆號爲一個字典
傳入update鍵爲True將可以更新公衆號列表並返回
import  itchat
itchat.auto_login(hotReload=True)

mpsList=itchat.get_mps(update=True)[1:]

total=0
for it in mpsList:
    print(it['NickName']+':'+it['Signature'])
    total=total+1

print('公衆號的數目是%d'%total)

公衆號的搜索方法爲search_mps,有兩種搜索方法: 
1. 獲取特定UserName的公衆號 
2. 獲取名字中含有特定字符的公衆號
如果兩項都做了特定,將會僅返回特定UserName的公衆號,下面是示例程序:
# 獲取特定UserName的公衆號,返回值爲一個字典
itchat.search_mps(userName='@abcdefg1234567')
# 獲取名字中含有特定字符的公衆號,返回值爲一個字典的列表
itchat.search_mps(name='gzh')
# 以下方法相當於僅特定了UserName
itchat.search_mps(userName='@abcdefg1234567', name='gzh')

羣聊:

羣聊的獲取方法爲get_chatrooms,將會返回完整的羣聊列表。
其中每個羣聊爲一個字典
傳入update鍵爲True將可以更新羣聊列表並返回通訊錄中保存的羣聊列表
    羣聊列表爲後臺自動更新,如果中途意外退出存在極小的概率產生本地羣聊消息與後臺不同步
    爲了保證羣聊信息在熱啓動中可以被正確的加載,即使不需要持續在線的程序也需要運行itchat.run()
    如果不想要運行上述命令,請在退出程序前調用-itchat.dump_login_status(),更新熱拔插需要的信息

import  itchat
itchat.auto_login(hotReload=True)

#itchat.run()

mpsList=itchat.get_chatrooms(update=True)[1:]

total=0
for it in mpsList:
    print(it['NickName'])
    total=total+1

print('羣聊的數目是%d'%total)

#顯示所有的羣聊,包括未保存在通訊錄中的,如果去掉則只是顯示在通訊錄中保存的
itchat.dump_login_status()
羣聊的搜索方法爲search_chatrooms,有兩種搜索方法: 1. 獲取特定UserName的羣聊 2. 獲取名字中含有特定字符的羣聊
如果兩項都做了特定,將會僅返回特定UserName的羣聊,下面是示例程序:
# 獲取特定UserName的羣聊,返回值爲一個字典
itchat.search_chatrooms(userName='@abcdefg1234567')
# 獲取名字中含有特定字符的羣聊,返回值爲一個字典的列表
itchat.search_chatrooms(name='LittleCoder')
# 以下方法相當於僅特定了UserName
itchat.search_chatrooms(userName='@abcdefg1234567', name='LittleCoder')
羣聊用戶列表的獲取方法爲update_chatroom。

    羣聊在首次獲取中不會獲取羣聊的用戶列表,所以需要調用該命令才能獲取羣聊的成員
    該方法需要傳入羣聊的UserName,返回特定羣聊的用戶列表
memberList = itchat.update_chatroom('bcdefg67')
創建羣聊、增加、刪除羣聊用戶的方法如下所示:

    由於之前通過羣聊檢測是否被好友拉黑的程序,目前這三個方法都被嚴格限制了使用頻率
    刪除羣聊需要本賬號爲羣管理員,否則會失敗
    將用戶加入羣聊有直接加入與發送邀請,通過useInvitation設置
    超過40人的羣聊無法使用直接加入的加入方式,特別注意
memberList = itchat.get_friends()[1:]
# 創建羣聊,topic鍵值爲羣聊名
chatroomUserName = itchat.create_chatroom(memberList, 'test chatroom')
# 刪除羣聊內的用戶
itchat.delete_member_from_chatroom(chatroomUserName, memberList[0])
# 增加用戶進入羣聊
itchat.add_member_into_chatroom(chatroomUserName, memberList[0], useInvitation=False)

消息的基礎數據:

羣基礎信息:列表,每個元素是一個羣,字典,列表長度就是羣的數量.

UserName -- @@410e35039bc309eaa37e444fc932cf1f0d11b6e79d9eff610fc971701940778b
City -- 
MemberList -- [{u'UserName': u'@2a1f4757bbedbbc1c58be274655e7e69823fcf8288bb50aa0ec9769698b883f5', u'RemarkPYQuanPin': u'', u'DisplayName': u'', u'KeyWord': u'', u'PYInitial': u'', u'Uin': 0, u'RemarkPYInitial': u'', u'PYQuanPin': u'', u'MemberStatus': 0, u'NickName': u'\u82b1\u82e5\u96e8', u'AttrStatus': 233509}, {u'UserName': u'@91271c0895c75b4290c4d71673040978b50c1d81005b768728497bbcfc9657f3', u'RemarkPYQuanPin': u'', u'DisplayName': u'', u'KeyWord': u'', u'PYInitial': u'', u'Uin': 0, u'RemarkPYInitial': u'', u'PYQuanPin': u'', u'MemberStatus': 0, u'NickName': u'alise', u'AttrStatus': 235617}, {u'UserName': u'@6151801ec2a6333e7fd5530f812c931e14d9220477756796013ae3cbab54b64f', u'RemarkPYQuanPin': u'', u'DisplayName': u'\u81f3\u5c0a\u7389-\u5c0f\u9e1f\u98de', u'KeyWord': u'', u'PYInitial': u'', u'Uin': 0, u'RemarkPYInitial': u'', u'PYQuanPin': u'', u'MemberStatus': 0, u'NickName': u'\u81f3\u5c0a\u7389', u'AttrStatus': 102525}]

VerifyFlag -- 0
Province -- 
KeyWord -- 
RemarkName -- 
self -- {u'UserName': u'@2a1f4757bbedbbc1c58be274655e7e69823fcf8288bb50aa0ec9769698b883f5', u'RemarkPYQuanPin': u'', u'DisplayName': u'', u'KeyWord': u'', u'PYInitial': u'', u'Uin': 0, u'RemarkPYInitial': u'', u'PYQuanPin': u'', u'MemberStatus': 0, u'NickName': u'\u82b1\u82e5\u96e8', u'AttrStatus': 233509}
isAdmin -- None
ContactType -- 0
HideInputBarFlag -- 0
AttrStatus -- 0
SnsFlag -- 0
MemberCount -- 3
OwnerUin -- 0
Alias -- 
Signature -- 
ContactFlag -- 2
NickName -- 一隻小鳥飛
ChatRoomOwner -- @2a1f4757bbedbbc1c58be274655e7e69823fcf8288bb50aa0ec9769698b883f5
HeadImgUrl -- /cgi-bin/mmwebwx-bin/webwxgetheadimg?seq=0&username=@@410e35039bc309eaa37e444fc932cf1f0d11b6e79d9eff610fc971701940778b&skey=@crypt_f707bac_06ef94d1305fd1ebf9192f58bdee290c
Sex -- 0
Statues -- 1
HeadImgUpdateFlag -- 1

好友基礎信息:列表,每個元素是一個好友字典,列表長度即好友數量。(自己是第0個好友)

UserName -- @6151801ec2a6333e7fd5530f812c931e14d9220477756796013ae3cbab54b64f
City -- 朝陽
DisplayName -- 
UniFriend -- 0
MemberList -- []
PYQuanPin -- zhizunyu
RemarkPYInitial -- ZZYBZ
Sex -- 1
AppAccountFlag -- 0
VerifyFlag -- 0
Province -- 北京
KeyWord -- 
RemarkName -- 至尊玉備註
PYInitial -- ZZY
IsOwner -- 0
ChatRoomId -- 0
ContactType -- 0
HideInputBarFlag -- 0
EncryChatRoomId -- 
AttrStatus -- 102525
SnsFlag -- 17
MemberCount -- 0
OwnerUin -- 0
Alias -- 
Signature -- 本來無一物,何處惹塵埃。
ContactFlag -- 3
NickName -- 至尊玉
ChatRoomOwner -- 
RemarkPYQuanPin -- zhizunyubeizhu
HeadImgUrl -- /cgi-bin/mmwebwx-bin/webwxgeticon?seq=656993295&username=@6151801ec2a6333e7fd5530f812c931e14d9220477756796013ae3cbab54b64f&skey=@crypt_f707bac_06ef94d1305fd1ebf9192f58bdee290c
Uin -- 0
StarFriend -- 0
Statues -- 0
HeadImgUpdateFlag -- 1

好友消息:每條消息是一個字典。消息內容:msg['Content']

AppInfo -- {u'Type': 0, u'AppID': u''}
ImgWidth -- 0
FromUserName -- @6151801ec2a6333e7fd5530f812c931e14d9220477756796013ae3cbab54b64f
PlayLength -- 0
OriContent -- 
ImgStatus -- 1
RecommendInfo -- {u'UserName': u'', u'Province': u'', u'City': u'', u'Scene': 0, u'QQNum': 0, u'Content': u'', u'Alias': u'', u'OpCode': 0, u'Signature': u'', u'Ticket': u'', u'Sex': 0, u'NickName': u'', u'AttrStatus': 0, u'VerifyFlag': 0}
Content -- This is friend msg
MsgType -- 1
ImgHeight -- 0
StatusNotifyUserName -- 
StatusNotifyCode -- 0
Type -- Text
NewMsgId -- 4967860504982482776
Status -- 3
VoiceLength -- 0
MediaId -- 
MsgId -- 4967860504982482776
ToUserName -- @2a1f4757bbedbbc1c58be274655e7e69823fcf8288bb50aa0ec9769698b883f5
ForwardFlag -- 0
FileName -- 
Url -- 
HasProductId -- 0
FileSize -- 
AppMsgType -- 0
Text -- This is friend msg
Ticket -- 
CreateTime -- 1515398261
EncryFileName -- 
SubMsgType -- 0

羣聊消息:
ActualNickName -- 至尊玉-小鳥飛  #用戶在羣內的暱稱
AppInfo -- {u'Type': 0, u'AppID': u''}
ImgWidth -- 0
FromUserName -- @@410e35039bc309eaa37e444fc932cf1f0d11b6e79d9eff610fc971701940778b #來個哪個羣聊
PlayLength -- 0
OriContent -- 
ImgStatus -- 1
RecommendInfo -- {u'UserName': u'', u'Province': u'', u'City': u'', u'Scene': 0, u'QQNum': 0, u'Content': u'', u'Alias': u'', u'OpCode': 0, u'Signature': u'', u'Ticket': u'', u'Sex': 0, u'NickName': u'', u'AttrStatus': 0, u'VerifyFlag': 0}
Content -- This is a group msg
MsgType -- 1
CreateTime -- 1515398528
ImgHeight -- 0
StatusNotifyUserName -- 
StatusNotifyCode -- 0
Type -- Text
NewMsgId -- 4737322597592466590
Status -- 3
VoiceLength -- 0
MediaId -- 
MsgId -- 4737322597592466590
ToUserName -- @2a1f4757bbedbbc1c58be274655e7e69823fcf8288bb50aa0ec9769698b883f5 #發給自己的
ForwardFlag -- 0
FileName -- 
Url -- 
HasProductId -- 0
FileSize -- 
AppMsgType -- 0
Text -- This is a group msg
ActualUserName -- @6151801ec2a6333e7fd5530f812c931e14d9220477756796013ae3cbab54b64f #誰發的消息
Ticket -- 
isAt -- False
EncryFileName -- 
SubMsgType -- 0
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章