Python: Check whether a friend deletes himself. python: view a friend.
The example in this article shares with you the specific code deleted by a python friend for your reference. The specific content is as follows:
# Weixin. py # coding: UTF-8 #! /Usr/bin/env python # coding = UTF-8 # using this program, you can find the deleted friends import osimport urllib and urllib2import reimport cookielibimport timeimport xml. dom. minidomimport jsonimport sysimport mathDEBUG = FalseMAX_GROUP_NUM = 35 # QRImagePath = OS. getcwd () + '/qrcode.jpg' tip = 0 uuid = ''base _ uri ='' redirect _ uri = ''skey ='' wxsid = ''wxuin ='' pass _ ticket = ''deviceid = 'e00000000000' BaseRequest ={} ContactList = [] My = [] def getUUID (): global uuid url = 'https: // login.weixin.qq.com/jslogin'params = {'appid ': 'wx782c26e4c19acffb', 'fun': 'new ', 'lang ': 'zh _ cn',' _ ': int (time. time (),} request = urllib2.Request (url = url, data = urllib. urlencode (params) response = urllib2.urlopen (request) data = response. read () # print data # window. QRLogin. code = 200; window. QRLogin. uuid = "oZwt_bFfRg ="; regx = r'window. QRL Ogin. code = (\ d +); window. QRLogin. uuid = "(\ S + ?) "'Pm = re. search (regx, data) code = pm. group (1) uuid = pm. group (2) if code = '000000': return True return Falsedef showQRImage (): global tip url = 'https: // login.weixin.qq.com/qrcode/' + uuid params = {'T ': 'webwx ',' _ ': int (time. time (),} request = urllib2.Request (url = url, data = urllib. urlencode (params) response = urllib2.urlopen (request) tip = 1 f = open (QRImagePath, 'wb') f. write (response. read () F. close () if sys. platform. find ('darwin')> = 0: OS. system ('Open % s' % QRImagePath) elif sys. platform. find ('linux ')> = 0: OS. system ('xdg-open % s' % QRImagePath) else: OS. system ('call % s' % QRImagePath) print 'Use the scan QR code to log on to 'def waitForLogin (): global tip, base_uri, redirect_uri url = 'https: // response? Tip = % s & uuid = % s & _ = % s' % (tip, uuid, int (time. time () request = urllib2.Request (url = url) response = urllib2.urlopen (request) data = response. read () # print data # window. code = 500; regx = r'window. code = (\ d +); 'pm = re. search (regx, data) code = pm. group (1) if code = '000000': # print scanned successfully. click confirm on your phone to log on to 'tip = 0 elif code = '000000 ': # logged on print 'logging on... 'regx = R' window. redirect_uri = "(\ S + ?) "; 'Pm = re. search (regx, data) redirect_uri = pm. group (1) + '& fun = new' base_uri = redirect_uri [: redirect_uri.rfind ('/')] elif code = '000000 ': # timeout pass # elif code = '000000' or code = '000000': return codedef login (): global skey, wxsid, wxuin, pass_ticket, baseRequest request = urllib2.Request (url = redirect_uri) response = urllib2.urlopen (request) data = response. read () # print data ''' <error> <ret> 0 </Ret> <message> OK </message> <skey> xxx </skey> <wxsid> xxx </wxsid> <wxuin> xxx </wxuin> <pass_ticket> xxx </pass_ticket> <isgrayscale> 1 </isgrayscale> </error> ''' doc = xml. dom. minidom. parseString (data) root = doc.doc umentElement for node in root. childNodes: if node. nodeName = 'skey': skey = node. childNodes [0]. data elif node. nodeName = 'wxsid ': wxsid = node. childNodes [0]. data elif node. nodeName = 'wxu In': wxuin = node. childNodes [0]. data elif node. nodeName = 'pass _ ticket ': pass_ticket = node. childNodes [0]. data # print 'skey: % s, wxsid: % s, wxuin: % s, pass_ticket: % s' % (skey, wxsid, wxuin, pass_ticket) if skey = ''or wxsid ='' or wxuin = ''or pass_ticket ='': return False BaseRequest = {'uin': int (wxuin ), 'sid': wxsid, 'skey': Skey, 'deviceid': DeviceID,} return Truedef webwxinit (): Url = base_uri + '/webwxinit? Pass_ticket = % s & skey = % s & r = % s' % (pass_ticket, skey, int (time. time () params = {'baserequest ': BaseRequest} request = urllib2.Request (url = url, data = json. dumps (params) request. add_header ('contenttype', 'application/json; charset = UTF-8 ') response = urllib2.urlopen (request) data = response. read () if DEBUG = True: f = open (OS. getcwd () + '/webwxinit. json', 'wb ') f. write (data) f. close () # print data g Lobal ContactList, My dic = json. loads (data) ContactList = dic ['contactlist'] My = dic ['user'] ErrMsg = dic ['baseresponse'] ['errmsg '] if len (ErrMsg)> 0: print ErrMsg Ret = dic ['baseresponse'] ['ret '] if Ret! = 0: return False return Truedef webwxgetcontact (): url = base_uri + '/webwxgetcontact? Pass_ticket = % s & skey = % s & r = % s' % (pass_ticket, skey, int (time. time () request = urllib2.Request (url = url) request. add_header ('contenttype', 'application/json; charset = UTF-8 ') response = urllib2.urlopen (request) data = response. read () if DEBUG = True: f = open (OS. getcwd () + '/webwxgetcontact. json', 'wb ') f. write (data) f. close () # print data dic = json. loads (data) MemberList = dic ['memberlist'] # reverse Traversal Otherwise, a problem occurs during deletion .. specialUsers = ['newsapp', 'fmessage', 'filehelper ', 'weibo', 'qqmail ', 'fmessage', 'tmessage', 'qmessage', 'qqsync ', 'floatbottle', 'lbsapp', 'shakeapp', 'medianote', 'qqfriend', 'readerapp', 'blogapp', 'facebookapp', 'masssendapp', 'meishiapp ', 'feedsapp', 'voip ', 'blogappweixin', 'weixin', 'brandsessionholder', 'weixinreminder', 'wxid _ upload', 'gh _ 22b87fa7cb3c', 'officiala Ccounts ', 'notification _ messages', 'wxid _ novlwrv3lqwv11', 'gh _ 22b87fa7cb3c ', 'wxitil', 'userexperience _ alarm ', 'notification _ messages '] for I in xrange (len (MemberList)-1,-1,-1 ): member = MemberList [I] if Member ['verifyflag'] & 8! = 0: # public account/service number MemberList. remove (Member) elif Member ['username'] in SpecialUsers: # Special Account MemberList. remove (Member) elif Member ['username']. find ('@@')! =-1: # group chat MemberList. remove (Member) elif Member ['username'] = My ['username']: # Your Own MemberList. remove (Member) return MemberListdef createChatroom (UserNames): MemberList = [] for UserName in UserNames: MemberList. append ({'username': UserName}) url = base_uri + '/webwxcreatechatroom? Pass_ticket = % s & r = % s' % (pass_ticket, int (time. time () params = {'baserequest ': BaseRequest, 'membercount': len (MemberList), 'memberlist': MemberList, 'topic ':'',} request = urllib2.Request (url = url, data = json. dumps (params) request. add_header ('contenttype', 'application/json; charset = UTF-8 ') response = urllib2.urlopen (request) data = response. read () # print data dic = json. loads (data) ChatRoomNa Me = dic ['chatroomname'] MemberList = dic ['memberlist'] DeletedList = [] for Member in MemberList: if Member ['memberstatus'] = 4: # DeletedList is deleted by the other party. append (Member ['username']) ErrMsg = dic ['baseresponse'] ['errmsg '] if len (ErrMsg)> 0: print ErrMsg return (ChatRoomName, DeletedList) def deleteMember (ChatRoomName, UserNames): url = base_uri + '/webwxupdatechatroom? Fun = delmember & pass_ticket = % s' % (pass_ticket) params = {'baserequest ': BaseRequest, 'chatroomname': ChatRoomName, 'delmemberlist ':','. join (UserNames),} request = urllib2.Request (url = url, data = json. dumps (params) request. add_header ('contenttype', 'application/json; charset = UTF-8 ') response = urllib2.urlopen (request) data = response. read () # print data dic = json. loads (data) ErrMsg = dic ['baseresp Onse '] ['errmsg'] if len (ErrMsg)> 0: print ErrMsg Ret = dic ['baseresponse'] ['ret '] if Ret! = 0: return False return Truedef addMember (ChatRoomName, UserNames): url = base_uri + '/webwxupdatechatroom? Fun = addmember & pass_ticket = % s' % (pass_ticket) params = {'baserequest ': BaseRequest, 'chatroomname': ChatRoomName, 'addmemberlist ':','. join (UserNames),} request = urllib2.Request (url = url, data = json. dumps (params) request. add_header ('contenttype', 'application/json; charset = UTF-8 ') response = urllib2.urlopen (request) data = response. read () # print data dic = json. loads (data) MemberList = dic ['memb Erlist'] DeletedList = [] for Member in MemberList: if Member ['memberstatus'] = 4: # DeletedList is deleted by the other party. append (Member ['username']) ErrMsg = dic ['baseresponse'] ['errmsg '] if len (ErrMsg)> 0: print ErrMsg return DeletedListdef main (): opener = urllib2.build _ opener (urllib2.HTTPCookieProcessor (cookielib. cookieJar () urllib2.install _ opener (opener) if getUUID () = False: print 'failed to get uuid 'Return showQR Image () time. sleep (1) while waitForLogin ()! = '000000': pass OS. remove (QRImagePath) if login () = False: print 'logon failed' return if webwxinit () = False: print 'initialization failed' return MemberList = webwxgetcontact () memberCount = len (MemberList) print 'contacts % s friends '% MemberCount ChatRoomName = ''result = [] for I in xrange (0, int (math. ceil (MemberCount/float (MAX_GROUP_NUM): UserNames = [] NickNames = [] DeletedList = ''for j in xrange (0, MAX_GROUP_NUM ): If I * MAX_GROUP_NUM + j> = MemberCount: break Member = MemberList [I * MAX_GROUP_NUM + j] UserNames. append (Member ['username']) NickNames. append (Member ['nickname']. encode ('utf-8') print 'group % s... '% (I + 1) print ','. join (NickNames) print 'enter key to continue... 'raw_input () # create a group/Add a member if ChatRoomName = '': (ChatRoomName, DeletedList) = createChatroom (UserNames) else: DeletedList = addMember (ChatRoomName, Use RNames) DeletedCount = len (DeletedList) if DeletedCount> 0: result + = DeletedList print '% s deleted friends' % DeletedCount # raw_input () # Delete member deleteMember (ChatRoomName, userNames) # todo Delete Group resultNames = [] for Member in MemberList: if Member ['username'] in result: nickName = Member ['nickname'] if Member ['remarkname']! = '': NickName + = '(% s)' % Member ['remarkname'] resultNames. append (NickName. encode ('utf-8') print '---------- deleted friend list ---------- 'print' \ n '. join (resultNames) print '-----------------------------------' # fixed the encoding problem in windows. class UnicodeStreamFilter: def _ init _ (self, target): self.tar get = target self. encoding = 'utf-8' self. errors = 'replace 'self. encode_to = self.tar get. encoding def write (self, s): if type (s) = str: s = s. decode ('utf-8') s = s. encode (self. encode_to, self. errors ). decode (self. encode_to) self.tar get. write (s) if sys. stdout. encoding = 'cp936': sys. stdout = UnicodeStreamFilter (sys. stdout) if _ name _ = '_ main _': print 'the query result of this program may cause some psychological discomfort. Please be careful when using it... 'print 'enter key to continue... 'raw_input () main () print' enter key to end 'raw_input ()
The above is all the content of this article. I hope it will be helpful for your learning and support for helping customers.