def get_contract(self, update=False): if 1 < len(self.memberList) and not update: return self.memberList url = '%s/webwxgetcontact?r=%s&seq=0&skey=%s' % ( self.loginInfo['url'], int(time.time()), self.loginInfo['skey']) headers = {'ContentType': 'application/json; charset=UTF-8'} r = self.s.get(url, headers=headers) tempList = json.loads(r.content.decode('utf-8', 'replace'))['MemberList'] del self.chatroomList[:] del self.memberList[:] self.memberList.append(tools.emoji_dealer(self.loginInfo['User'])) for m in tempList: if m['Sex'] != 0: self.memberList.append(tools.emoji_dealer(m)) elif not (any([str(n) in m['UserName'] for n in range(10)]) and any([ chr(n) in m['UserName'] for n in (range(ord('a'), ord('z') + 1) + range(ord('A'), ord('Z') + 1)) ])): continue # userName have number and str elif '@@' in m['UserName']: self.chatroomList.append(tools.emoji_dealer(m)) elif m['VerifyFlag'] & 8 == 0 and '@' in m['UserName']: self.memberList.append(tools.emoji_dealer(m)) return self.memberList
def get_group_member_prefer_name(name): if name is None: return None if 'remark_name' in name: return tools.emoji_dealer(name['remark_name']) if 'display_name' in name: return tools.emoji_dealer(name['display_name']) if 'nickname' in name: return tools.emoji_dealer(name['nickname']) return None
def get_contract(self, update = False): if 1 < len(self.memberList) and not update: return self.memberList url = '%s/webwxgetcontact?r=%s&seq=0&skey=%s' % (self.loginInfo['url'], int(time.time()), self.loginInfo['skey']) headers = { 'ContentType': 'application/json; charset=UTF-8' } r = self.s.get(url, headers = headers) memberList = json.loads(r.content.decode('utf-8', 'replace'))['MemberList'] chatroomList = memberList[:] while 1: i = 0 for m in chatroomList: if ('@@' in m['UserName'] and any([str(n) in m['UserName'] for n in range(10)]) and any([chr(n) in m['UserName'] for n in (range(ord('a'), ord('z') + 1) + range(ord('A'), ord('Z') + 1))])): continue chatroomList.remove(m);i+=1 for m in memberList: if m['Sex'] != 0 or (m['VerifyFlag'] & 8 == 0 and '@' in m['UserName'] and not '@@' in m['UserName'] and any([str(n) in m['UserName'] for n in range(10)]) and any([chr(n) in m['UserName'] for n in ( range(ord('a'), ord('z') + 1) + range(ord('A'), ord('Z') + 1))])): continue memberList.remove(m);i+=1 if i == 0: break # deal with emoji self.memberList = tools.emoji_dealer(memberList) self.chatroomList = chatroomList return memberList
def get_contract(self, update = False): if 1 < len(self.memberList) and not update: return self.memberList url = '%s/webwxgetcontact?r=%s&seq=0&skey=%s' % (self.loginInfo['url'], int(time.time()), self.loginInfo['skey']) headers = { 'ContentType': 'application/json; charset=UTF-8' } r = self.s.get(url, headers = headers) # init log logs(r.content.decode('utf-8', 'replace'), '/contract.log') memberList = json.loads(r.content.decode('utf-8', 'replace'))['MemberList'] chatroomList = memberList[:] while 1: i = 0 for m in chatroomList: if ('@@' in m['UserName'] and any([str(n) in m['UserName'] for n in range(10)]) and any([chr(n) in m['UserName'] for n in (range(ord('a'), ord('z') + 1) + range(ord('A'), ord('Z') + 1))])): continue chatroomList.remove(m);i+=1 for m in memberList: if m['Sex'] != 0 or (m['VerifyFlag'] & 8 == 0 and '@' in m['UserName'] and not '@@' in m['UserName'] and any([str(n) in m['UserName'] for n in range(10)]) and any([chr(n) in m['UserName'] for n in ( range(ord('a'), ord('z') + 1) + range(ord('A'), ord('Z') + 1))])): continue memberList.remove(m);i+=1 if i == 0: break # deal with emoji self.memberList = tools.emoji_dealer(memberList) self.chatroomList = chatroomList return memberList
def get_contract(self): url = '%s/webwxgetcontact?r=%s&seq=0&skey=%s' % (self.loginInfo['url'], int(time.time()), self.loginInfo['skey']) headers = { 'ContentType': 'application/json; charset=UTF-8' } r = self.s.get(url, headers = headers) memberList = json.loads(r.content.decode('utf-8', 'replace'))['MemberList'] i = 1 # ISSUE 1.3 while i != 0: i = 0 for m in memberList: if m['Sex'] == 0 or m['Sex'] == '0': memberList.remove(m);i+=1 # deal with emoji memberList = tools.emoji_dealer(memberList) # PYQuanPin & RemarkPYQuanPin is used as identifier voidUserList = [] for m in memberList: if m['PYQuanPin'] == '': if m['UserName'] == self.storageClass.userName: m['PYQuanPin'] = m['NickName'] elif m['RemarkPYQuanPin'] == '': voidUserList.append(m) else: m['PYQuanPin'] = m['RemarkPYQuanPin'] insertResult = self.storageClass.update_user(m['PYQuanPin'], NickName = m['RemarkName'] or m['NickName'], UserName = m['UserName']) if insertResult != True: out.print_line(str(insertResult) + ' need a new RemarkName') if DEBUG: with open('MemberList.txt', 'w') as f: f.write(str(memberList))
def get_contract(self, update = False): if 1 < len(self.memberList) and not update: return self.memberList url = '%s/webwxgetcontact?r=%s&seq=0&skey=%s' % (self.loginInfo['url'], int(time.time()), self.loginInfo['skey']) headers = { 'ContentType': 'application/json; charset=UTF-8' } r = self.s.get(url, headers = headers) tempList = json.loads(r.content.decode('utf-8', 'replace'))['MemberList'] del self.chatroomList[:] del self.memberList[:] self.memberList.append(tools.emoji_dealer(self.loginInfo['User'])) for m in tempList: if m['Sex'] != 0: self.memberList.append(tools.emoji_dealer(m)) elif not (any([str(n) in m['UserName'] for n in range(10)]) and any([chr(n) in m['UserName'] for n in ( range(ord('a'), ord('z') + 1) + range(ord('A'), ord('Z') + 1))])): continue # userName have number and str elif '@@' in m['UserName']: self.chatroomList.append(tools.emoji_dealer(m)) elif m['VerifyFlag'] & 8 == 0 and '@' in m['UserName']: self.memberList.append(tools.emoji_dealer(m)) return self.memberList
def web_init(self): url = '%s/webwxinit?r=%s' % (self.loginInfo['url'], int(time.time())) payloads = { 'BaseRequest': self.loginInfo['BaseRequest'] } headers = { 'ContentType': 'application/json; charset=UTF-8' } r = self.s.post(url, data = json.dumps(payloads), headers = headers) dic = json.loads(r.content.decode('utf-8', 'replace')) # deal with emoji dic['User'] = tools.emoji_dealer([dic['User']])[0] self.storageClass.userName = dic['User']['UserName'] self.storageClass.nickName = dic['User']['NickName'] self.storageClass.memberList.append(dic['User']) self.loginInfo['SyncKey'] = dic['SyncKey'] self.loginInfo['synckey'] = '|'.join(['%s_%s' % (item['Key'], item['Val']) for item in dic['SyncKey']['List']]) return dic['User']
def get_contract(self): url = '%s/webwxgetcontact?r=%s&seq=0&skey=%s' % (self.loginInfo['url'], int(time.time()), self.loginInfo['skey']) headers = { 'ContentType': 'application/json; charset=UTF-8' } r = self.s.get(url, headers = headers) memberList = json.loads(r.content.decode('utf-8', 'replace'))['MemberList'] while 1: i = 0 for m in memberList: if m['Sex'] != 0 or (m['VerifyFlag'] & 8 == 0 and '@' in m['UserName'] and not '@@' in m['UserName'] and any([str(n) in m['UserName'] for n in range(10)]) and any([chr(n) in m['UserName'] for n in ( range(ord('a'), ord('z') + 1) + range(ord('A'), ord('Z') + 1))])): continue memberList.remove(m);i+=1 if i == 0: break # deal with emoji memberList = tools.emoji_dealer(memberList) # RemarkPYQuanPin & PYQuanPin is used as identifier voidUserList = [] validUserList = [] unknownCount = 0 for m in memberList: if m['RemarkPYQuanPin'] != '': m['PYQuanPin'] = m['RemarkPYQuanPin'] if m['PYQuanPin'] == '' and m['Alias'] != '': m['PYQuanPin'] == m['Alias'] if m['UserName'] == self.storageClass.userName: m['PYQuanPin'] = m['NickName'] elif m['PYQuanPin'] == '': voidUserList.append(m) m['PYQuanPin'] = '@Unknown%s'%unknownCount unknownCount += 1 while 1: insertResult = self.storageClass.update_user(m['PYQuanPin'], NickName = m['RemarkName'] or m['NickName'], UserName = m['UserName']) if insertResult and not m['PYQuanPin'] in validUserList: validUserList.append(m['PYQuanPin']);break else: voidUserList.append(m) m['PYQuanPin'] = '@Unknown%s'%unknownCount unknownCount += 1 if DEBUG: with open('MemberList.txt', 'w') as f: f.write(str(memberList)) if len(voidUserList) == 1: m = voidUserList[0] self.storageClass.update_user('', NickName = m['RemarkName'] or m['NickName'], UserName = m['UserName']) return [] else: return voidUserList